如何将连接到NAT后面的IP重定向到源上的NAT(公共)IP?

时间:2012-06-12 20:03:36

标签: networking tcp ip nat

我有一个依赖IP地址进行通信的应用程序(域名根本不起作用。:( ...)

它的功能是连接到另一台机器上的对等设备,并在建立信任后发送数据。在“建立信任”阶段,他们都会交换他们的IP以供将来通信。他们都在两个不同的防火墙后面并且是NATted。一个是在我们的NATted办公网络中,另一个是在防火墙后面的NAT中。应用程序知道它们各自的私有IP并交换它们(10.x.xxx.xxx范围),当它们尝试相互连接(使用范围为10.x.xxx.xxx的私有IP)来传输数据时失败。连接是TCP,端口范围很多。

我很好奇,无论如何我可以硬编码(这一次)规则(可能是防火墙级别或我的应用程序之外的某个地方),说明是否有为IP地址10.x启动的连接.xxx.xxx然后将其重定向到205.x.xxx.xxx?

2 个答案:

答案 0 :(得分:1)

像10.x.y.z这样的私有IP地址范围本质上是私有的。 除非端点之间的每个节点都有适当的规则来翻译这些节点,否则您无法执行任何有意义的解决方案。

翻译很棘手,您将使用的所有主要工具都可以满足静态转换(端口转发,例如将特定端口转发到特定IP的位置)。这是一个途径,但它是一个hacky(它需要你打开许多端口,程序性地更新你的路由器,并可能有某种代理服务器来维护映射)。

或者,您可以通过VPN运行隔离的网络,这将为您的终端提供可用于连接到彼此的相互私有IP。它只是绑定到这个新地址并通过VPN进行通信的情况。这也可能会加密您通过互联网进行的通信。

其他可能性是使用可以允许遍历的NAT / TCP穿通技术,但这些技术实际上是破坏网络拓扑的补丁(阅读IPv6以了解如何减轻这种情况)。

或者,您可以通过代理路由所有连接,但与VPN相比,这会使问题复杂化。


要回答有关硬编码规则的问题,端口转发是此处的解决方案。显然,这取决于接受连接的对等方的路由器配置,但此客户端应将端口目标端口转发到计算机。这显然不会很好地扩展,并且实际上转移到一个连接的服务器/客户端架构!

根据您的硬件,您可以转发一系列端口(如果无法建立单个端口)并将端口转发限制为某些传入连接(外部IP)。

有关端口转发的信息,请访问http://portforward.com/

答案 1 :(得分:0)

这听起来很像你想要的VPN。无论如何你可以设置一个吗?基本上,你和云之间的站点到站点VPN会说'哦,嘿,这是一个位于远程网络的IP,继续通过链接连接'。这种解决方案能否适用于您的情况?

这些内容:http://i.msdn.microsoft.com/dynimg/IC589512.jpg