很多人,尤其是初学者对于ACL中的established参数不能很好的理解。说实话,在我初学的时候也是一样。这里对它进行一下简单浅显的解释,希望对广大朋友有用处。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

  这里先列出本文所用的拓扑以及示例ACL:
 

 其中PCServer地址配置见图示,

    路由器的配置(基础配置略):

    Router(config)#access-list 100 permit tcp any 192.168.1.0 0.0.0.255 established

Router(config)#int fa0/0

Router(config-if)#ip access-group 100 out

这个ACL条目的作用就是允许192.168.1.0/24网络里的主机或者设备(拓扑中为PC0)对外部的网络建立TCP连接,但是不允许外部网络的主机或者设备对192.168.1.0/24网络内部建立TCP连接。工作机理是:TCP连接的建立请求由1.0网络发出,在路由器的fa0/0接口可以不做检查就被路由;但是返回的TCP应答数据报在到达路由器的FA0/0接口是就要做ACL检查了,并且满足源地址any,目的地址192.168.1.0,而且也是established数据报,所以就回去了。

但是外部网络中的主机发送TCP请求数据报到达fa0/0接口时,源地址和目的地址都符合,但就是不符合最后的参数,不是应答数据报,而是请求数据报。

对于建立TCP连接的内容详情请浏览:

http://www.51cto.com/art/200604/25146.htm

下面我想说明的是,如果上文最后一条命令最后一个参数out改成in,情况会是完全不同的。

分析如下:

PC0TCP数据报不能通过路由器达到外部网络,因为在每个ACL的最后都有一个默认的deny any any的语句;并且这里是TCP请求建立的数据报,不符合established的条件,所以数据报根本不回通过路由器。

写得有些乱,学理的没有什么文采。将就着看吧兄弟们。