CentOS 7 - 无需重启即可重命名网络接口

udo*_*dan 25 configuration centos network-interface

我正在通过修改/etc/sysconfig/network-scripts.

  • eth0 -> nic0
  • eth1 -> nic1

修改后的网络脚本内容如下:

# cat /etc/sysconfig/network-scripts/ifcfg-nic0
DEVICE=nic0
BOOTPROTO=static
ONBOOT=yes
HWADDR=xx:xx:xx:xx:xx:xx
USERCTL=no
IPV6INIT=no
MASTER=bond0
SLAVE=yes
Run Code Online (Sandbox Code Playgroud)

重新启动会激活新配置。但是如何在重新启动的情况下激活此配置?

Asystemctl restart network不起作用。

我可以按旧名称 ( ifdown eth0)关闭一个接口,但ifup无论提供旧名称还是新名称,都会导致以下消息:

错误:[/etc/sysconfig/network-scripts/ifup-eth] 设备 nic0 似乎不存在,延迟初始化。

/etc/init.d/network status 显示此输出:

Configured devices:
lo bond0 nic0 nic1
Currently active devices:
lo eth0 eth1 bond0
Run Code Online (Sandbox Code Playgroud)

两者,ifconfigip a显示旧的接口名称。

Jam*_*wey 40

您可以使用 ip 命令重命名设备:

/sbin/ip link set eth1 down
/sbin/ip link set eth1 name eth123
/sbin/ip link set eth123 up
Run Code Online (Sandbox Code Playgroud)

编辑

为了完整性和后代(以及为了信息目的),我将保留以下内容,但我已经确认了swill 的评论Marco Macuzzo 的回答,即简单地更改接口的名称和设备 /etc/sysconfig/network-scripts/ifcfg-只要 hwaddr= 字段包含在配置文件中, eth0(并重命名文件)将导致设备被正确命名我建议在引用更新后使用此方法。

您可能还想确保配置了 udev 规则,以便下次重新启动时也能使用。udev 的路径在 CentOS 7 中移动到 /usr/lib/udev/rules.d/60-net.rules 但你仍然可以用同样的方式管理它。如果您将“net.ifnames=0 biosdevname=0”添加到您的内核引导字符串以返回到您的 nics 的旧命名方案,您可以删除

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"
Run Code Online (Sandbox Code Playgroud)

并将其替换为

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:3f:a7", NAME="eth123"
Run Code Online (Sandbox Code Playgroud)

每个网卡需要一个条目。确保使用正确的 MAC 地址并更新 NAME 字段。如果您没有使用“net.ifnames=0 biosdevname=0”,请小心,因为可能会出现意想不到的后果。

  • 只是关于这一点的说明。如果您使用的是 CentOS 7.3,则这不起作用。这是因为这个问题 (https://access.redhat.com/solutions/2592561)。您将不得不覆盖在`/etc/udev/rules.d/90-eno-fix.rules` 的文件,因为它覆盖了所有以前工作的解决方案来重命名网络设备。 (2认同)

小智 13

实际上,我认为最好的答案是已经发布的两个答案的组合。为了在不重新启动网络服务的情况下更改设备名称,请使用ip linkJames Shewey ( ip link set <old_device_name> name <new_device_name>)建议的命令。

要使更改在 Red Hat Linux 中重新启动后仍然有效,请修改/etc/sysconfig/network-scripts/. 将文件重命名ifcfg_<old_device_name>ifcfg_<new_device_name>并将DEVICE里面的变量更改为<new_device_name>. 此外,请确保HWADDR变量已设置且正确。不需要触及 udev 规则,因为60-net.rules实际上在那里读取/etc/sysconfig/network-scripts.


小智 6

ip link set ens33 down
ip link set ens33 name eth0
ip link set eth0 up

mv /etc/sysconfig/network-scripts/ifcfg-{ens33,eth0}

sed -ire "s/NAME=\"ens33\"/NAME=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

sed -ire "s/DEVICE=\"ens33\"/NAME=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

MAC=$(cat /sys/class/net/eth0/address)

echo -n 'HWADDR="'$MAC\" >> /etc/sysconfig/network-scripts/ifcfg-eth0
Run Code Online (Sandbox Code Playgroud)