几年前,我的 ISP 为我设置了一个公共 IP 地址,这样我就可以更轻松地从办公室连接到家庭网络上的设备。我只需要在我的家庭路由器上设置端口转发规则,一切就都正常了。我的家庭路由器privateIP
从大楼内 ISP 的路由器获得一个私有 IP 地址(我们称之为),然后他们在路由器上设置了 1:1 NAT,将所有端口映射privateIP
到我的家庭路由器。
几周前,我家的路由器坏了,所以我买了一个新的(TP Link Archer A7)。我以为我可以在新的服务器上设置相同的端口转发规则,一切都会正常工作,但事实并非如此。做从外部我的家庭网络。
但是,当我在家时,我无法使用publicIP
。我无法从网络内部 ping 它,也无法通过 SSH 或 HTTP 连接到任何设备,而且我能在我的办公室里做这两件事。使用我的旧路由器(华硕 RT-N56U),当我使用时,一切都按预期工作publicIP
,无论我是从自己的子网还是从外部进行连接。
我的 ISP 声称他们那边没有任何不同,并暗示我的旧路由器和新路由器之间的默认路由规则不同。他们能告诉我的就这么多了,我不太清楚如何为这种情况设置静态路由。我的意思是,我知道如何在路由器的配置中执行此操作,但我不知道在路由表中将目标 IP、子网掩码和网关设置为什么。在这种情况下,我认为目标具体应该是publicIP
,因此子网应该是255.255.255.255
,但感觉不对。另外,我不知道网关地址应该是什么。
这听起来像是我走在正确的轨道上吗?我应该如何从两个 NAT 后面设置到路由器的公共 IP 地址的路由?
编辑:
注意:大楼内的 ISP 路由器为我的家用路由器提供了一个 10.11.180.0/22 子网地址(privateIP
)。该路由器publicIP
配置了从 10.11.xxx.yyy 地址到 1:1 NAT 的地址。我无法控制该配置,但它以前确实有效。我的家用路由器管理 192.168.0.0/24 子网。
答案1
外部 IP 地址用于与外界通信。在我们自己的网络内,您使用内部 IP 地址。由于您办公室的连接正常,因此路由没有任何问题。
例如,我有一台使用 SSH 管理的 Linux 服务器。该服务器的内部 IP 地址是 192.168.1.100/24。当我从办公室连接到它时,我会使用 ssh user@externalip。当我从我的工作站连接到它时,我处于同一个网络中,因此我改用服务器的内部 IP,即 ssh[电子邮件保护]。
只有通过路由器互联网接口的流量才会被路由。网络内部的流量不会通过此接口,因此不会被路由,但路由器会使用其交换机部分仅使用 MAC 地址转发流量。由于内部流量从不通过互联网接口,因此您根本不需要在网络内通信中使用外部 IP 地址。
而且由于流量没有路由,您不必设置任何类型的静态路由来从其他内部设备到达内部设备。
请注意:这假设您的所有内部设备都位于同一网络中,任何现成的 So-Ho 路由器默认都是如此。如果您配置了两个或更多单独的 VLAN 和网络,它们之间的流量是路由,在某些(罕见)情况下,您可能需要配置静态路由。但是,由于流量仍未通过互联网接口,因此您不会使用外部 IP,而只能使用内部 IP。
某些特殊情况可能需要在内部通信中使用外部 IP。没有标准规定 SoHo 路由器内部必须如何工作,设备制造商可以自由决定提供什么。例如,在这种情况下,新路由器似乎不支持发夹式 NAT(NAT 环回),正如 Frank Thomas 在上面的评论中所建议的那样。
如果需要完全相同的功能,则应使用完全相同的型号替换旧设备;但即使如此,新旧设备之间也可能存在操作系统(固件)差异,从而导致行为差异。唯一可以确定的方法是在购买前比较两台设备(或操作系统版本)的功能。
如果找不到相同或类似的设备,可以检查某些开源路由器操作系统(如 OpenWRT)是否具有所需的功能,并购买支持替代操作系统的设备。