将 Ubuntu 12.04 升级到 14.04 Server 时的 Internet 连接问题

use*_*743 6 server networking internet dns 14.04

将我服务器的软件从 Ubuntu 12.04 升级到 Ubuntu 14.04,现在服务器无法访问互联网。

我可以 ping 局域网上的设备,包括我的调制解调器。当我尝试 ping 互联网上的任何站点时(例如 8.8.8.8),我得到 100% 的数据包丢失。我觉得这可能是我一直在阅读的 DNS 问题。我已将以下行添加到/etc/network/interfaces

dns-nameservers 8.8.8.8 8.8.4.4
Run Code Online (Sandbox Code Playgroud)

没有成功。

的相关输出ifconfig

eth0     Link encap:Ethernet  HWaddr 64:31:50:1f:88:72
          inet addr:192.168.0.222  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::6631:50ff:fe1f:8872/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:575229 errors:0 dropped:55 overruns:0 frame:0
          TX packets:10313 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:35490659 (35.4 MB)  TX bytes:898607 (898.6 KB)
Run Code Online (Sandbox Code Playgroud)

的输出route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
Run Code Online (Sandbox Code Playgroud)

/etc/network/interfaces文件内容:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static

address 192.168.0.222
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.4.4  
Run Code Online (Sandbox Code Playgroud)

的输出tracepath 8.8.8.8

1?: [LOCALHOST]                                         pmtu 1500
1:  192.168.0.1                                           0.446ms
1:  192.168.0.1                                           0.444ms
2:  no reply`  
3:  no reply`    
//continues with no reply until interrupted
Run Code Online (Sandbox Code Playgroud)

小智 2

这看起来很不寻常……

首先,我真诚地怀疑是否涉及 DNS,但如果您使用 8.8.8.8 等作为 DNS,那么 DNS 将失败,因为您无法访问这些服务器。

首先,它不可能是您的 LAN 配置,因为您可以 ping 通您的本地网关,因此进出该网关的流量可以正常工作。

最大的提示是跟踪中双重列出您的网关。您的网关应该只显示一次,这暗示您的网关出现循环 - 但您的所有其他系统都工作正常,并且根据您编写的内容,只有本地系统发生了变化。

我唯一能想到的是,如果你的 iptables 规则大致如下:

iptables -t nat -D POSTROUTING ! -d 192.168.0.0/24 -j SNAT --to-source 1.2.3.4
Run Code Online (Sandbox Code Playgroud)

哪里1.2.3.4有一些伪造的或可能以前有效但不再有效的 IP 地址。

这将使本地流量正常工作,但任何超出本地网络的流量都会中断,因为回复会发送到错误的地方。您的网关可能会阻止这样的流量,因为它本质上是“欺骗”流量。

我认为如果可能的话,您可以通过在网关进行一些流量检查来得到有关该问题的良好提示。

如果你做不到这一点——这是可以理解的——那么也许可以在你的网络上设置另一个 Linux 盒子,并使其成为这个故障系统的默认网关,然后你就可以检查它生成的流量。这是假设故障出在升级后的系统上。如果您将第二个 Linux 机器配置为ip_forward192.168.0.1 设备并将其网关设为 192.168.0.1 设备,您可能还会看到更多有用的信息来帮助确定原因。

当你最终把它整理好时,看看它是什么会很有趣。


小智 0

尝试进入“/etc/resolv.conf”并在以#开头的行下方添加以下行:“nameserver 8.8.8.8”“nameserver 8.8.4.4”看看执行此操作后是否可以连接。更改文件后不要重新启动,只需保存并测试连接即可。如果这有效,那么就是 DNS 问题。重新启动后,对文件所做的更改将被撤消。