configuration第二个NIC将服务器closures

昨天我花了4个小时试图让我的networking的DHCP / DNS / SMB服务器恢复在线。 长话短说,它在黑暗中(无DNS =没有互联网资源寻求帮助),并且不下6次重新启动,以最终恢复我的服务器,以正常运行的顺序,在无数令人沮丧的镜头。

造成这种情况的原因是在/etc/network/interfacesconfiguration并启用了我的服务器的第二个以太网端口。 这就是全部击中球迷的时候。 我终于再次禁用了eth1,并且eth0像以前一样工作,但这不是我希望此服务器所在的状态。

eth0和eth1都是内置在主板上的千兆位端口(华硕的东西,或者其他的),之前他们都被绑定在一起(我想是循环法)。 然而,从那时起,服务器已经完全重新格式化和重新安装(硬盘驱动器出现故障),所以我认为绑定驱动程序configuration的任何东西都会死机。

当服务器处于脱机状态时, ifconfig似乎显示它正在接收数据包,但是每个传出数据包都被丢弃。 (我应该在问题中保存ifconfig的输出,但“TX”行显示“packets:0”和“dropped:123”;还有“errors:0 … overrun:0 carrier:0”。)

eth0configuration了一个静态IP; 我为eth1做了同样的事情。 这里是/etc/network/interfaces

 root@odin:~# 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 # The primary network interface auto eth0 iface eth0 inet static address 10.12.0.50 netmask 255.0.0.0 gateway 10.12.0.2 # The secondary network interface # Commented out now because this was the only way I could get it to work again #auto eth1 #iface eth1 inet static # address 10.12.0.51 # netmask 255.0.0.0 # gateway 10.12.0.2 

ethtool显示:

 root@odin:~# ethtool eth0 Settings for eth0: Supported ports: [ MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: external Auto-negotiation: on Supports Wake-on: g Wake-on: d Link detected: yes 

eth1的输出是相同的,除了它显示“链接检测:否”,因为它当前被禁用; 即使eth0显然无法发送任何数据包,“链接检测”对于任何一个接口来说都是“yes”

/var/log/syslog显示了许多这样的条目:

 May 11 21:55:08 odin kernel: [ 797.050022] forcedeth 0000:00:08.0: eth0: Got tx_timeout. irq: 00000020· May 11 21:55:08 odin kernel: [ 797.050026] forcedeth 0000:00:08.0: eth0: Ring at 112804000· May 11 21:55:08 odin kernel: [ 797.050029] forcedeth 0000:00:08.0: eth0: Dumping tx registers· May 11 21:55:08 odin kernel: [ 797.050035] forcedeth 0000:00:08.0: eth0: 0: 00000020 000000df 00000003 0001000d 00000000 00000000 00000000 00000000· [bunch more lines like this one, though none reference eth1] 

另外在系统日志中有以下几行的无数次重复:

 May 11 21:54:42 odin kernel: [ 770.480861] martian source 10.12.0.50 from 10.42.0.206, on dev eth1· May 11 21:54:42 odin kernel: [ 770.480865] ll header: ff:ff:ff:ff:ff:ff:00:1e:65:d6:6c:6a:08:06· May 11 21:54:42 odin kernel: [ 770.987932] martian source 10.12.0.51 from 10.12.0.2, on dev eth1· May 11 21:54:42 odin kernel: [ 770.987937] ll header: ff:ff:ff:ff:ff:ff:00:13:46:ed:e2:4a:08:06 

“从”地址是不同的,但总是eth1,始终是“源”10.12.0.50或.51。 这个“火星人”的事情提醒我,我正在运行Shorewall,但closures它(并validationiptables -L什么都没有显示,但从任何地方接受任何东西)没有任何效果。 我甚至不确定为什么eth1首先会看到针对eth0地址的stream量,因为他们连接到一个交换机(据我所知,无论如何)只会发送数据包到预定的目的地。 (这是一个不受pipe理的千兆交换机,Linksys我认为。)

我甚至不知道如何开始诊断或解决这里出了什么问题。 坦率地说,我害怕再试一次eth1,特别是因为我甚至不知道最终解决了什么问题,所以我不知道我能否恢复到目前的状态。 我能做些什么来弄清楚发生了什么,并修复它,以便我可以再次打开eth1而不会再次断开服务器的networking连接? 从以前的系统安装使用bonding驱动程序,硬件仍然可能是错误configuration? 我怎么能确定,如果是这样的话,解决它?

在设置绑定之前,两个端口都完全独立于以前的安装,在那段时间我根本没有任何问题。 我在4个星期之前重新安装了系统,从那以后eth1就被禁用了(Ubuntu在安装过程中检测到它,但我当然select了eth0作为安装过程中的“主要”接口,而Ubuntu显然没有做出任何努力之后configurationeth1)。

一对笔记:

  • 如果您有两个连接到同一个非托pipe交换机的端口的绑定,它将不支持将这些端口绑定在一起的必要协议。 您必须使用mode=active-backup
  • 不,您以前的configuration现在不会影响您的设置。
  • 火星人是在同一子网上有两个网卡的结果。 他们正在被发送到eth1,因为它们是广播数据包。 除了混乱你的日志,你不应该在你的设置有这些麻烦。
  • 传输超时看起来像某种硬件问题

你应该做什么:

  • 尝试运行: ip addr flush dev eth1; ip link set up dev eth1 ip addr flush dev eth1; ip link set up dev eth1来查看是否仅仅调出eth1导致eth0失败。 如果是这样,你可能有硬件问题。
  • 设置eth0和eth1作为从站的单个绑定接口( mode=active-backup ),并为其分配服务器的IP地址。

如果您之前将nics绑定在一起,则很可能需要重新configuration交换机端口。 端口可能已经被中继,或尝试将nics插入到同一VLAN上的未标记端口。