我们的一台服务器在启动时网络行为异常。我们一直在使用配置更改和 ifup/ifdown 来尝试隔离问题,但结果却令人沮丧。我们的配置与其他没有此问题的服务器一致。一个显著的区别是这台服务器来自不同的硬件供应商,但我不知道为什么这会导致我们遇到的问题。
当我们使用 启动 eth0 接口时sudo ifup eth0
,绑定接口bond0
和 vlan 接口bond0.3001
也会启动,并且从 ifconfig 看来配置正确,但缺少默认路由。
user@admin1:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0.3001
反复尝试关闭接口(使用sudo ifdown bond0
,这似乎是使用单个命令关闭整个多层配置的最简单方法)然后再恢复,似乎永远无法正确添加路由。但是,如果我们编辑bond0.3001
接口文件中的条目/etc/network/interfaces
,它会经常(但并非总是如此)打开接口和正确的默认路由。
user@admin1:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.1.1.1 0.0.0.0 UG 0 0 0 bond0.3001
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0.3001
我们一直在文件编辑时注释掉/添加下面的“网络”行,结果有些一致;当我们进行编辑并弹出接口堆栈时,默认路由经常出现。当我们弹出接口堆栈而不进行编辑时,它似乎 100% 都会失败。sudo route add default gw 10.1.1.1 bond0.3001
每次我们尝试手动添加默认路由时,它都有效,但我们需要系统可靠地重新启动网络。
这是我们的配置:
user@admin1:~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
bond-master bond0
auto eth1
iface eth1 inet manual
bond-master bond0
# The primary network interface
#Aggregate bond
auto bond0
iface bond0 inet manual
bond-slaves none
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate 1
auto bond0.3001
iface bond0.3001 inet static
address 10.1.1.14
gateway 10.1.1.1
netmask 255.255.255.0
#network 10.1.1.0
broadcast 10.1.1.255
#post-up route add default gw 10.1.1.1 bond0.3001
#post-down route del default gw 10.1.1.1 bond0.3001
一个额外的数据点 - 在运行中sudo strace -f sudo ifup eth0
尝试查看有什么差异,成功尝试(创建默认路由)比失败尝试花费的时间更长。(缺少默认路由)这可能只是其他下游网络服务正在运行,当没有默认路由时会很快失败。
编辑:怀疑内核更新是罪魁祸首,似乎可以解决此服务器问题的更新是 3.19.0-25 到 3.19.0-43。我们在内核更新后在其他服务器上也看到了类似的行为。可能需要对特定内核版本进行更多测试才能找到根本原因。
答案1
本周,我刚刚在 Ubuntu 14.04.3 服务器机架上遇到了这个问题,所有服务器都升级到了 linux-generic-lts-vivid 并运行 3.19.0-43 内核。经过几天的折腾,我们通过将内核降级到 3.16.0-57 解决了这个问题(我们在使用 14.04.3 amd64 服务器 iso 附带的 3.19.0-2x 内核时也遇到了同样的问题)。
apt-get remove linux-generic-lts-vivid -y
apt-get autoremove
apt-get install linux-generic-lts-utopic -y
rm -f /boot/*3.19*
update-grub
reboot
就症状而言,默认路由在启动时被非确定性地添加。我们总是可以通过 来修复它ifdown bond0 && ifup p4p2 p5p2
,但是,像您一样,我们需要网络在启动时可靠地工作。