打印

关于NAT(PAT)的大讨论-转自ITAA技术论坛

关于NAT(PAT)的大讨论-转自ITAA技术论坛

在cisco路由器上面,如果natpool是一个网段,那么做nat的转化时,他的转换规则是什么?是一个地址的session用完了,再用下一个,还是这个地址池随机用,没有什么规则!~~~~那么cisco防火墙又是怎么处理的?

TOP

[QUOTE=xy2ln]
引用:
是一个地址的session用完了,再用下一个
我没理解你这句话的意思,地址的session是什么意思??如果用NATPool,不加overload的话,地址是从你地址池中设置的第一个开始用的.如果用了overload就是pat了 NATPOOL的范围如下
ip nat pool huawei 121.1.1.7 121.1.1.14 netmask 255.255.255.0

debug 信息如下
R1#
*May 24 01:30:36.135: NAT*: s=1.1.1.1->121.1.1.7, d=7.1.1.1 [35]
*May 24 01:30:36.155: NAT*: s=7.1.1.1, d=121.1.1.7->1.1.1.1 [35]
*May 24 01:30:36.175: NAT*: s=1.1.1.1->121.1.1.7, d=7.1.1.1 [36]
*May 24 01:30:36.195: NAT*: s=7.1.1.1, d=121.1.1.7->1.1.1.1 [36]
*May 24 01:30:36.215: NAT*: s=1.1.1.1->121.1.1.7, d=7.1.1.1 [37]
*May 24 01:30:36.235: NAT*: s=7.1.1.1, d=121.1.1.7->1.1.1.1 [37]
*May 24 01:30:36.255: NAT*: s=1.1.1.1->121.1.1.7, d=7.1.1.1 [38]
*May 24 01:30:36.275: NAT*: s=7.1.1.1, d=121.1.1.7->1.1.1.1 [38]
*May 24 01:30:36.295: NAT*: s=1.1.1.1->121.1.1.7, d=7.1.1.1 [39]
*May 24 01:30:36.315: NAT*: s=7.1.1.1, d=121.1.1.7->1.1.1.1 [39]
R1#
*May 24 01:31:01.055: NAT*: s=1.1.2.1->121.1.1.8, d=7.1.2.1 [40]
*May 24 01:31:01.075: NAT*: s=7.1.2.1, d=121.1.1.8->1.1.2.1 [40]
*May 24 01:31:01.095: NAT*: s=1.1.2.1->121.1.1.8, d=7.1.2.1 [41]
*May 24 01:31:01.115: NAT*: s=7.1.2.1, d=121.1.1.8->1.1.2.1 [41]
*May 24 01:31:01.135: NAT*: s=1.1.2.1->121.1.1.8, d=7.1.2.1 [42]
*May 24 01:31:01.155: NAT*: s=7.1.2.1, d=121.1.1.8->1.1.2.1 [42]
*May 24 01:31:01.175: NAT*: s=1.1.2.1->121.1.1.8, d=7.1.2.1 [43]
*May 24 01:31:01.195: NAT*: s=7.1.2.1, d=121.1.1.8->1.1.2.1 [43]
*May 24 01:31:01.215: NAT*: s=1.1.2.1->121.1.1.8, d=7.1.2.1 [44]
*May 24 01:31:01.235: NAT*: s=7.1.2.1, d=121.1.1.8->1.1.2.1 [44]
R1#
*May 24 01:32:03.747: NAT*: s=1.1.3.1->121.1.1.9, d=7.1.1.1 [50]
*May 24 01:32:03.767: NAT*: s=7.1.1.1, d=121.1.1.9->1.1.3.1 [50]
*May 24 01:32:03.787: NAT*: s=1.1.3.1->121.1.1.9, d=7.1.1.1 [51]
*May 24 01:32:03.807: NAT*: s=7.1.1.1, d=121.1.1.9->1.1.3.1 [51]
*May 24 01:32:03.827: NAT*: s=1.1.3.1->121.1.1.9, d=7.1.1.1 [52]
*May 24 01:32:03.847: NAT*: s=7.1.1.1, d=121.1.1.9->1.1.3.1 [52]
*May 24 01:32:03.867: NAT*: s=1.1.3.1->121.1.1.9, d=7.1.1.1 [53]
*May 24 01:32:03.887: NAT*: s=7.1.1.1, d=121.1.1.9->1.1.3.1 [53]
*May 24 01:32:03.907: NAT*: s=1.1.3.1->121.1.1.9, d=7.1.1.1 [54]
*May 24 01:32:03.927: NAT*: s=7.1.1.1, d=121.1.1.9->1.1.3.1 [54]

R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
--- 121.1.1.7 1.1.1.1 --- ---
--- 121.1.1.8 1.1.2.1 --- ---
--- 121.1.1.9 1.1.3.1 --- ---


可以明确看出 地址转换是从地址池的第一个开始的

下面是用PAT的情况 ,转化只用端口号
R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 121.1.1.9:15 1.1.1.1:15 7.1.1.1:15 7.1.1.1:15
icmp 121.1.1.9:16 1.1.2.1:16 7.1.1.1:16 7.1.1.1:16
icmp 121.1.1.9:17 1.1.3.1:17 7.1.1.1:17 7.1.1.1:17


[/QUOTE]

TOP

