浅析ACL与NAT的执行顺序
2013-08-29
(石家庄邮电职业技术学院,河北 石家庄 050021)
1 引言
访问控制列表(Access Control List,ACL)技术是一种简单的静态包过滤防火墙技术,它能够通过数据包的源地址、目的地址、源端口号、目的端口号、协议类型等一系列的匹配条件对网络中的流量进行识别并过滤,从而达到对特定流量进行控制以保护内部网络安全的目的。
网络地址转换(Network Address Translation,NAT)技术最初是作为缓解 IPv4地址空间紧张的一种解决方案引入的,其主要作用就是通过将私有 IP地址转换为合法公有IP地址,使私有网络中的主机可以通过共享少量的公有 IP地址访问Internet。另外,NAT技术在客观上屏蔽了企业内部网络的真实IP地址,一定程度上保护了内部网络不受到外部网络的主动攻击。
由于网络一般既会有安全的需求,又会有节约IP地址的需求,因此ACL与NAT往往会被同时应用在网络中。而ACL与NAT又都要求应用在企业网络与Internet相连的网络边界上,应用位置重叠,这时候就必须要考虑到ACL与NAT的执行顺序关系,从而确定ACL是对内部本地地址进行约束还是对内部全局地址进行约束。
作为当前两大主流的网络设备生产商,H3C公司的网络设备和CISCO公司的网络设备(包括锐捷、神州数码等公司的类CISCO设备)在对ACL与NAT的执行顺序处理上存在较大的差异,这就要求网络管理人员必须要了解不同厂商设备的处理情况,从而确保ACL能够在保护合法流量的同时有效的防范来自Internet的恶意流量攻击。
2 H3C路由器上的执行顺序
在进行执行顺序验证之前,首先需要搭建一个简单的实验网络,如图1所示。
图1 执行顺序实验网络
将内部网络主机PC1和PC2的IP地址分别静态转换到内部全局地址202.207.120.20和202.207.120.30上。具体配置如下:
配置完成后,在PC1或PC2上可以PING通PC3,并且在路由器上使用display nat session命令可以看到内部本地地址192.168.1.2到内部全局地址202.207.120.20、内部本地地址192.168.1.3到内部全局地址202.207.120.30之间的映射关系。
2.1 出站ACL与NAT的执行顺序
在路由器上配置基本ACL并进行应用,具体配置如下:
从上面的配置可以看出,ACL 2000中的规则rule 0的定义是拒绝源IP地址为内部本地地址192.168.1.2的数据流量,该 ACL被应用在了路由器的 Ethernet 0/1接口的outbound方向上。
配置完成后,在PC1上使用PING命令测试到达PC3的连通性,会发现无法连通。在路由器上执行命令 display acl 2000,显示结果如下:
从显示的结果可以看出,PC1发出的流量命中了规则rule 0,因而被拒绝。因此我们通过推断可知,在H3C路由器某个接口上同时存在出站ACL和NAT时,出站流量应该是先去匹配出站ACL,然后再进行地址的转换。
2.2 入站ACL与NAT的执行顺序
首先将ACL 2000从路由器上删除掉,然后配置高级ACL并进行应用,具体配置如下:
从上面的配置可以看出,ACL 3000中的规则rule 0的定义是拒绝目的IP地址为内部本地地址192.168.1.2的数据流量,该 ACL被应用在了路由器的 Ethernet 0/1接口的inbound方向上。
配置完成后,在PC3上使用命令“ping 202.207.120.20”测试到达PC1的连通性,会发现无法连通。在路由器上执行命令display acl 3000,显示结果如下:
从显示的结果可以看出,PC3发出的流量命中了规则rule 0,因而被拒绝。因此我们通过推断可知,在H3C路由器某个接口上同时存在入站ACL和NAT时,入站流量应该是先进行地址的转换,然后去匹配入站ACL。
3 CISCO路由器上的执行顺序
依然使用图1所示的实验网络,并进行NAT的配置。
3.1 出站ACL与NAT的执行顺序
在路由器上配置与第2.1节类似的标准ACL,具体配置如下:
配置完成后,在PC1上使用PING命令测试到达PC3的连通性,会发现能够连通。而如果将上面标准ACL的第一条规则修改为deny host 202.207.120.20,即将约束条件从内部本地地址修改为内部全局地址,再次进行测试,则PC1将无法连通PC3。
在路由器上执行命令 show access-lists 1,显示结果如下:
从显示的结果可以看出,PC1发出测流量命中了第一条规则,而该规则是对内部全局地址进行的约束。可见在CISCO路由器某个接口上同时存在出站ACL和NAT时,出站流量应该是先进行地址的转换,然后再去匹配出站ACL。
3.2 入站ACL与NAT的执行顺序
首先将access-list 1删除掉,然后配置与第2.2节类似的扩展ACL,具体配置如下:
配置完成后,在PC3上使用命令“ping 202.207.120.20”测试到达PC1的连通性,会发现能够连通。而如果将上面标准 ACL的第一条规则修改为 deny ip any host 202.207.120.20,即将约束条件从内部本地地址修改为内部全局地址,再次进行测试,则PC3将无法连通PC1。
在路由器上执行命令 show access-lists 100,显示结果如下:
从显示的结果可以看出,PC3发出测流量命中了第一条规则,而该规则是对内部全局地址进行的约束。可见在CISCO路由器某个接口上同时存在入站ACL和NAT时,入站流量应该是先匹配入站ACL,然后再进行地址的转换。
4 结束语
通过具体的实验验证可知,H3C设备和CISCO设备在对ACL与NAT的执行顺序处理上完全相反。由于在实际的网络中可能存在来自不同厂商的设备,因此在进行具体的ACL策略应用前一定要了解具体设备对ACL与NAT的执行顺序,以确保ACL的有效性。
[1]杭州华三通信技术有限公司.路由与交换技术 第 1卷(下册)[M].北京:清华大学出版社,2011.
[2]Cisco Systems公司.思科网络技术学院教程[M].北京:人民邮电出版社,2010.
[3]田庚林,田华,张少芳.计算机网络安全与管理[M].北京:清华大学出版社,2010.