实际上,您可以(有点)
它有点复杂,无法一直工作,但这是它工作原理的要旨:
给定:
带公共IP 1.2.3.4的routera
PC1带有私有IP ABCD(路由器A后面)
与公共IP 5.6.7.8的路由器
PC2带有私人IP EFGH(路由器B后面)
现在,给定理想的解决方案(即不拍拍)...
步骤A:
从任何端口上的任何端口(本示例10000)将任何消息发送到RouterB的公共IP(4.5.6.7)。这将在NAT上注册ABCD:10000-> 4.5.6.7:10000,并为routera进行PAT。 Routerb将丢弃此数据包(如预期的那样,因为没有要求)。
步骤B:同时,在同一端口(10000)上连续将数据包从PC2发送到路由器A(1.2.3.4)的公共IP。这将在Routerb的Nat和Pat上注册EGFH:10000-> 1.2.3.4:10000。
步骤C:
现在,这是魔术发生的地方:
PC2不断将数据包发送到routera,从而使路由器中的“孔”打开,以返回。当PC1将单个数据包发送到RouterB时,它将显示为routerb作为响应,因此将转发到PC2。 PC2收到此“响应”后,请确保再包含一个数据包,并停止发送连续数据包。最后一个数据包将充当对PC1的“响应”,并通过步骤A中创建的“孔”。您现在有NAT横向。您只需要每分钟左右发送一个小包,以使“孔”打开。
注意:这仅适用于UDP,因为它是无连接的(可以删除的数据包)。
现在,几乎所有路由器都使用PAT,因此您必须“猜测”大多数路由器“响应”哪个端口的偏移 +-10(IEABCD:10000-> 5.6.7.8:10010)。
只需在该范围内尝试一些(-10至+10,直到您得到响应)
其余的路由器是随机的。如果是这样,您就被拧紧...尝试另一个方向(即启动连接另一个方向)。如果失败,您无法连接...对不起)