虚拟机更改网卡名称

本文介绍在VMWare虚拟机的CentOS系统中更改网卡名称的方法。因自带网卡名混乱,需重新定义。先介绍了VMWare虚拟机及最小化安装的系统环境,接着阐述配置步骤,包括更改网卡配置文件名、关闭‘一致性网络设备命名法’、添加设备规则配置文件,最后重启系统。

虚拟机更改网卡名称

VMWare装的CentOS虚拟机的自带网卡名有点乱,想重新定义一下。

 

环境

1、VMWare虚拟机

 

2、系统

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)

并且是最小化安装。

网卡信息

 

网卡配置文件

 

配置内容

 

这里启动下网卡,获得IP,好连接shell

systemctl restart network
ip addr

默认使用DHCP,都是自动获取的IP

 

配置

CentOS7使用了“一致性网络命名方法”,这里举例,将网卡名截断为前5个字符,如eno16777736改为eno16。

1、更改网卡配置文件名

复制ETH1和2,并把设备名改了
 

2、关闭“一致性网络设备命名法”

 cat /etc/sysconfig/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
[root@localhost ~]# 

添加net.ifnames=0 biosdevname=0后

cat /etc/sysconfig/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

更新GRUB、内核配置

 grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-f034e6e19df748b7a27fad77b06e3179
Found initrd image: /boot/initramfs-0-rescue-f034e6e19df748b7a27fad77b06e3179.img
done

3、添加设备规则配置文件

修改/etc/udev/rules.d/70-persistent-net.rules,没有该文件则新建文件

内容如下

cat /etc/udev/rules.d/70-persistent-net.rules

# ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="32", ATTR{address}=="?*00:02:c9:03:00:31:78:f2", NAME="mlx4_ib3"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="?*00:02:c9:03:00:31:78:f2", NAME="eth0"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="?*00:02:c9:03:00:31:78:f2", NAME="eth1"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="?*00:02:c9:03:00:31:78:f2", NAME="eth2"

注意MAC地址与NAME相匹配(可以用ip addr查看)

4、重启

reboot

 

### PVE虚拟机网卡名称变化固定配置解决方案 在 Proxmox VE 中,当虚拟机启动时,可能会遇到网络接口名称发生变化的情况。这种现象通常由 udev 或者 Linux 内核的预测性网络接口命机制引起[^1]。为了防止这种情况发生,可以通过以下方法来固定网络接口名称。 #### 方法一:禁用预测性网络接口命 现代 Linux 发行版默认启用了预测性网络接口命(Predictable Network Interface Names),这可能导致每次重启后网卡名称不同。可以通过修改引导参数禁用此功能: 1. 编辑 GRUB 配置文件 `/etc/default/grub`: ```bash sudo nano /etc/default/grub ``` 2. 找到 `GRUB_CMDLINE_LINUX_DEFAULT` 行,在其末尾添加 `net.ifnames=0 biosdevname=0` 参数。例如: ```bash GRUB_CMDLINE_LINUX_DEFAULT="quiet splash net.ifnames=0 biosdevname=0" ``` 3. 更新 GRUB 并重新启动系统: ```bash sudo update-grub sudo reboot ``` 完成以上操作后,系统的网络接口会恢复为传统的 ethX 命方式[^1]。 --- #### 方法二:使用udev规则绑定MAC地址与特定设备名称 如果希望保留预测性网络接口命的同时固定网卡名称,可以利用 udev 创建自定义规则将 MAC 地址映射到固定的设备名称。 1. 查看当前网卡及其对应的 MAC 地址: ```bash ip link show ``` 2. 创建一个新的 udev 规则文件 `/etc/udev/rules.d/70-persistent-net.rules`,并将每张网卡与其 MAC 地址关联起来。例如: ```plaintext SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0" SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="yy:yy:yy:yy:yy:yy", NAME="eth1" ``` 替换 `xx:xx:xx:xx:xx:xx` 和 `yy:yy:yy:yy:yy:yy` 为实际的 MAC 地址。 3. 重载 udev 规则并验证更改: ```bash sudo udevadm control --reload-rules && sudo udevadm trigger ``` 4. 检查新分配的设备名称是否生效: ```bash ip addr show ``` 这种方法适用于需要精确控制每个网卡名称的场景[^1]。 --- #### 方法三:调整PVE中的QEMU/KVM设置 有时,虚拟机内部的网络接口名称混乱可能源于 QEMU/KVM 的硬件仿真行为。可以在 PVE 主机上手动指定虚拟机的 PCI 插槽顺序以保持一致性。 1. 登录 PVE Web 界面,选择目标虚拟机。 2. 进入 **Hardware** 页面,找到所有已附加的网络适配器。 3. 使用拖放功能调整它们的位置,确保插槽编号按预期排列。 4. 如果必要,编辑虚拟机的 XML 文件 (`virsh edit`) 来显式设定 `<interface>` 元素的属性。 注意:此方法仅影响虚拟机外部的硬件布局,并不会直接影响 guest OS 对网卡的实际识别逻辑[^1]。 --- #### 注意事项 - 上述三种方法可以根据具体需求单独或者组合应用; - 修改前建议备份重要数据以防万一出现问题无法回滚; - 若仍然存在异常情况,则需进一步排查是否有其他因素干扰正常工作流程[^2]。 ```python # 示例脚本:批量生成udev规则 mac_addresses = ["aa:bb:cc:dd:ee:ff", "11:22:33:44:55:66"] with open("/etc/udev/rules.d/70-persistent-net.rules", "w") as f: for idx, mac in enumerate(mac_addresses): rule = 'SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="{}", NAME="eth{}"\n'.format(mac, idx) f.write(rule) print("UDEV rules generated successfully.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值