0

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

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

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

4

2 回答 2

1

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

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

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

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

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


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

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

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

于 2012-06-12T20:22:15.813 回答
0

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

这些方面的东西:http: //i.msdn.microsoft.com/dynimg/IC589512.jpg

于 2012-06-12T20:14:49.607 回答