![Linux 以太网编号重置](https://linux22.com/image/1273602/Linux%20%E4%BB%A5%E5%A4%AA%E7%BD%91%E7%BC%96%E5%8F%B7%E9%87%8D%E7%BD%AE.png)
当你将硬盘放入另一台机器时,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 中也有一个功能请求。
希望这有帮助。