首先,我是网络方面的新手。
我有两台 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 地址。以下是状态:
该 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)
如果您决定设置静态地址,则应相应地重新配置端口转发规则。您可以保留当前设置,但请记住,如果任何动态地址发生变化,您的转发规则将不起作用。