一、访问控制列表(ACL)Access List
1.作用:控制IP流量
2.使用ACL的原因:(1)管理网络中逐步增长的IP数据
(2)当数据通过路由器时进行过滤
3.ACL的应用:(1)允许或拒绝数据包通过Router
(2)允许或拒绝Telnet会话的建立
(3)没有设置ACL时,所有数据包都会在网络上传输
4.分类:
(1)标准ACL:1.检查源地址
2.通常允许(permit)或拒绝(deny)的是完整的协议
ACL编号:1——99 1300——1999
(2)扩展ACL:1.检查源地址和目标地址
2.通常允许或拒绝的是某个特定的协议,如Telnet
ACL编号:100——199 2000——2699
(3)命名ACL
5.ACL的配置指南:(1)ACL的编号指明了使用何种协议的访问列表
(2)ACL的最后有一条隐含声明:deny any—每一条正确的访问列表都至少应该有一条允许语句
(3)每个端口,每个方向,每条协议只能对应一条访问列表
(4)先创建访问列表,然后应用到端口上
(5)访问列表不能过滤路由器自身产生的数据
(6)具有严格限制语句应放在访问列表所有语句的最上面
6.ACL配置原则:编写标准ACL是一般要靠近目的;而编写扩展ACL是一般要靠近源。
7.实验配置:
1.标准ACL的设置
(1)设置访问列表测试语句的参数
Router(config)#access-list access-list-number {permit|deny}{test-conditions}
access-list-numbe:表示ACL的编号
permit:允许 deny:拒绝
test conditions:条件
(2)在端口上应用ACL
Router(config)#int s1/0 !打开某个端口
Router(config-if)#access-list-number{permit|deny{test-conditions}
应用:Protocol access-group
Access-list-number{in|out}
2.扩展ACL的设置
(1)设置访问列表测试语句的参数
Router(config)#access-list access-list-number{permit-deny} protocol
source-address source-widcard [operator port] destination-add
destination-widcard [operator port] [established] [log]
其中:operator可以是lt(小于),gt(大于),eq(等于),neq(不等于)port为协议端口号
established只适用于入站TCP访问表,它允许使用已建立的连接的TCP分组通过(如TCK
位为1)
3.使用访问类条目控制对vty的访问
(1)技术原理:标准和扩展访问表禁止分组通过路由器,但不能禁止当前路由器发送
的分组通过,出站Telnet扩展访问表不能组织当前路由器发起Telnet会话。
配置命令:router(config)#line vty {#/vty-range} !命令line将路由器切换到线路配置模式
router(config-line)#access-class access-list-number {in|out}
!命令access-class将访问表应用于一条或一组终端线路
其中:in:禁止访问表中指定地址以Telnet方式访问路由器
out:禁止路由器的vty端口向访问表指定的地址发起Telnet连接,注意,在这种情
况下,标准访问表中指定的源地址用作目标地址。
(2)配置实例:
【实验名称】允许特定网络中的设备建立到路由器的Telnet会话
【实验步骤】router(config)#access-list 2 permit 192.168.1.0 0.0.0.255
router(config)#line vty 0 4
router(config-line)#access-class 2 in
二、实验:
实验一 【实验名称】利用标准ACL访问控制列表,控制IP流量
【实验设备】三台CISCO 7200路由器,其中一台作为Host(主机)利用
【实验目标】(1)在没有设置ACL时,主机IP可以Ping通R2
(2)当在R1的in(入端口)端口或out(出端口)端口设置ACL
后,让主机IP无法Ping通R2即无法给R2发送IP流量,从而阻止了主机发送的IP流量。在网络中的目的就是阻止某些IP发送来的流量。比如阻止某些恶意IP的攻击。
【实验拓扑】
【实验步骤】(一)给Host,R1,R2各个端口设置IP
1.Host上
Router(config)#no ip routing !关闭路由功能,即把Router设置成主机
Router(config)#hostname host !重命名为host
host(config)#ip default-gateway 199.99.1.1 !设置主机的默认网关
host(config)#int s1/0
host(config-if)#ip add 199.99.1.2 255.255.255.0
host(config-if)#no shut
2.R1
rack01(config)#int s1/0
rack01(config-if)#ip add 199.99.1.1 255.255.255.0
rack01(config-if)#no shut
rack01(config)#int s1/1
rack01(config-if)#ip add 192.168.1.1 255.255.255.0
rack01(config-if)#no shut
3.R2
rack02(config)#int s1/1
rack02(config-if)#ip add 192.168.1.2 255.255.255.0
rack02(config-if)#no shut
注:到这里为止各链路连接成功。
(二)在R1和R2上设置路由功能,在这里设置EIGRP协议.
设置路由目的:让Host、R1、R2之间可以互相Ping通
1.R1
rack01(config)#router eigrp 100
rack01(config-router)#network 199.1.1.0 !宣告网段
rack01(config-router)#network 192.168.1.0
2.R2
rack02(config)#router eigrp 100
rack02(config-router)#network 192.168.1.0
注:到这里为止Host、R1、R2之间可以互相Ping通。
host#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max=96/148/188 ms
(三)在R1上设置ACL
目的:让199.99.1.1 Ping不通192.168.1.2
rack01(config)#access-list 10 deny host 199.99.1.2
!在R1上设置ACL 其中10指ACL的编号 deny:拒绝 host+ip表示一个特定的IP地址
上条命令还等于:rack01(config)#access-list 10 deny 199.99.1.1 0.0.0.0
!0.0.0.0代表一台特定的主机
rack01(config)#access-list 10 permit any
!允许除199.99.1.1外的IP访问,如果不设置此条命令,则表示拒绝所有
rack01(config)#int s1/1 !进入S1/1 端口
rack01(config-if)#ip access-group 10 out !将ACL应用到R1的出端口上
以上两条命令还等于以下两条命令:
rack01(config)#int s1/0
rack01(config-if)#ip access-group 10 in !将ACL应用到R1的入端口上
测试结果:在Host Ping192.168.1.2
host#ping 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
U.U.U 表示线路不通
(四)现在给Host设置第二个IP:199.99.1.3 用此IP是可以Ping通192.168.1.2
host(config)#int s1/0
host(config-if)#ip add 199.99.1.3 255.255.255.0 secondary
!为S1/0端口设置第二个IP地址,其中secondary表示第二个
host(config-if)#no shut
测试结果:用扩展Ping来Ping192.168.1.2
host#ping 扩展Ping
Protocol [ip]:
Target IP address: 192.168.1.2 目标地址
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]: y
Source address or interface: 199.99.1.3 源地址
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data? [no]:
Data pattern [0xABCD]:
Loose, Strict, Record, Timestamp, Verbose[none]:
Sweep range of sizes [n]:
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
Packet sent with a source address of 199.99.1.3
!!!!! 此时表示199.99.1.3可以Ping通192.168.1.2
Success rate is 100 percent (5/5), round-trip min/avg/max=120/150/176 ms
(五)在R1上关闭ACL,此时199.99.1.1依然可以Ping通192.168.1.2
rack01(config)#no access-list 10
!关闭ACL,但是关闭后会将所有设置ACL设置全部擦除,不能NO掉单个ACL设置
实验二、【实验名称】利用扩展ACL访问控制列表,控制IP流量
【实验设备】三台CISCO 7200路由器,其中一台作为Host(主机)利用
【实验目标】设置ACL,Host可以Ping通R2,但不可以Telnet R2。
【实验拓扑】
【实验步骤】(一)给Host,R1,R2各个端口设置IP
1.Host上
Router(config)#no ip routing !关闭路由功能,即把Router设置成主机
Router(config)#hostname host !重命名为host
host(config)#ip default-gateway 199.99.1.1 !设置主机的默认网关
host(config)#int s1/0
host(config-if)#ip add 199.99.1.2 255.255.255.0
host(config-if)#no shut
2.R1
rack01(config)#int s1/0
rack01(config-if)#ip add 199.99.1.1 255.255.255.0
rack01(config-if)#no shut
rack01(config)#int s1/1
rack01(config-if)#ip add 199.99.2.1 255.255.255.0
rack01(config-if)#no shut
3.R2
rack02(config)#int s1/1
rack02(config-if)#ip add 199.99.2.2 255.255.255.0
rack02(config-if)#no shut
注:到这里为止各链路连接成功。
(二)在R1和R2上设置路由功能,在这里设置EIGRP协议.
设置路由目的:让Host、R1、R2之间可以互相Ping通
1.R1
rack01(config)#router eigrp 100
rack01(config-router)#network 199.1.1.0 !宣告网段
rack01(config-router)#network 192.168.1.0
2.R2
rack02(config)#router eigrp 100
rack02(config-router)#network 192.168.1.0
注:到这里为止Host、R1、R2之间可以互相Ping通,而且Host可以Telnet R2
测试结果:
host#ping 199.99.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 199.99.2.1, timeout is 2 seconds:
!!!!! 表示能够Ping通
host#telnet 199.99.2.2
Trying 199.99.2.2 ... Open
User Access Verification
Password:
rack02>en
Password:
rack02# 表示能够Telnet到R2,已进入了R2的配置
(三)在R1上设置扩展ACL,让Host可以Ping通R2但不能Telnet R2
1.在R1上设置扩展ACL
rack01(config)#access-list 110 permit icmp host 199.99.1.2 host 199.99.2.2
!110表示扩展ACL的编号,host 199.99.1.2表示源IP,host 199.99.2.2表示目的IP
rack01(config)#access-list 110 deny tcp host 199.99.1.2 host 199.99.2.2 eq 23
!拒绝来自199.99.1.2的Telnet,其中tcp表示telnet是tcp协议,23是Telnet协议的端口号
rack01(config)#access-list 110 permint ip any any
2.应用到端口上
rack01(config)#int s1/1
rack01(config-if)#ip access-group 110 out
测试结果:
host#telnet 199.99.2.2
Trying 199.99.2.2 ...
% Destination unreachable; gateway or host down 表示目标链路不可达
实验三、【实验名称】利用命名ACL访问控制列表,控制IP流量
【实验设备】三台CISCO 7200路由器,其中一台作为Host(主机)利用
【实验目标】设置ACL,Host可以Telnet R2,但不可以Ping通R2。
【实验拓扑】
【实验步骤】(一)给Host,R1,R2各个端口设置IP
1.Host上
Router(config)#no ip routing !关闭路由功能,即把Router设置成主机
Router(config)#hostname host !重命名为host
host(config)#ip default-gateway 199.99.1.1 !设置主机的默认网关
host(config)#int s1/0
host(config-if)#ip add 199.99.1.2 255.255.255.0
host(config-if)#no shut
2.R1
rack01(config)#int s1/0
rack01(config-if)#ip add 199.99.1.1 255.255.255.0
rack01(config-if)#no shut
rack01(config)#int s1/1
rack01(config-if)#ip add 199.99.2.1 255.255.255.0
rack01(config-if)#no shut
3.R2
rack02(config)#int s1/1
rack02(config-if)#ip add 199.99.2.2 255.255.255.0
rack02(config-if)#no shut
注:到这里为止各链路连接成功。
(二)在R1和R2上设置路由功能,在这里设置EIGRP协议.
设置路由目的:让Host、R1、R2之间可以互相Ping通
1.R1
rack01(config)#router eigrp 100
rack01(config-router)#network 199.1.1.0 !宣告网段
rack01(config-router)#network 192.168.1.0
2.R2
rack02(config)#router eigrp 100
rack02(config-router)#network 192.168.1.0
注:到这里为止Host、R1、R2之间可以互相Ping通,而且Host可以Telnet R2
(三)在R1上设置命名ACL,让Host可以Telnet R2,但Ping不通R2
rack01(config)#ip access-list extended cisco
!设置命名ACL,其中extended表示命名,cisco则是随意起的命令
rack01(config-ext-nacl)#deny icmp host 199.99.1.2 host 199.99.2.2
!拒绝来自主机199.99.1.2发送的icmp数据包,即Ping不通,其中host 199.99.2.2表示目标地址
rack01(config-ext-nacl)#permit tcp host 199.99.1.2 host 199.99.2.2 eq 23
!允许来自主机199.99.1.2的Telnet访问199.99.2.2,其中eq 23表示Telnet的端口号
rack01(config-ext-nacl)#permit ip any any
(四)应用到端口上
rack01(config)#int s1/0
rack01(config-if)#ip access-group cisco in !cisco是命的名称
测试结果:
host#ping 199.99.2.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 199.99.2.2, timeout is 2 seconds:
U.U.U 表示链路不通
Success rate is 0 percent (0/5)
host#telnet 199.99.2.2
Trying 199.99.2.2 ... Open
User Access Verification
Password:
rack02>en
Password:
rack02# 表示已成功Telnet到R2
(四)综合实验
【实验设备】四台CISCO 7200路由器,其中一台作为Host(主机)利用
【实验目标】设置Host S1/0端口的IP地址为192.168.1.1、192.168.1.2、192.168.1.7
(1)不允许host的192.168.1.1、192.168.1.2 Ping R3
(2)不允许host的192.168.1.7 Telnet到R4
(3)不允许R2 Ping R3
【实验拓扑】
【实验步骤】(一)设置Host,R1,R2,R3各端口的IP
1.Host
host(config)#no ip routing !关闭路由功能
host(config)#ip default-gateway 192.168.1.1 !设置默认网关
host(config)#int s1/0
host(config-if)#ip add 192.168.1.7 255.255.255.0
host(config-if)#no shut
host(config-if)#ip add 192.168.1.2 255.255.255.0 secondary
host(config-if)#no shut
host(config-if)#ip add 192.168.1.1 255.255.255.0 secondary
2.R1
rack01(config)#int s1/0
rack01(config-if)#ip add 192.168.1.8 255.255.255.0
rack01(config-if)#no shut
rack01(config)#int s1/1
rack01(config-if)#ip add 192.168.2.1 255.255.255.0
rack01(config-if)#no shut
rack01(config)#int s1/2
rack01(config-if)#ip add 192.168.3.1 255.255.255.0
rack01(config-if)#no shut
3.R2
rack02(config)#int s1/1
rack02(config-if)#ip add 192.168.2.2 255.255.255.0
rack02(config-if)#no shut
4.R3
rack03(config)#int s1/2
rack03(config-if)#ip add 192.168.3.2 255.255.255.0
rack03(config-if)#no shut
(二)给R1,R2,R3设置路由功能
目的:让Host,R1,R2,R3之间可以互相Ping通
1.R1
rack01(config)#router eigrp 100
rack01(config-router)#network 192.168.1.0
rack01(config-router)#network 192.168.2.0
rack01(config-router)#network 192.168.3.0
2.R2
rack02(config-router)#network 192.168.2.0
3.R3
rack03(config-router)#network 192.168.3.0 (三)配置ACL
1.不允许host的192.168.1.1、192.168.1.2 Ping R3
rack01(config)#access-list 110 deny icmp 192.168.1.0 0.0.0.3 host 192.168.2.2
!配置扩展ACL,其中192.168.1.0表示一个网段代表1.1和1.2这两太主机,0.0.0.3是它的反子网掩码,子网掩码为255.255.255.252,它是路由汇总后的掩码,这样只能包括1.1和1.2两个地址
rack01(config)#int s1/0
rack01(config-if)#ip access-group 110 in !将ACL应用到端口S1/1上
测试结果:
host#ping 192.168.3.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.2, timeout is 2 seconds:
U.U.U
host#ping 扩展Ping
Protocol [ip]:
Target IP address: 192.168.3.2 目标地址
Extended commands [n]: y
Source address or interface: 192.168.1.2 源地址
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.2, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.2
U.U.U
2.不允许Host的192.168.1.7 Telnet到R4
rack01(config)# access-list 110 deny tcp host 192.168.1.7 host 192.168.3.2 eq 23
3.不允许R2 Ping R3
rack01(config)#access-list 111 deny icmp host 192.168.2.2 host 192.168.3.2
!需要注意的是ACL的每个编号只能应用一次,即只能用在一个端口上。
rack01(config)#int s1/1
rack01(config-if)#ip access-group 111 in
测试结果:
rack02#ping 192.168.3.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.2, timeout is 2 seconds:
..... 表示不能被Ping通
Success rate is 0 percent (0/5)