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

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

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

  • eth0 -> 网卡0
  • eth1 -> 网卡1

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

# 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

重启即可激活新配置。但我该如何激活此配置没有重新启动?

Asystemctl restart network没有做到这一点。

我可以通过旧名称 ( ) 关闭一个接口,ifdown eth0ifup无论提供旧名称还是新名称,都会出现以下消息:

错误:[/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

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

答案1

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

/sbin/ip link set eth1 down
/sbin/ip link set eth1 name eth123
/sbin/ip link set eth123 up

编辑:

为了完整性和后代(以及为了提供信息的目的),我将保留以下内容,但我已经确认泔水的评论马可·马库佐的回答只需更改接口 /etc/sysconfig/network-scripts/ifcfg-eth0 的名称和设备(并重命名文件)即可正确命名设备只要配置文件中包含 hwaddr= 字段即可。我建议在引用的更新之后使用此方法。

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

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"

并将其替换为

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:50:56:8e:3f:a7", NAME="eth123"

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

答案2

实际上,我认为最好的答案是已经发布的两个答案的组合。为了在不重新启动网络服务的情况下更改设备名称,请使用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实际上是在那里读取 中的 ifcfg 配置文件/etc/sysconfig/network-scripts

答案3

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\"/DEVICE=\"eth0\"/" /etc/sysconfig/network-scripts/ifcfg-eth0

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

echo -n 'HWADDR="'$MAC\" >> /etc/sysconfig/network-scripts/ifcfg-eth0

答案4

@James Shewey 给出的答案似乎是正确的方法。

如果您只想使用配置文件/etc/sysconfig/network-scripts,然后触发重新加载,则如 @Tom Hunt 在评论中提到的那样卸载和加载内核模块也可以:

service network stop
modprobe -r igb
modprobe igb
service network start

如果您远程访问计算机,请确保在 nohup 中运行所有命令,否则您将把自己锁在外面:

nohup sh -c "service network stop && modprobe -r igb && modprobe igb ; service network start"

当然,要重新加载的驱动程序取决于您的接口。

相关内容