Linux 以太网编号重置

Linux 以太网编号重置

当你将硬盘放入另一台机器时,Linux 会识别新的 NIC,并附加一个新的数字,eth例如eth0->eth1

这分解了我的一些个人脚本,例如获取系统的 IP 地址。

每次重启或者发现新的 NIC 时,有什么办法可以重置该号码吗?

答案1

检查 udev 规则/etc/udev/rules.d

在我的 Fedora 发行版中,有一个自动写入的规则70-persistent-net.rules

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:f1:cc:2f:1a", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

它明确地将以太网地址与设备名称联系起来。文件顶部的注释提供了如何调整此行为的良好线索。

答案2

将其添加到您的脚本中。根据您的系统,它可能需要以 root 身份运行。

ethX=`ifconfig -s | awk 'NR==2 {print $1}'`

然后,您可以将$ethX其用作 NIC 的变量。
这只会获取输出ifconfig -s并解析除第 2 行和第 1 列的文本之外的所有内容。

答案3

据我所知,Linux 使用总线编号来确定给定机器中接口的顺序及其编号。它可以是 PCI 总线、迷你 PCI 或其他任何总线。最近,由于各种类型的并行启动脚本,从一次启动到另一次启动,事情有时会变得完全随机(实际上,同一台机器上的 NIC 或多或少被命名为相同的,但其他设备则不然)。

显然,总线上设备的顺序因机器而异。不变的是 MAC 地址。

我的解决方案:

如果你正在使用 udev,你可以使用类似于的 udev 配置规则描述在这里(对于Debin,ubuntu类似)强制绑定特定接口和网卡的MAC地址。

买者自负:有些 NIC 允许编辑其 MAC。在这种情况下,它不起作用。

课外信息:一个更难实现的替代方案是使用 Matt Domsch / Dell 为 Fedora 提出的新机制,在这里评论

就 Ubuntu 而言,也有人提议将该计划纳入其中。根据1多于:尽管 Fedora 率先推出 biosdevname,但其他 Linux 发行版也有望采用它。据报道,Ubuntu 11.04 中已经有一个集成该功能的蓝图,OpenSUSE 中也有一个功能请求。

希望这有帮助。

相关内容