Linux网卡多IP问题排查与清理

Linux网卡(如ens33)出现预期之外的IP地址,通常是由于静态配置文件、NetworkManager动态管理或临时命令添加等多种配置来源叠加所致。核心解决思路是:识别并清理所有非预期的IP地址配置源,确保网络配置的唯一性和一致性。以下是详细排查与修复步骤。

###1. 诊断问题:确认IP地址来源

首先,使用 ip 命令查看当前生效的IP地址,并与配置文件进行比对。

bash 复制代码
# 查看ens33网卡当前所有IP地址
ip addr show ens33

假设输出显示两个IP: 192.168.10.20/24(预期)和 192.168.120.128/24(非预期)。接下来,需从以下几个层面排查非预期IP的来源。

排查方向 检查命令 预期结果/说明
1. 静态配置文件 cat /etc/sysconfig/network-scripts/ifcfg-ens33 应只包含 IPADDR=192.168.10.20。若存在多个IPADDRIPADDR1等,即为来源。
2. 网卡别名文件 ls /etc/sysconfig/network-scripts/ifcfg-ens33:* 若存在 ifcfg-ens33:0 等文件,其内配置的IP即为来源。
3. NetworkManager配置 `nmcli connection show ens33 grep ipv4.addresses`
192.168.10.20/24, 192.168.120.128/24`),则是NetworkManager管理的来源。
4. 临时添加的地址 ip addr show ens33 直接查看 若地址存在但上述持久化配置中均无,则可能是通过 ip addr add 临时添加的,重启会消失。

2. 解决方案:清理多余IP地址

根据诊断结果,采取相应措施。建议按以下顺序操作,以确保彻底清理。

####步骤一:临时删除当前多余IP

无论来源如何,先移除当前生效的非预期IP。

bash 复制代码
# 删除非预期的IP地址(请替换为你的实际地址)
sudo ip addr del 192.168.120.128/24 dev ens33
# 再次确认ip addr show ens33

步骤二:修正持久化配置

这是防止重启后问题复现的关键。

A. 清理静态配置文件 (ifcfg-ens33)

确保 /etc/sysconfig/network-scripts/ifcfg-ens33 文件中只保留一个 IPADDR 配置,并且 BOOTPROTO=none

bash 复制代码
# 编辑配置文件
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33

检查并确保关键配置行如下(示例):

bash 复制代码
BOOTPROTO=none
IPADDR=192.168.10.20
PREFIX=24
GATEWAY=192.168.10.1
DNS1=192.168.10.1
DEFROUTE=yes
ONBOOT=yes

B. 删除网卡别名配置文件

如果存在类似 ifcfg-ens33:0 的文件,直接删除或备份。

bash 复制代码
# 查找并删除别名配置文件
sudo rm -f /etc/sysconfig/network-scripts/ifcfg-ens33:*

C. 统一由NetworkManager管理并修正配置

如果系统使用NetworkManager,这是最推荐的管理方式。使用 nmcli 命令修正连接配置,它会自动同步到 ifcfg-ens33 文件。

bash 复制代码
# 1. 修改ens33连接,只设置一个IP地址(例如192.168.10.20/24)
sudo nmcli connection modify ens33 ipv4.addresses 192.168.10.20/24
# 2. 设置网关(如果需要)
sudo nmcli connection modify ens33 ipv4.gateway 192.168.10.1
# 3. 设置DNS(如果需要)
sudo nmcli connection modify ens33 ipv4.dns "192.168.10.1"
# 4. 将IPv4方法设置为manual(静态)
sudo nmcli connection modify ens33 ipv4.method manual
# 5. 重新激活连接以使更改生效
sudo nmcli connection up ens33

D.处理NetworkManager与network服务冲突

如果系统同时启用了 NetworkManagernetwork 服务,它们可能冲突导致配置混乱。建议禁用 network 服务,由 NetworkManager 全权管理。

bash 复制代码
# 停止并禁用传统的network服务
sudo systemctl stop network
sudo systemctl disable network
# 确保NetworkManager服务已启用并运行
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager

步骤三:重启网络并验证

应用所有更改后,进行重启验证。

bash 复制代码
# 重启NetworkManager服务(如果使用了它)
sudo systemctl restart NetworkManager
# 或者,如果未使用NetworkManager,重启network服务
# sudo systemctl restart network

# 最终确认ens33网卡的IP地址
ip addr show ens33

此时,ens33 应只显示你配置的静态IP地址(如 192.168.10.20/24)。

3. 预防措施与最佳实践

  1. 配置管理统一化 :选择一种网络管理工具(NetworkManagernetwork-scripts),并避免混合使用,这是防止配置冲突的根本。
  2. 慎用临时命令 :使用 ip addr add 添加的IP地址在重启后会失效,仅用于临时测试。永久性配置务必通过配置文件或 nmcli 进行。
  3. 虚拟机环境注意:在VMware等虚拟化环境中,确保虚拟机网络适配器处于连接状态,并选择正确的网络模式(如NAT或桥接)。
  4. 服务状态检查 :当网络出现异常时,首先检查 NetworkManagernetwork 服务的运行状态 (systemctl status NetworkManager),这是排查的起点。

参考来源

相关推荐
何事误红尘1 分钟前
全志A40i学习笔记():开发资料、启用串口
学习
for_ever_love__17 分钟前
python基础语法学习: 异常的传递性
开发语言·python·学习
PC2005-cloud1 小时前
DeepSeek Harness 创建 skill 指南:结构、安装、使用
笔记·学习
YM52e1 小时前
分页查询的基石:ArkTS 为鸿蒙商品列表设计 LIMIT/OFFSET 的表
android·学习·华为·harmonyos
allforgood1 小时前
运行容器
linux
math_hongfan1 小时前
主从嵌套层次分明:ArkUI 订单卡片内嵌明细的鸿蒙界面
学习·华为·harmonyos
Light_It2 小时前
Linux 内核参数 pci-stub.ids=
linux·kernel
RisunJan2 小时前
Linux命令-scriptreplay(终端会话回放)
linux·运维·chrome
spencer_tseng3 小时前
[kylin & linux] install docker
linux·docker·kylin
还不秃顶的计科生3 小时前
具身智能论文学习8:Octo: An Open-Source Generalist Robot Policy
人工智能·深度学习·学习·机器学习·语言模型·vla·vlm