拓扑图
实验配置详解 (一) 错误的配置(返回数据也被deny掉了)
access-list 101 deny icmp 192.168.2.0 0.0.0.255 10.0.0.0 0.0.0.255 echo
access-list 101 permit tcp 192.168.2.0 0.0.0.255 host 10.0.0.2 eq www
access-list 101 deny ip 192.168.2.0 0.0.0.255 host 10.0.0.3
access-list 101 permit ip any any
一开始配置的ACL入上述,结果出现:
市场部PC7-----(ping)-----àPC6 不通 【合题目要求】
PC6 -----(ping)-----à市场部PC7 不通 【不合题目要求】
应该是能ping通的,通过使用PT包分析,发现ACL配置的问题:
access-list 101 deny ip 192.168.2.0 0.0.0.255 host 10.0.0.3
这条ACL,把从市场部PC7返回的ICMP包给deny掉了:
1. The receiving port has an inbound traffic access-list with an ID of 101. The router checks the packet against the access-list.
2. The packet matches the criteria of the following statement: deny ip 192.168.2.0 0.0.0.255 host 10.0.0.3. The packet is denied and dropped.
正确的解决方式是使用:自反ACL
Cisco Packet Tracer模拟器上没有自反ACL命令,正确的命令可以在真机上验证:
使用自反ACL的例子:
一个大楼局域网,核心是三层交换机,楼层为二层交换机,划分几个vlan等等,客户提出一个要求,就是给他们单位领导层单独划分一个vlan A,并且要求做到领导所在的vlan A能够访问其他各个部门的vlan B、C等等,而部门所在的vlan B、C则不能访问领导所在的vlan A。这个属于一个单向访问的案例,今天在公司没事搭了个环境测试了一下,基本上已经解决问题,整理了一下,给各位DRL兄弟做个参考。
整个环境如图所示,因搭环境没有三层交换机(库存新机不敢用,嘿嘿),所以找了台路由器和交换机做了个接口来代替三层交换机。
整个配置其他均为常规配置,如划分vlan,设立网关地址等等。这里不再详细描述,本文仅仅描述如何通过ACL方便而且简单的实现单向访问。
关键点:单向访问用到的是Reflexive ACL的知识点以及reflect和uate命令的应用。
我们首先建立两组Reflexive ACL,一组in,一组out。
ip access-list extended out_traffic
permit icmp any any reflect icmp_traffic
permit ip any any reflect ip_traffic
ip access-list extended in_traffic
uate icmp_traffic
uate ip_traffic
deny ip any any log
请大家注意:Reflexive ACL必须是extended字符ACL时才有效。大家请看out的ACL配置,关键是在每个permit后面加上reflect参数,reflect后面的icmp…..为自定义字符。
大家再看in的ACL配置,关键在这里uate命令后面所跟 的字符必须和out的reflect后面的字符相同。
作用是什么呢?当被允许访问其他vlan的vlan A地址访问其他的vlan B地址时,首先通过out的ACL,到达vlan B的计算机,我们知道一个访问的真正建立还必须有返回的数据包,当从Vlan B的计算机的返回数据包经过in 的ACL进行匹配时,因为这个数据包是从A到B的返回数据包,in的ACL的uate字符匹配out的reflect字符,所以允许通过,其他的从B到A的数据包则一律deny。从而实现了A能够访问B,B无法访问A。
这是ACL的具体写法,关键是写out,in只要匹配即可。本文的out我写了两个基本的作为测试,详细的可以根据不同需求写的更加具体,大家根据具体案例具体分析。
最后一个关键点是应用到vlan接口上,请务必弄清楚in和out的关系
比如:
Interface vlan 1
Ip address 192.168.1.254 255.255.255.0
ip access-group in_traffic in
ip access-group out_traffic out
!
Interface vlan 2
Ip address 192.168.2.254 255.255.255.0
这个例子如果结合前面的ACL配置就是允许vlan2访问vlan1,而禁止vlan1访问vlan2。不知道大家是否搞清楚了这个in和out的关系。
重要备注:in和out的关系不仅仅和应用到哪个接口,如何应用有关系,还和ACL的写法有关系,比如ACL的通常写法有两种,一种是permit具体的条件,然后deny剩余的其他一切条件。另外一种是deny具体的某些条件,然后permit剩余的其 他一切条件。
(二) 不使用自反ACL的配置(利用established)
要求实现的功能(只考虑www和icmp两种服务):
允许市场部(192.168.2.0)访问WebServer 80(10.0.0.2)端口
不允许市场部PING通WebServer网段
不允许市场部访问PC6
允许PC6访问市场部的Server0
没有提到的功能,默认都是deny。
在S2/0的入方向配置:
access-list 101 permit tcp any 10.0.0.0 0.0.0.255 established
外网能回应内网所有主机的TCP连接(已经建立连接的可以连接),
【允许PC6访问市场部的Server0,允许Server0的返回流量通过S2/0】
access-list 101 permit tcp 192.168.2.0 0.0.0.255 host 10.0.0.2 eq www
【允许市场部(192.168.2.0)访问WebServer 80(10.0.0.2)端口 】
access-list 101 permit icmp any any
【允许内网10.0.0.0 ping外网任何机器,允许任何外网ping内网任何机器】
access-group 101 in 在入方向配置。
在S2/0的出方向配置:
access-list 102 deny icmp any 192.168.2.0 0.0.0.255 echo-reply
阻止内网10.0.0.0做出对192.168.2.0网段的ping的回应——等同于只让192.168.2.0网段无法ping通
【不允许市场部PING通WebServer网段】
access-list 102 permit ip any any
ip access-group 101 out 在出方向配置。