NAT / PAT理论问题

鉴于以下简单的networking

networkinghttp://www.vbforums.com/picture.php?albumid=18&pictureid=47

[IMG] http://www.vbforums.com/picture.php?albumid=18&pictureid=47[/IMG]

是否有可能构buildNAT / PAT池,以便连接到networking的PC可以通过其端口号来识别。 我明白,如果我分配一个公共IP给每个用户,我可以识别他们。 我试图做的是保存公共IP,但保持从公共networking识别用户的能力。 如果你的答案是供应商的具体情况,对我来说还行。 提前致谢。

在Cisco路由器上,您可以执行以下操作:

ip nat日志翻译系统日志

日志logging<syslog server ip>

这将导致每个翻译被发送到系统日志服务器。 条目将如下所示:

Apr 29 21:25:06 rgw-01 233:000238:Apr 29 21:25:05.858 EDT:%IPNAT-6-CREATED:tcp 192.168.0.254:56334 68.175.123.94:56334 1.1.1.1:80 1.1.1.1: 80

它反映路由器上“show ip nat translation”的输出。 翻译创build和删除时,您应该会收到日志消息。

您只需查看nat设备上的当前nat转换表,即可查看IP映射到的端口。 例如在思科路由器192.168.1.82连接到谷歌通过拍到12.12.12.12的公共IP:

router1#show ip nat trans tcp 12.12.12.12:33949 192.168.1.82:33949 66.249.80.104:80 66.249.80.104:80 

更新:
我想我现在明白了。 我不知道这个有什么实现,但我不明白为什么它不起作用。 理论上可以将每个内部IP映射到不同的端口范围。 由于过载将内部ip / tcp src端口组合转换为外部ip / tcp源端口,因此您可以为每个内部IP分配特定的外部源端口范围(以前也可以是udp端口)。 例如:

 32000-33999 public ip's tcp/udp src ports on ip 12.12.12.12. will be used for 192.168.1.2 34000-35999 public tcp/udp ports on ip 12.12.12.12. will be used for 192.168.1.3 

重载的问题是,你开始限制可能的连接,因为不是一个正常的4个项目组合来识别一个会话(源IP,源端口,目的IP,目的端口),你将它限制为3个。所以当你通过限制端口范围来限制其中的一个,从而限制会话的数量。 所以在我上面的例子中,你的ip 192.168.1.2最多只能有2000个连接到任何特定的公共ip。 我也不知道是否一个重载代码是这样工作的,因为它可能只使用源端口而不是源端口/源IP(在这里谈论返回数据包)来更快地转换。

也许你可以绕过序列号欺骗,但我认为这将需要大量的TCP重新打开安全漏洞。 如果这已经实施,我会有点惊讶。 NAT是一种黑客,我认为可以帮助解决IP短缺问题。 PAT / Overload是一种进一步的黑客攻击,使其成为黑客攻击。 开始通过序列号识别会话将是一个黑客的黑客攻击。 那时候, 真的是IPv6了:-)

好吧,如果这只是从networking出站的一般访问,那么你真正需要的是一个标准的NAT-T + DHCP框。 使用DHCP,您可以执行静态DHCP,或者具有较高的租约时间,以便内部机器保持相同的地址。 那么你总是可以知道谁是谁。

在公共端使用端口来识别内部机器的问题,当您只是进行一般的出站访问时,返回端口将在用户连接到的服务器上随机生成。 所以没有办法真正跟踪或猜测会发生什么。

如果您正在进行入站连接,那么您只需将PAT /端口转发设置为select的内部地址,但这不是这种情况。

至于解决scheme,市面上的任何东西都可以做到这一点,你也可以在Linux上设置IPtables + dhcpd,或者在BSD设备上设置PF + dhcpd解决scheme。