经常使用TCP/IP网络的人,一定会用到ping和traceroute(Windows 系统为tracert)命令,这两条命令是基于ICMP协议的。ICMP与其他协议一起为网络发布错误报告,并提供使用其他协议时所发生的相关信息。
⑵echo-reply:为ping使用的环路测试回应;
⑶packet-too-big:某些程序用来侦测目标地址路径上的MTU;
⑷time to live (TTL) ttl-exceeded :tracerouter 测试网络报文生存周期;
⑸destination host unreachable:通知会话目标不可达。
看如下拓扑图:
如果只允许r0 可以ping r1,不允许r1来ping ro,我们可以这样来配置。
r0(config)#access-list 101 permit icmp host 12.1.1.2 host 12.1.1.1 echo-reply
既允许12.1.1.2到12.1.1.1 返回的包,意思就是如果是12.1.1.2返回12.1.1.1的包就允许,而12.1.1.2主动发起的ping包就不允许。
r0(config)#interface e0/0
r0(config-if)#ip access-group 101 in --进入接口并启用ACL 101
关于过滤telnet,有两种方法。根据telnet端口连接的原理,我们发现建立telnet连接时本机都是一个大于1024的端口与对方的23端口对应,我们可以这样写
r0(config)#access-list 100 permit tcp host 12.1.1.2 eq 23 host 12.1.1.1 gt 1024
既 只允许12.1.1.2的23端口访问12.1.1.1大于1024的端口,这样灵活应用TCP的端口号,实现了R0能TELNET进R1,而R1却不能TELNET进R0。
r0(config)#interface e0/0
r0(config-if)#ip access-group 100 in
这种情况下ping也被禁止了。
或者也可以这样
•r1(config)#access-list 12 permit 12.1.1.1 0 0.0.0.0
•r1(config)#line vty 0 4
• r1(config-line)#access-class 12 in
在r0上拒绝12.1.1.2,这种情况下ping没有问题。