我想在我无权访问的路由器上为我的网络服务器端口转发一个端口。我非常怀疑是否启用了 UPNP。
2 回答
实际上,你可以(有点)
它有点复杂,不会一直工作,但这里是它如何工作的要点:
鉴于:
具有公共 IP 1.2.3.4 的路由器 A
具有私有 ip abcd 的 PC1(在路由器 A 后面)
具有公共 IP 5.6.7.8 的路由器 B
具有私有 ip efgh 的 PC2(在路由器 B 后面)
现在,给定一个理想的解决方案(即没有 PAT)......
步骤一:
在任何端口(本例中为 10000)上从 PC1 向路由器 B (4.5.6.7) 的公共 IP 发送任何消息。这将在路由器 A 的 NAT 和 PAT 上注册 abcd:10000 -> 4.5.6.7:10000。RouterB 将丢弃这个数据包(正如预期的那样,因为它没有被请求)。
步骤B:同时,从PC2向同一端口(10000)的路由器A(1.2.3.4)的公网IP连续发送一个数据包。这将在 RouterB 的 NAT 和 PAT 上注册 egfh:10000 -> 1.2.3.4:10000。
步骤 C:
现在,这里是魔法发生的地方:
PC2 不断地向RouterA 发送数据包,从而使RouterB 中的“洞”保持打开状态,以便返回响应。当 PC1 将其单个数据包发送到 RouterB 时,RouterB 将显示为响应,因此将转发到 PC2。一旦 PC2 收到此“响应”,请确保再发送一个数据包并停止发送连续数据包。最后一个数据包将作为对 PC1 的“响应”,并通过在步骤 A 中创建的“洞”。瞧!您现在有了 NAT 横向。您只需要每分钟左右发送一个数据包,就可以保持“洞”打开。
注意:这仅适用于 UDP,因为它是无连接的(丢弃的数据包是可以的)。
现在几乎所有路由器都使用 PAT,因此您必须“猜测”哪个端口对大多数路由器进行“响应”,偏移量为 +-10 (ieabcd:10000 -> 5.6.7.8:10010)。
只需在该范围内尝试一些(-10 到 +10 直到您得到响应)
其余路由器在其 PAT 上是随机的。如果是这样,你就完蛋了...尝试另一个方向(即从另一个方向初始化连接)。如果失败,您将无法连接...抱歉)
因此,据我了解,您有一个运行需要转发内容的 Web 服务器,以及一个您无权访问的路由器端口;你想把这两者联系起来。
我非常怀疑有没有办法做到这一点,如果你只有 sudo 访问你的路由器,你可以使用 iptables 重定向