1.定义
①访问列表中定义的规则主要有以下:源地址、目标地址、上层协议、时间区域。
②扩展IP访问列表(编号100-199、2000、2699)使用以上四种组合来进行转发或阻断分组;可以根据数据包的源IP、目的IP、源端口、目的端口、协议来定义规则,进行数据包的过滤。
2.实验场景:公司部门的电脑(PC 0)不能对服务器(server 0)使用 ping 命令,只能通过 web 服务对公司服务器进行访问
3.实验设备:Server-PT 1台、Router-PT 3台、PC 1台、Switch-2960 2台、交叉线、DCE串口线、直连线
4.配置 PC 0、Server 0 的IP地址
PC 0 的IP地址:192.168.1.2
MAC地址:255.255.255.0
Server 0 的IP地址:192.168.4.2
MAC地址:255.255.255.0
5.配置路由器 Router 0 、Router 1、Router 2
①配置路由器 Router 0
Router>en
Router#conf t
Router(config)#int f0/0 进入f0/0端口
Router(config-if)#ip add 192.168.2.1 255.255.255.0 配置 f0/0 端口的IP地址
Router(config-if)#no sh 开启端口
Router(config-if)#int f1/0
Router(config-if)#ip add 192.168.1.1 255.255.255.0
Router(config-if)#no sh
Router(config-if)#exit
Router(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.2 配置静态路由
Router(config)#exit
②配置路由器 Router 1
Router>en
Router#conf t
Router(config)#int f0/0
Router(config-if)#ip add 192.168.2.2 255.255.255.0
Router(config-if)#no sh
Router(config-if)#int s2/0 进入 s2/0 端口
Router(config-if)#ip add 192.168.3.1 255.255.255.0 配置 s2/0 端口的IP地址
Router(config-if)#no sh 开启端口
Router(config-if)#clock rate 64000 设置同步时间
Router(config-if)#exit
Router(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1 配置静态路由
Router(config)#ip route 192.168.4.0 255.255.255.0 192.168.3.2 配置静态路由
Router(config)#
③配置路由器 Router 2
Router>en
Router#conf t
Router(config)#int f0/0
Router(config-if)#ip add 192.168.4.1 255.255.255.0
Router(config-if)#no sh
Router(config-if)#int s2/0 进入 s2/0 端口
Router(config-if)#ip add 192.168.3.2 255.255.255.0 配置 s2/0 端口的IP地址
Router(config-if)#no sh 开启端口
Router(config-if)#exit
Router(config)#ip route 0.0.0.0 0.0.0.0 192.168.3.1 配置静态路由
Router(config)#
6.验证:用 PC 0 ping Server 0 可以正常通信,用web浏览器也可以正常访问服务器
7.在Router 1 上配置扩展访问控制列表
Router(config)#access-list access-list-number {permit|deny} protocol source source-wildcard [operatorport] Destination destination-wildcard [operator port] [established] [log]
建立扩展访问控制列表:协议 源地址 反掩码 相应端口 目标地址 目标地址反掩码
Router(config-if)#ip access-group access-list-number {in|out} 标识是出方向还是入方向
Router#conf t
Router(config)#access-list 100 permit tcp host 192.168.1.2 host 192.168.4.2 eq www(80) 允许通过 http (80端口)访问
Router(config)#access-list 100 deny icmp host 192.168.1.2 host 192.168.4.2 echo 禁止 ping 命令(基于ICMP协议的命令)
Router(config)#int s2/0 接口应用(出方向)
Router(config-if)#ip access-group 100 out 访问控制列表的编号为:100 出方向 (in:入方向)
Router(config-if)#end
Router#show ip route
8.验证:此时再次用 PC 0 ping Server 0 不通,通过 web 浏览器可以正常访问
1.访问控制列表的分类
①标准:检查源地址(通常允许、拒绝的是完整的协议)
②扩展:检查源地址和目的地址(通常允许、拒绝的是某个特定的协议)
2.进方向和出方向
③出方向:先查路由表,如果有去往目的网段的路由,就转到出接口,如果出接口调用了访问控制列表ACL,那么就看是否和ACL的访问控制列表匹配,是允许permit还是拒绝deny,如果是允许,就根据路由表转发数据,如果是拒绝就直接将数据包丢弃了。
④入方向:当入接口收到数据包的时候,先跟入接口的ACL访问控制列表进行匹配,如果允许则查看路由表从而进行转发,如果拒绝则直接丢弃。
⑤在deny中,有一条隐藏的deny所有报文的语句,当接收到的数据包和前面所有的访问控制列表ACL都不匹配的时候,则会触发这条隐藏的命令。
3.如何标识ACL
⑥标准编号IPV4列表(1-99)可测试源地址的所有IP数据包的条件。扩展范围是(1300-1999)
⑦扩展编号IPV4列表(100-199)可测试源地址和目的地址、特定TCP/IP协议和目的端口条件。扩展范围(2000-2699)
⑧命名ACL用字母数字字符串(名称)标识IP标准ACL和扩展ACL。
⑩标准访问控制列表建议配置在接近于目标的位置,因为如果配置在接近于源目标的位置,那么发出的报文就会立刻被deny掉了,而且数据包不仅发送不到目标位置,甚至连接近于源目标位置以为的其它路由器也发送不到,都不可以访问了。
接口应用原则:标准ACL的应用靠近目标地址,扩展ACL的应用靠近源地址。
4.命令语法说明
Router(config)#access-listaccess-list-number {permit|deny} sourse [mark] 允许|拒绝 源地址 反掩码
⑪deny语句:拒绝/禁止其他网段的主机数据报文通过
隐藏的deny所有的命令 Router(config)#access-list 100 deny any
例:Router(config)#access-list 100 deny 192.168.1.0 0.0.0.255
只要是192.168.1.0网段的(1-254)的IP地址发过来的数据包都会被拒绝。
⑫permit语句:允许其他网段的所有主机数据报文通过。
例:Router(config)#access-list 100 permit 0.0.0.0 255.255.255.255
0.0.0.0 255.255.255.255 代表所有网段也可以用 any 来表示。
即:Router(config)#access-list 100 permit any
Router(config-if)#ipaccess-group access-list-number {in|out} 标识是出方向还是入方向
⑬例: Router(config)#access-list 100 deny icmp host 192.168.1.2 host 192.168.4.2 echo
Router(config)#int s2/0
Router(config-if)#ip access-group 100 out
在上面的实验中配置生效后,再去ping 就会告诉你目标的主机不可达。
⑭删除访问控制列表:Router(config)#no access-list 100
它会将之前配置的deny的语句和permitany的语句在访问控制列表100 里面同时删除。
⑮如果是只是deny某一个IP地址的数据报文,可以使用完全匹配的方式
Router(config)#access-list 100 deny 192.168.1.2 0.0.0.0 这样后面的四个零就是完全匹配的意思。
这四个零0.0.0.0 也可以用host 来表示:Router(config)#access-list100 deny host 192.168.1.2
⑯为了能让其他的数据能够被转发,所以必须要加上permit any的命令,以便让其他的报文可以通过。
Router(config)#access-list 100 deny host 192.168.1.2(Router(config)#access-list 100 permit any)
⑰此外在输入访问控制列表的时候是按照输入的顺序来进行排列的,所以如果将permit any或者deny any语句放在具体的permit或者deny语句之前,
例:先配置了Router(config)#access-list 100 permit any
再配置了Router(config)#access-list100 deny host 192.168.1.2
就会发现后面配置的" Router(config)#access-list 100 deny host 192.168.1.2 "完全没有生效,报文依旧可以转发。
所以在配置的时候一定要注意先后的顺序,严谨的放在后面。
5.扩展访问控制列表
⑱Router(config-if)#ip access-group access-list-number {in|out}
不允许 192.168.1.2 去 ping Server 0 服务器
" ping " 命令是基于ICMP协议的命令。且下面的命令是deny去掉了报文和回的报文。
Router(config)#access-list 100 deny icmp host 192.168.1.2 host 192.168.4.2 echo 报文格式
Router(config)#access-list 100 deny icmp host 192.168.1.2 host 192.168.4.2 echo reply 回应报文格式
⑲在 Router 1 的出方向来配置这个ACL:
Router(config)#int s2/0
Router(config-if)#ip access-group 100 out
⑳允许192.168.1.2 通过 www 网页去连接Server 0 服务器 (这里的eq指的是" 等于 ")
Router(config)#access-list 100 permit tcp host 192.168.1.2 host 192.168.4.2 eq www
6.常见的协议端口号
http 80
dhcp server 67 client 68
tftp 69
DNS tcp的53号端口和udp的53号端口,而我们平时上网的时候都是用的UDP的53号端口。
只有在DNS服务器之间同步DNS服务的时候,才会用到基于TCP的53号端口。或者发的报文比较大的时候也才会用到DNS的第53号端口。
NTP 是网络时间协议,使用的是123号端口
Email 一个是SMTP的25号端口,还有一个是POP3的110号端口。
FTP 一个是20号端口,一个是21号端口。
通常情况下被动模式是使用的是21号端口来建立连接的,而传输数据的是随机端口,而如果设置的是主动模式的话,则是用21号端口来建立连接,用20号端口来传输数据。
7.可以使用show access-lists和show ipinterface命令排除ACL配置的常见错误 !