这是一个奇怪的问题。
我们有许多配备双网卡主板的设备。有些是 Realtek 网卡,质量很差。有些是 Intel e1000,质量不错。
我刚刚注意到有两台机器,一台是英特尔网卡,一台是 Realtek,当我将一台机器的 MAC 地址放入dhcpd.conf
我们的 DHCP 服务器上的文件中,以使其通过 PXE 启动机器进入重建环境时,最初一切都很好。
服务器获得 DHCP 分配,PXE 启动进入 Ubuntu 预置环境。
在一两台机器上,它到达 Ubuntu 的 DHCP 网络配置,并失败。如果我打开 busybox shell(在tty2
安装机器上),然后运行ip link
,我可以看到 UP 标志已设置在其他网卡。
这是一些东西。
host xeon16-ghz240-gb48-node1 {
hardware ethernet BC:AE:C5:07:1F:18;
filename "pxelinux.0";
next-server 192.168.123.80;
}
这就是dhcpd.conf
恶意机器上的 ip link 是这样的。
实际只连接了一个 NIC(故意的)。
如您所见,dhcpd 配置中的 NIC 未标记为 UP,并且 UP 的链接不是 DHCP 中的链接。
到目前为止,我已经在两个品牌的双 NIC 配置上看到过这种情况。
有人知道 1) 是什么原因造成的,以及 b) 我们能做什么吗?
答案1
做任何事情总有多种方法:)
解决方案 1
每种主板各有一个吗?
ethtool -i eth0
将支持 Realtek 卡的任何模块 ( ) 列入黑名单。
Ubuntu支持 module_name.blacklist=yes
在启动时将其列入黑名单,您应该能够在预置环境中更改 modprobe 选项,以便它以后不会被探测。
解决方案 2
让我重新表述一下这个问题:
我们的主板有两个 NIC,我们希望无论插入哪个接口,它们都能正常工作。我们无法始终确定将插入哪个接口(从操作系统的角度来看)。
设置绑定!使用主动-被动配置 ( mode=active-backup miimon=100
),将两个接口都设为从属接口。这样,无论插入哪个接口,它都会正常工作。
解决方案 3
主板是否足够一致,以至于网卡总是出现在相同的 PCI ID 上?使用 udev 规则始终将特定 PCI 地址上的卡分配给 eth0,将另一个地址上的卡分配给 eth1。
请注意,您可以有两个不同的 udev 规则将设备分配给 eth0 - 这使您可以同时处理 Realtek 和 e1000 的情况。
答案2
您可以尝试添加 PXELINUXIPAPPEND 2pxelinux.cfg 文件中的选项来告诉 init 脚本使用执行 PXE 引导的接口:
/var/lib/tftpboot/pxelinux.cfg/默认
LABEL linux
KERNEL /ubuntu/casper/vmlinuz
APPEND initrd=/ubuntu/casper/initrd.gz root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.1.1:/var/lib/tftpboot/ubuntu --
IPAPPEND 2
看: http://www.syslinux.org/wiki/index.php/SYSLINUX#IPAPPEND_flag_val_.5BPXELINUX_only.5D