在 Red Hat Enterprise Linux 7 中,他们引入了网络设备命名方案,其中提供了为网络接口命名一致且可预测的网络设备的方法。
这些功能会更改系统上网络接口的名称,以便更轻松地定位和区分接口。
尽管在很多情况下我们更愿意坚持传统的命名方案,其中接口名称是 eth[0123...]。
默认情况下,在 RHEL 7 节点上,将启用一致的网络设备命名,但如果我们希望禁用它,则有几种方法。
此命名方案是通过使用 udev 和/或者 biosdevname 的不同规则集启用的,具体取决于系统上启用的内核参数。
biosdevname 在除 DELL 之外的所有硬件上默认禁用,如果我们希望启用 biosdevname,那么我们必须在内核命令行参数中显式地添加 biosdevname=1.
重要说明:红帽强烈建议使用一致的网络设备命名。
在启动时(或者每当加载网络驱动程序时),内核总是为接口分配 ethX 样式名称,其中 X 是当前未使用的最低数字,从 0(零)开始。
内核无法确保驱动程序或者接口每次都以相同的顺序出现。
因此,每次系统启动时,某些操作系统功能必须确保给定的接口始终分配相同的名称,因此在启动过程中会看到接口的重命名。
在 RHEL 7 中,此 OS 功能由 systemd 的可预测网络接口功能提供。
如果没有可预测的网络接口功能,网络接口将保留其原始 ethX 样式名称。
但是,将没有 OS 功能确保特定接口在启动时始终具有相同的 ethX 样式名称,因此设备命名变得不可预测。
后续的引导可能会有相同的接口被赋予不同的 ethX 名称,这可能会导致许多问题。
要禁用一致的网络设备命名:
# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:b7:6e:24 brd ff:ff:ff:ff:ff:ff inet 192.168.1.5/24 brd 192.168.1.255 scope global dynamic enp0s3 valid_lft 86256sec preferred_lft 86256sec inet6 fe80::a00:27ff:feb7:6e24/64 scope link valid_lft forever preferred_lft forever
# vim /etc/default/grub GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet net.ifnames=0" # grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-d6e5b9fa407542fcbcaa72e7e6b777e2 Found initrd image: /boot/initramfs-0-rescue-d6e5b9fa407542fcbcaa72e7e6b777e2.img done
重启服务器,使设置生效:
# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:b7:6e:24 brd ff:ff:ff:ff:ff:ff inet 192.168.1.6/24 brd 192.168.1.255 scope global dynamic eth0 valid_lft 86390sec preferred_lft 86390sec inet 192.168.1.5/24 brd 192.168.1.255 scope global secondary dynamic eth0 valid_lft 86389sec preferred_lft 86389sec inet6 fe80::a00:27ff:feb7:6e24/64 scope link valid_lft forever preferred_lft forever
如果您的节点还启用了 biosdevname,那么您还必须禁用它才能使用传统接口名称,这可以通过在 GRUB_CMDLINE_LINUX 中添加 biosdevname=0 来完成
# vim /etc/default/grub GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet net.ifnames=0 biosdevname=0" # grub2-mkconfig -o /boot/grub2/grub.cfg
重启服务器,使设置生效
如何在 kickstart 上禁用一致的网络设备命名?
要在 kickstart 上禁用此功能,我们必须在两个配置文件下工作
1.修改kickstart.conf中的“bootloader”部分
2.修改tftp cfg文件的default.cfg
在 kickstart 文件中查找带有引导加载程序(bootloader )的部分(如果没有,则添加新的1行):
bootloader --location=mbr --append="net.ifnames=0 biosdevname=0"
在 TFTP 配置文件下面附加(pxelinux.cfg 文件名可能因您的情况而异)
# vim /var/lib/tftp/linux-install/pxelinux.cfg default autoinst
label autoinst IPAPPEND 2 kernel rhel7_64/vmlinuz append initrd=rhel7_64/initrd.img ramdisk_size=65536 vga=no ksdevice=bootif ks=nfs:10.43.138.1:/myfile/kickstart.conf linux edd=off net.ifnames=0 biosdevname=0
这将确保当通过 initrd 将 IP 分配给接口时,接口是使用 eth0 创建的,并且 kickstart 文件将确保一旦安装了节点,目标节点上的所有接口都将具有 ethX 命名约定