【实验目的】
学习基于上下文ACL的配置方法,基于实验理解其工作原理。
【知识点】
基于上下文ACL的作用,基于上下文ACL的工作原理
【实验场景】
三台路由器串口相连,连接地址如图所示。在R2上做CBAC访问控制,只允许R1 Telnet R3及ping R3,但不允许R3访问R1。
【实验原理】
ACL只能检测到网络层和传输层的数据信息,而对于封装在IP包中的恶意信息它是无能为力的。CBAC指定了哪些协议及接口、接口方向(流入和流出)需要被检查,同指定了检查的起始。CBAC只对指定的协议进行检查。
根据题目要求,对于R1去往R3的流量不做限制,但是限制R3去往R1的流量。做ACL运训R1去往R3的流量,但同时也要禁止除R3对R1回包之外流量,才能实现上述目的。又因为要允许R1 Telnet R3,此前做的ACL策略只是允许了ip的流量,所以使用CBAC对过来的TCP(即Telnet)做检查并允许,才能到达最终目的。
【实验设备】
Cisco Packet Tracer软件中:三台2811的路由器
【实验拓扑】
【实验思路】
-
配置路由器接口IP地址
-
配置静态路由,使得三台路由器可以互访
-
在router 2 上配置Telnet,使得router 1可以远程访问router 2
-
验证以上配置是否作用
-
配置ACL并加载到接口上,验证是否可实现目的要求
-
配置CBAC并加载到接口上,验证是否可实现目的要求
【实验步骤】
- 接口连通性配置
对Router 1配置:
Router(config)#hostname R1
R1(config)#int s0/3/0
R1(config-if)#ip add 10.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config)#ip route 20.1.1.0 255.255.255.0 10.1.1.2
//启用静态路由使R3可达
对Router 2配置:
由于R2全部是相连接口不需配置路由
Router(config)#hostname R2
R2(config)#int s0/3/0
R2(config-if)#ip address 10.1.1.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#int s0/3/1
R2(config-if)#ip add 20.1.1.1 255.255.255.0
R2(config-if)#no shutdown
对Router 3配置:
Router(config)#hostname R3
R3(config)#int s0/3/1
R3(config-if)#ip add 20.1.1.2 255.255.255.0
R3(config-if)#no shutdown
R3(config)#ip route 10.1.1.0 255.255.255.0 20.1.1.1
//启用静态路由使R1可达
- 测试连通性
R1#ping 20.1.1.2 //R3的接口地址
!!!
R3#ping 10.1.1.1 //R1的接口地址
!!!
- 配置R3为telnet SERVER,并设置特权密码
R3(config)#username cisco password cisco //设置用户名及密码
R3(config)#enable secret cisco //特权密码,否则不允许远程连接
R3(config)#line vty 0 4
R3(config-line)#login local //远程登录使用本地数据库
- 测试telnet配置
R1#telnet 20.1.1.2 telnetR3,已经连接上了
Trying 20.1.1.2 ... Open
User Access Verification
Username: cisco //输入设置的用户名及密码
Password:
R3>en
Password:
R3#
- 设置CBAC及访问控制
R2(config)#access-list 100 permit ip 10.1.1.0 0.0.0.255 any
//允许内网所有流量
R2(config)#access-list 101 permit icmp any 10.1.1.0 0.0.0.255 echo-reply
//允许ping的回流
R2(config)#access-list 101 deny ip any any //拒绝其它所有流量
R2(config)#ip inspect name cbac_telnet tcp
//定义CBAC开启TCP和UDP,允许ip不代表允许TCP和UDP
R2(config)#ip inspect name cbac_telnet udp
R2(config)#int s0/3/0
R2(config-if)#ip access-group 100 in //内网加载访问列表,但没加CBAC
R2(config)#int s0/3/1
R2(config-if)#ip access-group 101 in //外网加载列表
- 测试没有加载CBAC的效果,并查看R2的访问列表
R1#telnet 20.1.1.2 //没有成功的进行远程连接
Trying 20.1.1.2 ...
% Connection timed out; remote host not responding
R2#show ip access-lists //查看R2的访问列表
Extended IP access list 100
permit ip 10.1.1.0 0.0.0.255 any (30 matches)
Extended IP access list 101
permit icmp any 10.1.1.0 0.0.0.255 echo-reply (5 matches)
deny ip any any //没有加载任何条目
- 将CBAC加载到接口
R2(config)#int s0/3/0
R2(config-if)#ip inspect cbac_telnet in //加载CBAC
- 在R1测试telnet连接并在R2上查看访问列表条目
R1#telnet 20.1.1.2
Trying 20.1.1.2 ... Open //连接成功
User Access Verification
Username: cisco
Password:
R3>en
Password:
R3#
R2#show ip access-lists //查看访问列表条目
Extended IP access list 100
permit ip 10.1.1.0 0.0.0.255 any (65 matches)
Extended IP access list 101
permit tcp host 20.1.1.2 eq telnet host 10.1.1.1 eq 11005 (27 matches)
//发现动态的加载条目,CBAC实验成功
permit icmp any 10.1.1.0 0.0.0.255 echo-reply (5 matches)
deny ip any any
【实验思考】
- 根据实验,理解CBAC的工作原理。