解决网卡重启失败的问题(centos7)

操作系统:centos7

背景:重启虚拟机后发现内网ip消失,导致连接工具无法连接到虚拟机中

解决方法:

先尝试刷新网卡:

nmcli con up ens33

尝试重启网卡:

systemctl restart network

重启后还不行的话,可以考虑是否是与另外一个网卡服务冲突:

systemctl stop NetworkManager

如果使用停止另外一个网卡后可以了,那么就可以将这个网卡永久停止掉:

systemctl disable NetworkManager

ps:在尝试过程中也可以尝试查看ip配置是否有问题:

/etc/sysconfig/network-scripts/ifcfg-ens33

<think>我们正在解决CentOS9虚拟机每次启动后需要手动重启网卡问题。根据用户提供的引用和之前的知识,我们可以总结出以下关键点:1.在CentOS7中,常见原因是NetworkManager服务与传统network服务冲突,以及网卡配置文件中的ONBOOT设置。2.在CentOS9中,同样可能存在类似问题,但CentOS9已经使用NetworkManager作为默认网络管理工具,因此可能需要不同的方法。然而,用户明确提到是CentOS9,所以我们需要注意CentOS9的变化。CentOS9基于RHEL9,网络配置通常使用NetworkManager,并且传统的network服务可能已被弃用。根据引用[1][2]中的经验,关闭NetworkManager在CentOS7中有效,但在CentOS9中可能不是最佳做法,因为NetworkManager是推荐的管理工具。因此,我们需要调整策略:**可能的原因及解决方案:**1.**网卡配置文件中的ONBOOT设置**:确保网卡配置文件中的`ONBOOT=yes`。在CentOS9中,网卡配置文件通常位于`/etc/sysconfig/network-scripts/`目录下,但请注意,从RHEL/CentOS8开始,传统的ifcfg文件方式仍然可用,但推荐使用NetworkManager的keyfile方式(存储在`/etc/NetworkManager/system-connections/`)。2.**NetworkManager管理网卡**:确保NetworkManager服务已启用并运行,并且网卡由NetworkManager管理。3.**检查NetworkManager的自动连接设置**:在NetworkManager的配置中,确保网卡被设置为自动连接。4.**检查虚拟机设置**:在虚拟机软件(如VMware或VirtualBox)中,确保虚拟网卡设置为“已连接”和“启动时连接”。**具体步骤:**###1.检查网卡配置文件首先,我们需要确认网卡配置文件中的`ONBOOT`设置为`yes`。```bash#查看网卡配置文件,例如ifcfg-ens33(具体网卡名可能不同)cat/etc/sysconfig/network-scripts/ifcfg-ens33```如果存在该文件,确保其中有:```iniONBOOT=yes```如果没有,请编辑该文件并设置。注意:在CentOS9中,如果没有传统的ifcfg文件,那么网卡配置可能由NetworkManager通过keyfile管理。我们可以使用`nmcli`命令来修改配置。###2.使用nmcli命令设置网卡自动连接如果使用NetworkManager,我们可以通过以下命令设置网卡在启动时自动连接:```bash#查看网络连接nmcliconnectionshow#设置对应连接自动连接(例如,连接名是ens33)nmcliconnectionmodifyens33connection.autoconnectyes```###3.启用并启动NetworkManager服务确保NetworkManager服务已启用并启动:```bashsudosystemctlenable--nowNetworkManager```###4.重启NetworkManager服务修改配置后,重启NetworkManager服务:```bashsudosystemctlrestartNetworkManager```###5.检查虚拟机设置在虚拟机软件中,确保虚拟机的网络适配器设置为“启动时连接”。例如,在VMware中:-打开虚拟机设置-选择网络适配器-确保“启动时连接”被勾选###6.检查网卡是否被NetworkManager托管如果网卡未被托管,可以修改NetworkManager的配置文件:```bashsudovi/etc/NetworkManager/NetworkManager.conf```在`[main]`部分添加或修改:```ini[main]plugins=keyfile[keyfile]unmanaged-devices=none```然后重启NetworkManager。###7.验证重启虚拟机,然后检查网卡是否自动启动:```bashipa```如果网卡仍然没有启动,可以查看日志:```bashjournalctl-uNetworkManager```###8.如果仍然使用传统network服务(不推荐)虽然CentOS9默认使用NetworkManager,但如果你仍然想使用传统的network服务,可以尝试:```bash#启用network服务(但注意可能与NetworkManager冲突)sudosystemctlenablenetwork```但请注意,在CentOS9中,传统的network服务可能已经被废弃,因此建议优先使用NetworkManager。###总结步骤流程图```mermaidgraphTDA[启动虚拟机]-->B{网卡是否自动启动?}B--否-->C[检查网卡配置文件ONBOOT=yes]C-->D[使用nmcli设置自动连接]D-->E[检查NetworkManager服务状态]E-->F[检查虚拟机设置]F-->G[修改NetworkManager.conf托管所有设备]G-->H[重启NetworkManager]H-->I[重启虚拟机验证]B--是-->J[问题解决]```###相关问题§§相关问题§§1.如何在CentOS9中完全禁用NetworkManager并使用传统network服务?2.如何配置CentOS9的NetworkManager使用静态IP地址?3.虚拟机迁移后NetworkManager不识别网卡怎么办?4.如何使用nmcli命令管理CentOS9的网络连接?</think>### 解决 CentOS 9 虚拟机每次启动需手动重启网卡问题 #### 📌 **核心原因分析** 1. **NetworkManager 服务冲突**:与传统 network 服务竞争控制权[^1][^2] 2. **网卡未设置开机自启**:`ONBOOT=no` 导致系统忽略网卡[^1] 3. **MAC 地址不匹配**:虚拟机迁移后网卡 MAC 变化导致配置失效[^2] 4. **服务启动顺序错误**:NetworkManager 优先于 network 服务启动 --- ### 🔧 **完整解决方案**(CentOS 9 专用) #### 1. **修改网卡配置文件** ```bash sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33 ``` 确保包含以下关键参数: ```ini TYPE=Ethernet BOOTPROTO=static # 或 dhcp ONBOOT=yes # 必须设为 yes[^1][^2] DEFROUTE=yes IPADDR=192.168.1.100 # 你的静态 IP NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 HWADDR=00:0c:29:xx:xx:xx # 用 ip link 查真实 MAC ``` > ✨ **关键点**: > - 通过 `ip link` 获取当前 MAC 地址填入 `HWADDR` > - 若使用 DHCP,保留 `BOOTPROTO=dhcp` 并删除静态 IP 参数 #### 2. **禁用 NetworkManager 服务** ```bash sudo systemctl disable NetworkManager --now # 禁用并立即停止[^1][^2] ``` #### 3. **启用传统 network 服务** ```bash sudo systemctl enable network # 设置开机自启 sudo systemctl start network # 立即启动 ``` #### 4. **修复 NetworkManager 托管状态**(可选) 编辑配置文件解决 *"device is strictly unmanaged"* 错误: ```bash sudo vi /etc/NetworkManager/NetworkManager.conf ``` 添加以下内容: ```ini [keyfile] unmanaged-devices=none # 允许管理所有设备[^3] ``` #### 5. **重建网卡配置**(针对克隆/迁移的虚拟机) ```bash sudo rm /etc/udev/rules.d/70-persistent-net.rules # 删除旧 MAC 记录 sudo systemctl restart systemd-udevd # 重载设备规则 ``` #### 6. **验证与测试** ```bash # 检查服务状态 systemctl status network # 查看网卡是否自启 ip addr show ens33 # 测试网络连通性 ping -c 4 8.8.8.8 # 重启验证 sudo reboot ``` --- ### ⚠️ **故障排除指南** | 现象 | 解决方案 | |------|----------| | `Job for network.service failed`[^4] | 执行 `sudo /etc/init.d/network restart`[^3] | | 网卡消失不见 | 检查虚拟机设置中的网卡连接状态[^1] | | 配置修改无效 | 运行 `sudo nmcli conn reload` 重载配置 | ```mermaid graph LR A[虚拟机启动] --> B{网卡是否正常?} B -- 否 --> C[检查 ONBOOT=yes] C --> D[禁用 NetworkManager] D --> E[重建 MAC 记录] E --> F[重启 network 服务] B -- 是 --> G[检查 DNS/Gateway] G --> H[完成] ``` > 💡 **终极方案**:若仍失败,重建网卡配置: > ```bash > sudo nmcli conn delete ens33 > sudo nmcli conn add type ethernet con-name ens33 ifname ens33 > ``` --- ### 📚 **相关问题** 1. 如何为多台 CentOS 9 虚拟机批量修改网卡配置? 2. 虚拟机迁移后如何避免 MAC 地址冲突导致网络失效? 3. 在 CentOS 9 中 NetworkManager 与 network 服务能否共存? 4. 如何通过日志诊断网卡启动失败原因?(`journalctl -u network`)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值