您可以在不访问路由器的情况下强迫端口向前,而UPNP可能会关闭?

StackOverflow https://stackoverflow.com/questions/19836475

  •  25-07-2022
  •  | 
  •  

我想将网络服务器的端口移植到我无法访问的路由器上。我非常怀疑UPNP是否已启用。

有帮助吗?

解决方案

实际上,您可以(有点)

它有点复杂,无法一直工作,但这是它工作原理的要旨:

给定:

带公共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,直到您得到响应)

其余的路由器是随机的。如果是这样,您就被拧紧...尝试另一个方向(即启动连接另一个方向)。如果失败,您无法连接...对不起)

其他提示

因此,据我了解,您可以在需要转发的地方运行Web服务器,以及一个无法访问的路由器端口;您想连接这两个。

我非常怀疑是否有办法可以做到这一点,如果您只能使用Sudo访问路由器,则可以使用iPtables重定向

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top