两台路由器串联NAT,如何转发端口?

两台路由器串联NAT,如何转发端口?

首先,我是网络方面的新手。

我有两台 PC,分别位于两个不同的网络中。我正在尝试在它们之间建立连接。

  • 首先我获取了PC1网络的公网IP: wget http://ipinfo.io/ip -qO –。结果是a.b.c.d
  • 在PC1上我用来netcat监听端口nc -l -v 5555
  • 在 PC2 上我尝试连接nc a.b.c.d 5555。结果是无法连接。

我没有防火墙,并且路由器配置中启用了端口转发:

路由器配置

我在一个专门的网站做了另一项测试:

测试端口

我在这里做错了什么?


更新 1。

评论/讨论中指出,可能还有另一个路由器执行 NAT(网络地址转换)。我被要求检查路由器的 WAN IP 地址。以下是状态:

路由器的WAN状态

该 IP 与我之前发现的公网 IP 不同。现在该怎么办?


更新 2。

我设法获取了另一个(外部)路由器配置。该路由器的 WAN 接口上有正确的公共 IP(a.b.c.d)。我添加了端口转发规则。它指向我的(内部)路由器本地 IP(192.168.9.1)。

最外层路由器上的端口转发

但我的连接仍然nc无法正常进行。出了什么问题?

答案1

当您的路由器进行 NAT 时,其 WAN 和 LAN 接口上会有不同的 IP。这同样适用于您设置中的外部路由器。它看起来像这样(所有数字都是从您的屏幕截图中获取的实际 IP):

Internet
  |
WAN IP: a.b.c.d
outer router
LAN IP: 192.168.1.254
  |
WAN IP: 192.168.1.100
inner router
LAN IP: 192.168.9.1
  |
PC1 with IP 192.168.9.100

您的 PC1 视为您的内部路由器,192.168.9.1但外部路由器只能通过192.168.1.100地址到达内部路由器。

解决方案:重新配置外部路由器以将端口转发至192.168.1.100(而非192.168.9.1)。内部路由器上的端口转发似乎没有问题。


您还可以进行改进。家用路由器通常通过以下方式提供动态 IP 地址DHCP并且池以 开头192.168.???.100(可以更改,这只是一个常见的默认值)。您的 PC1 和内部路由器(其 WAN 接口)的 IP 地址以 结尾100。我认为它们是通过 DHCP 从相应的动态池获得的。您的屏幕截图(更新 1)毫无疑问地说明了这一点:“动态 IP”。

使用动态 IP 时,这些地址中的任何一个都可能在将来发生变化,且没有任何警告。在这种情况下,您的端口转发规则(一个或另一个,或两者)将需要调整以指向新地址。

为了避免这种情况,您应该为内部路由器 WAN 接口分配静态 IP(您应该能够在外部路由器配置中执行此操作,然后重新启动内部路由器)和 PC1(在内部路由器配置中,然后重新启动 PC1)。设置可能如下所示(示例):

Internet
  |
WAN IP: a.b.c.d
outer router
LAN IP: 192.168.1.254
  |
WAN IP: 192.168.1.5 (static, cannot change by itself)
inner router
LAN IP: 192.168.9.1
  |
PC1 with IP 192.168.9.2 (static, cannot change by itself)

如果您决定设置静态地址,则应相应地重新配置端口转发规则。您可以保留当前设置,但请记住,如果任何动态地址发生变化,您的转发规则将不起作用。

相关内容