Debian 9 混合网络适配器

Debian 9 混合网络适配器

我有两个server系统,一个运行Debian Stretch,另一个运行Ubuntu 17.10,它们都有两个网络适配器,配置方式如下(/etc/network/interfaces):

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
        address 192.168.2.x
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255
        gateway 192.168.2.1
        dns-nameservers 8.8.8.8

allow-hotplug eth1
iface eth1 inet dhcp

此外,两个系统上的初始 RAM 磁盘具有相同的 IP 地址(是的,我使用“老式”接口名称),配置为(/etc/default/grub):

GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 biosdevname=0"
GRUB_CMDLINE_LINUX="ip=192.168.2.x::192.168.2.1:255.255.255.0:whatever:eth0:off"

在这两个系统上,第一个适配器始终连接到本地网络,而第二个适配器几乎从不连接任何东西,但偶尔用于测试网络设备。

有时(1/10 次)会发生的情况是,重新启动后,适配器名称会交换位置,并且突然eth1拥有重新启动之前MAC的地址eth0和获取DHCP的地址。 这也发生在初始 RAM 磁盘中。

现在,Debian Jesse两者Ubuntu 16.04 LTS/etc/udev/rules.d/70-persistent-net.rules清楚地说明了哪个MAC属于哪个接口名称。我的系统上不存在此文件,我从未从这两个系统中删除过任何软件包或删除过该文件。我尝试使用以下命令重新创建该文件:

udevadm trigger --type=devices --action=change
udevadm trigger --subsystem-match=net --action=add
udevadm control --reload-rules

重启后,文件不存在,适配器有时仍会换位置。任何关于如何解决这个烦人问题的提示或想法都将不胜感激。

答案1

网络接口在启动时被探测,并且这种探测的结果不可预测。接口名称按找到的顺序分配,但不幸的是,这不是确定性的。这正是“老式”接口名称的问题,可预测的网络接口名称正在尝试解决。

您还可以“手动”创建 udev 规则文件,将 MAC 地址映射到接口名称,例如:

/etc/udev/rules.d/70-network.rules

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", NAME="net1"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="ff:ee:dd:cc:bb:aa", NAME="net0"

请注意,交换的不是 MAC 地址,而是接​​口名称。MAC 地址(通常)固定在硬件上。您的情况是,名称为“eth0”的物理接口有时会被命名为“eth1”,这意味着您的静态网络配置应用于错误的端口。

相关内容