我正在尝试配置一台具有 3 个 NIC 的机器,前两个是内置 GbE 控制器,第三个是 10GbE 控制器。通过 NetworkManager,我将“第一个”GbE NIC(当时是 eth0)配置为使用静态 IP 地址。第二个 GbE NIC 将配置在单独的专用网络上,并且目前未使用 10GbE NIC。
当我重新启动机器时,eth0、eth1、eth2 等的顺序似乎是随机的。有时 eth0 会获取静态 IP 地址,有时它会被识别为 eth1 并获取 DHCP 地址。在这种情况下,我需要在正确重新配置之前交换电缆。
如何控制顺序,以便特定物理 NIC 始终以 eth0 或 eth1 出现,而无需更改下次重新启动?
也许有人会发现这些信息很有用:首先,在 RHEL7 中,您无需重新安装系统即可更改接口命名约定。
注意:需要引导参数:
例子:
并且在主题的情况下:当您需要调整所有接口程序的顺序时很容易:
RHEL 6 中仍然支持的方法是通过 udev 设备规则。
应该有一个自动生成
/etc/udev/rules.d/70-persistent-net.rules
的强制一致命名:如果不是,您可以使用与您自己的 MAC 地址类似的语法来强制永久设备命名。
对于 RHEL 6 和未来,支持的方法是一致的网络设备命名。这可确保所有接口都获得一个有意义的名称,该名称基于硬件并且在系统的整个生命周期中保持不变(如果您不更改硬件,无论如何,通常即使您这样做了)。
(请注意,在 RHEL 7 中,使用了不同的命名格式。)
要在 RHEL 6 上切换到它,需要重新安装系统
biosdevname=1
,并且在安装时,启动安装介质时和每次启动系统时都必须传递内核命令行选项。正如 RedHat文档所建议的,您可以在接口配置文件中指定
HWADDR=MAC-address
参数。正如 HBruijn 提到的,rhel6 中的排序是 /etc/udev/rules.d/70-persistent-net.rules。该文件由 /lib/udev/write_net_rules 编写。
如果出于某种原因您需要对网络接口进行任意和预先确定的排序,您可以用自己的脚本替换此脚本,以创建 70-persistent-net.rules 文件。这确保它不会被覆盖。
您可以使用以下方式获取设备信息
获取设备列表
得到每一个的MAC-addr(关联PCI@/MAC@)。