谢谢,了解了,我要的是pat情况!~~~但是cisco这么做有什么好处,如果是随机从地址池里面找一个做转换有什么问题没有!~~~~还是要看现实环境。。。打10万个session不知道是什么效果!~~~~

TOP

[QUOTE=xy2ln]
引用:
打10万个session不知道是什么效果!~~~~
晕哦,10W个 ,我做不出来这个效果

我还想问下,是不是用PATPOOL,第一个地址的端口用完了,会切换到第2个公网IP的端口继续用? 实际工程中的问题么?
[/QUOTE]

TOP

[QUOTE=xy2ln]
我查了下资料找到答案了,PAT使用IP地址中唯一的端口号来区分不同转换,端口号有16位编码,所以PAT可以转化的内网地址理论上是65536个,PAT试图保持原始的源端口,如果源端口被分配,PAT将试图在适当的端口组0-511 512-1023 1024-65535 中从前至后查找第一个可用端口,如果所有端口组中都没有可用端口,并且配制了多个外部地址的情况下,PAT将移到下一个IP地址,并试图再次分配原始的源端口,这一过程持续到PAT用完可用的端口和外部IP地址.

上面红字所说的配置了多个外部IP情况是不就是咱们说的POOL加overload?

不过还是可以得出一些结论: 如果只配一个IP的情况打10W个session是不能完全转换的. 并且是用完一个IP的所有可用端口再用下个IP
[/QUOTE]

TOP

多谢兄弟们的建议!~~~~但是为什么要用这种规则,如果不用这种规则有什么影响?例如我一台pc和外网某个服务通信,有没有对于这个外网服务而言,有俩个ip地址在和他通信这种情况(natpool有很多地址)。这种情况服务器又是怎么处理的!~~~~用smartbits测试防火墙没有什么意义!~~~~有空我来天津拜会一下大家!~~~~~

TOP

[QUOTE=mj2154]pat的情况下,你如果突发10万个会话的话,PAT就无法满足你的要求了。当然我们也可以考虑采用POOL的overload。不过pool的overload好像是对最后一个IP地址才会复用,xy2ln 可以做一个实验看看。

深层次的去考虑问题,就算能够支持10万个会话,对路由器的性能要求也不低。况且如果NAT真能够达到楼主所想,IPv6诞生的意义也就少了一大半。
[/QUOTE]

TOP

[QUOTE=mj2154][QUOTE=jxby053853]谢谢,了解了,我要的是pat情况!~~~但是cisco这么做有什么好处,如果是随机从地址池里面找一个做转换有什么问题没有!~~~~还是要看现实环境。。。打10万个session不知道是什么效果!~~~~[/QUOTE]

这是一个编程效率的问题,按顺序转换效率更高。
而随机挑选,你还得在转换地址前去看看还有哪些地址可用(都是不连续,没有规则的地址)
[/QUOTE]

TOP

还有,上面那个实验说明了不是最后一个ip才overload。
p nat pool huawei 121.1.1.7 121.1.1.14 netmask 255.255.255.0


下面是用PAT的情况 ,转化只用端口号
R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 121.1.1.9:15 1.1.1.1:15 7.1.1.1:15 7.1.1.1:15
icmp 121.1.1.9:16 1.1.2.1:16 7.1.1.1:16 7.1.1.1:16
icmp 121.1.1.9:17 1.1.3.1:17 7.1.1.1:17 7.1.1.1:17

TOP

[QUOTE=xy2ln][QUOTE=mj2154]pat的情况下,你如果突发10万个会话的话,PAT就无法满足你的要求了。当然我们也可以考虑采用POOL的overload。不过pool的overload好像是对最后一个IP地址才会复用,alex 可以做一个实验看看。 [/QUOTE]

彭老,我做了下用POOL+overload 从前几个地址就开始复用,并不是最后一个才复用,但是又发现了个新问题
我分别将地址池的IP范围设为7-14 9-17 64-69 87-97,但是他们不是从第一个地址开始使用,大部分从第2个开始,只有9-17这段是从第一个IP121.1.1.9开始的.这是什么原因呢?(重复做了3次都是这样,很纳闷,如果是随机选应该每次都不一样呀,如果不是随机,应该都从第一个开始复用,为什么有的第一个有的从第二个开始?)

1 ip nat pool huawei 121.1.1.7 121.1.1.14 netmask 255.255.255.0
ip nat inside source list 1 pool huawei overload
这时候从121.1.1.8 开始复用
R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 121.1.1.8:14 1.1.1.1:14 7.1.1.1:14 7.1.1.1:14

2 ip nat pool huawei 121.1.1.9 121.1.1.17 netmask 255.255.255.0
R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 121.1.1.9:16 1.1.1.1:16 7.1.1.1:16 7.1.1.1:16

3 ip nat pool huawei 121.1.1.64 121.1.1.69 netmask 255.255.255.0
R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 121.1.1.65:17 1.1.1.1:17 7.1.1.1:17 7.1.1.1:17

4 ip nat pool huawei 121.1.1.87 121.1.1.97 netmask 255.255.255.0
R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
icmp 121.1.1.88:18 1.1.1.1:18 7.1.1.1:18 7.1.1.1:18
[/QUOTE]

TOP

具体请看:http://www.one-tom.com/bbs/forum_posts.asp?TID=3221

转贴的效果很是不好

TOP