我通过具有静态 IP 地址的路由器(AT&T U-Verse)建立了互联网连接。
在大多数情况下,它是有效的......但我昨天遇到了一些相当奇怪的事情。
我有一个本地网络。所有其他计算机的所有流量都通过我的主计算机,该计算机具有强大的防火墙。(防火墙不是罪魁祸首,不要在这里妄下结论。问题自行解决,从那时起我就没有改变防火墙。)
所以...我的网络看起来像这样:
+------------+ +------------+ +------------+ +------------+
| | | | | | | |
| LAN |<-->| Main PC |<-->| Router |<-->| Internet |
| | | | | | | |
+------------+ +------------+ +------------+ +------------+
192.168.2.45 192.168.2.1 [eth1]
192.168.1.1 192.168.1.254 [eth0:0]
x.x.x.120 162.220.130.126 [eth0]
因此,我的主计算机有一个静态 IP 地址,它使用网关 162.226.130.126 来访问互联网。我不确定网关在哪里指定,但我记得我把它放在路由器中,这样系统才能正常工作。
现在……昨天某个时候,我的主 PC 完全无法访问互联网。到目前为止……好吧……我想说,这种情况经常发生,所以没什么奇怪的。我无法连接任何东西,无法从名称中获取 IP 地址等。一切看起来都像是宕机了。
但是,我主 PC 旁边的 LAN 计算机(使用主 PC 连接到互联网)工作正常。不仅如此,它还会继续播放 Youtube.com 上的电影,只要我在 LAN 计算机上,我就可以访问任何网站,例如 Google 等。
对我来说这完全没有道理。主 PC 将 LAN 计算机数据包转发到 Internet... 那么当主 PC 停止工作时它怎么能继续工作呢?(即从外部看,IP 地址是相同的,因此如果我的 ISP 对我设置了防火墙,那么什么都行不通。)
我在两台计算机上都尝试了traceroute
,得到了以下结果。
从局域网计算机进行跟踪让我摆脱困境,但它似乎跳过了网关:
traceroute 45.55.5.185
traceroute to 45.55.5.185 (45.55.5.185), 30 hops max, 60 byte packets
1 halk (192.168.2.1) 0.368 ms 0.374 ms 0.367 ms
2 192.168.1.254 (192.168.1.254) 0.813 ms 1.045 ms 1.048 ms
3 162-201-40-3.lightspeed.frokca.sbcglobal.net (162.201.40.3) 20.271 ms 21.638 ms 23.065 ms
4 75.29.64.148 (75.29.64.148) 28.758 ms 28.999 ms 29.520 ms
5 12.83.77.141 (12.83.77.141) 27.213 ms 12.83.77.149 (12.83.77.149) 30.960 ms 12.83.77.141 (12.83.77.141) 31.212 ms
6 12.122.149.133 (12.122.149.133) 36.060 ms 35.725 ms 35.960 ms
7 192.205.32.222 (192.205.32.222) 36.200 ms 24.034 ms 24.786 ms
8 digitalocean-ic-302451-sjo-b21.c.telia.net (62.115.34.18) 28.043 ms digitalocean-ic-306499-sjo-b21.c.telia.net (62.115.45.22) 29.201 ms digitalocean-ic-302451-sjo-b21.c.telia.net (62.115.34.18) 30.409 ms
9 * * *
从主 PC 进行跟踪,我只得到一个条目,即网关:
traceroute 45.55.5.185
traceroute to 45.55.5.185 (45.55.5.185), 30 hops max, 60 byte packets
1 x.x.x.126 0.556 ms 0.742 ms 1.029 ms
2 * * *
我刚刚上床睡觉,早上一切都恢复正常,现在traceroute
主电脑上的 可以像 LAN 电脑上一样工作,并按预期连接到 DigitalOcean 电脑。
所以我的问题并不是“发生了什么?”因为这个问题可能很难回答,而是“为什么同一个隧道对一台计算机有效,而对另一台计算机却无效呢?”
答案1
根据您问题中的信息,我将做出一些假设。
- 您说这是家庭互联网连接,这让我认为您的 WAN IP 地址和/或网关(来自您的 ISP)实际上是动态的。这意味着您的路由器应该在 DHCP 租约到期后偶尔续订,并可能在续订时收到新的 WAN IP 和/或网关。
- 您说您有一个静态 IP 地址,但我认为您这样说只是因为您手动为路由器分配了内部地址 192.168.1.254。
- 我看不到您的网络掩码,但似乎您有两个子网 - 192.168.1.0/24 和 192.168.2.0/24。我假设这两个子网的网络掩码都是 255.255.255.0。
基于这些假设,以下是发生以下情况的一种可能性:
从“主 PC”的角度来看,您使用的是默认网关 162.226.130.126,而此时您应该使用来自 ISP 的动态网关。从 LAN 的角度来看,成功的跟踪路由明显表明了这一点,其中跳跃发生在 192.168.1.254 和 162.201.40.3 之间。实际上没有到达 162.226.130.126。因此,它给我的印象是您的路由器正在定期更新 DHCP 租约,以至少获取默认 WAN 网关。由于 LAN 上的主机使用路由器 192.168.1.254 的实际地址作为网关,而不是已过期的 WAN 网关(参见假设 1),因此来自需要路由的 LAN 的出站数据包最终将通过路由器的路由表,此时路由器将具有通过 ISP 访问互联网所需的适当动态默认 WAN 网关。回到“主 PC”的角度,由于您使用的默认网关相当于过期的 WAN 网关,因此您正在绕过路由操作,而不依赖于实际路由器的动态网关更新。一个合理的解决方法可能是仅使用路由器的 IP 地址 192.168.1.254 作为“主 PC”的默认网关。