![CentOS 7 - 无需重新启动即可重命名网络接口](https://linux22.com/image/65558/CentOS%207%20-%20%E6%97%A0%E9%9C%80%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E5%8D%B3%E5%8F%AF%E9%87%8D%E5%91%BD%E5%90%8D%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3.png)
我通过修改/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 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
两者,ifconfig
并ip 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 link
James 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"
当然,要重新加载的驱动程序取决于您的接口。