Udev:重命名我的网络接口


20

我刚刚在Dell 1950服务器上安装了RHEL 6.3。该服务器作为两个GBit端口Gb0和Gb1。

由于某些模糊的原因,udev选择命名为Gb0 eth1Gb1 eth0。这对我来说绝对不是一个好发现,只会让人感到困惑。

所以我修改了配置/etc/udev/rules.d/70-persistent-net.rules

# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \
  ATTR{address}=="00:20:19:52:d3:c0",           \
  ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \
  ATTR{address}=="00:20:19:52:d3:be",           \
  ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

我只是更改了文件上的“名称”字段,以反映我想要的内容。我重新启动了服务器,但它没有工作。

dmesg日志中,我可以阅读以下内容:

udev: renamed network interface eth1 to rename5
udev: renamed network interface eth0 to eth1
udev: renamed network interface rename5 to eth0

对这里出什么问题有任何想法吗?为什么要这样udev切换?我有另一个类似的服务器,在这里我没有这个问题。


那么现在的任务是什么?还是Gb0 == eth1和Gb1 == eth0?
umläute

一次检查,grep -R 'rename5' /etc/udev/rules.d/因为在日志中为什么显示rename5相同的其他规则?
拉胡尔·帕蒂尔

我已经对网络接口做过类似的事情,并且它在日志中也是如此(如果您遵循其中的逻辑,它只会为原始eth1分配一个虚假名称,以便可以将原始eth0重命名为eth1)。因此,根据日志,一切正常。您确定名称不正确吗?
zagrimsan

分配仍然是错误的:Gb0 == eth1和Gb1 == eth0。就像我在文件中所做的更改一样,该更改不会被应用。我在/etc/udev/rules.d/中没有rename5的任何痕迹。我了解的是内核引导eth0和eth1引导时,而udev切换它们。eth0 => eth1和eth1 => eth0
雨果

您找到解决方案了吗?我也在这个问题上挣扎。在正常启动时,我最终遇到了p1p1和p1p2。但是由于我已经将p1p2上的网络电缆插入某个引导程序(不是全部,这很奇怪),所以我最终得到p1p1并重命名3!?!?无论出于何种原因,Udev都将eth1重命名为named3而不是p1p2。这当然会破坏网络I / F配置和防火墙X-(并不是说我在Ubuntu上
惠更斯(Huygens)2014年

Answers:


9

虽然这很晚了,但我通过删除

KERNEL="eth*",

/etc/udev/rules.d/70-persistent-net.rules文件中规则的一部分。之所以起作用,是因为一旦UDEV将设备重命名为“ rename *”,该部分将停止规则匹配。因此,删除它允许将正确的名称分配给正确的设备,而不管UDEV同时调用了什么名称。


这也在ubuntu 14.04上为我解决了。行为与OP完全相同(只是重命名为pXpY)。
ndemou

9

就我而言,问题来自每个接口的mac地址都设置在三个文件中:

/etc/udev/rules.d/70-persistent-net.rules
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1

我们需要ifcfg文件和mac.net的net.rules之间的一致性。


1
/etc/sysconfig在redhat / centos linux上。在Ubuntu上,这些文件位于/etc/network/if-up.d
nmgeek '16

6

我能够通过简单地删除/etc/udev/rules.d/70-persistent-net.rules并重新启动来解决此问题。


1

您是否尝试过创建空白/etc/udev/rules.d/80-net-name-slot.rules

从Udev v197开始,udev已经实现了可预测的网络接口名称,通过在该路径中创建一个空白文件然后重新启动,您应该将接口名称恢复为原来的名称。

我在回答了类似的问题: Creating eth0 with consistent network device naming


1
这修复了我的三个网络设备中的两个。我创建了一个指向/ dev / null的链接,而不是空白文件。我希望这两种方法都能奏效。
MrMas '16

像这看起来是该文件已经从systemd如果我读这正确地被删除周围V210变化:github.com/systemd/systemd/commit/...
nhed

0

也可能发生这种情况,因为eth0,eth1,wlan0,wlan1等是标准内核名称(在非持久性方案命名的情况下)。在udev文档中说:

名称

用于网络接口的名称。有关设置接口名称的高级机制,请参见systemd.link(5)。设备节点的名称不能由udev 更改,只能创建其他符号链接。

因此,切勿在udev规则中使用eth *,wlan *等名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.