⑸destination host unreachable:通知会话目标不可达。
上述报文都需要双向通讯。回到我们前面的例子,企业总部的网管员可能希望能ping和tracerouter分支机构的网络设备,而反之则不行。我们可以在路由器的配置中增加下列访问表项:
interface serial 0
ip access-group 100 in
ip access-group 101 out
access-list 100 permit icmp any 192.168.18.0 0.0.0.255 echo-reply
access-list 100 permit icmp any 192.168.18.0 0.0.0.255 packet-too-big
access-list 100 permit icmp any 192.168.18.0 0.0.0.255 ttl-exceeded
access-list 101 permit icmp 192.168.18.0 0.0.0.255 any echo-reply 应为request
access-list 101 permit icmp 192.168.18.0 0.0.0.255 any packet-too-big
access-list 101 permit ip 192.168.18.0 0.0.0.255 any
由于访问列表在最末隐含"deny all"表项,所以必须在访问列表101的最后一项要加上"access-list 101 permit ip 192.168.18.0 0.0.0.255 any",否则总部的计算机就无法访问分支机构的计算机。
4. FTP协议的过滤
之所以将FTP单独拿出来讨论,是因为在建立访问列表时我们发现FTP是一个非常特殊而且复杂的多端口TCP*作。虽然FTP使用的是TCP端口21(ftp-control),但它还使用了TCP端口20(ftp-data)。端口21用来传输FTP命令,端口20用来传输数据。令人头痛的是,客户机并不是在通过端口21建立FTP连接后简单地再建立一个到FTP服务器端口20的连接,相反是有FTP服务器从端口20建立与客户机的连接,它选择的客户机端口是大于1023的随机端口,客户机然后将端口信息通过已建立的数据通道发往FTP服务器。换句话说,FTP服务器会发起一个到客户机的返回连接。
回到前面的例子,如果位于企业总部的客户机希望访问分支机构的FTP服务器,那么FTP服务器将会发出一个新的连接至FTP的客户机,虽然报文的目的端口号大于1023,但是它的ACK或RST位不会被设置,那么将会受到"access-list 100 permit tcp any 192.168.18.0 0.0.0.255 gt 1023 established"的阻拦,因此,为保证FTP的正常工作,我们还需在访问列表中增加一项:
access-list 100 permit tcp any eq 20 192.168.18.0 0.0.0.255 gt 1023