2026/7/12

异常的原因 :

我的.ova文件导入之后没有出现vmware的"迁移虚拟机提示", 所以我导入之后的虚拟机的MAC地址变化了, 原先那些机器的IP地址是写入配置文件里的, 但是我的vmware启动之后发现现在的MAC地址与配置文件的MAC地址不相等, 所以原先靶场作者的写入文件的配置规则就没有生效, 通过指令 nmcli connetcion 可以发现有未被激活的 连接配置, 那些就是因为MAC地址与配置文件中的不匹配所被遗弃的靶场作者的 配置规则 , 所以 nmcli 没有使用这些MAC不符合而被遗弃的方案, 并且新创建了配置并且使用了DHCP, 这才导致了Target使用的 IP 不同于 之前所配置的静态IP

kimi总结的IP更改流程 (推荐在这之前先学习下 nmcli 涉及的概念, 网卡设备device 和 连接connection 等等的概念,区别等等) :

没问题!以下是为你整理的完整教程,你可以直接复制到文章里。


CentOS (Target1) 静态 IP 配置不生效排查:MAC 地址绑定导致 NetworkManager 拒绝激活

一、问题现象

靶机(或虚拟机)要求配置两个静态 IP:

  • ens33192.168.1.11/24
  • ens37192.168.22.11/24

但登录后发现实际 IP 是 DHCP 动态获取的:

[root@localhost ~]# ip addr
# ens33 实际 IP: 192.168.1.4/24  (DHCP)
# ens37 实际 IP: 192.168.22.1/24 (DHCP)

nmcli con show 能看到配置好的连接,但 DEVICE 列显示 --,说明配置存在但未被激活

二、问题根因

MAC 地址不匹配导致 NetworkManager 拒绝激活。

这个靶机是从别的虚拟机克隆/复制过来的,原虚拟机的网卡 MAC 地址和新环境不同。NetworkManager 的连接配置文件(ifcfg)里通过 HWADDR802-3-ethernet.mac-address 绑定了旧 MAC,当实际网卡 MAC 不一致时,NM 认为该连接"不兼容此设备",拒绝激活。

结果:

  • 网卡 fallback 到自动生成的 DHCP 连接("有线连接 2"、"有线连接 3")
  • 静态 IP 配置被"雪藏",系统显示的是 DHCP 动态 IP

三、排查过程

步骤 1:查看当前连接状态

nmcli con

输出:

NAME        UUID                                  TYPE      DEVICE 
有线连接 2  82ef3cf3-8920-3752-be37-6a0dd50c357f  ethernet  ens33  
有线连接 3  5ef62781-f249-3fb3-8826-c0b938b14d27  ethernet  ens37  
ens33       321527af-7fd1-48b4-87bf-f9f660bfd5c7  ethernet  --     
有线连接 1  a18a03de-36a2-36a2-8514-0232129b08b0  ethernet  --     

发现ens33有线连接 1DEVICE--,说明它们没被激活。

步骤 2:查看未激活连接的配置

nmcli con show ens33
nmcli con show "有线连接 1"

发现:

  • ens33 配置了 192.168.1.11/24,但 802-3-ethernet.mac-address00:0C:29:81:A6:6D
  • 有线连接 1 配置了 192.168.22.11/24,但 802-3-ethernet.mac-address00:0C:29:81:A6:77

步骤 3:对比实际网卡 MAC

ip addr

实际 MAC:

  • ens3300:0c:29:37:0f:f3
  • ens3700:0c:29:37:0f:fd

结论:配置文件里的 MAC 和实际网卡 MAC 不一致,导致连接无法激活。

步骤 4:在配置文件目录搜索确认

grep -r "192.168.22.11" /etc/sysconfig/network-scripts/ 2>/dev/null
# 输出:/etc/sysconfig/network-scripts/ifcfg-有线连接_1:IPADDR=192.168.22.11

确认配置存在,只是没生效。

四、解决方案

核心思路:移除连接配置文件中的 MAC 地址绑定,让 NetworkManager 根据网卡接口名(ens33/ens37)来匹配,而非 MAC 地址。

修复 ens33(192.168.1.11)

# 1. 移除 MAC 地址绑定
nmcli con mod ens33 802-3-ethernet.mac-address ""

# 2. 指定使用 ens33 接口
nmcli con mod ens33 connection.interface-name ens33

# 3. 激活连接
nmcli con up ens33

⚠️ 注意:如果当前 SSH 是通过 ens33 的 DHCP IP(如 192.168.1.4)连接的,执行 nmcli con up ens33 会切换 IP 到 192.168.1.11,可能导致 SSH 断开。请确保你能通过 192.168.1.11 访问,或在虚拟机控制台操作。

修复 ens37(192.168.22.11)

# 1. 移除 MAC 地址绑定
nmcli con mod "有线连接 1" 802-3-ethernet.mac-address ""

# 2. 指定使用 ens37 接口
nmcli con mod "有线连接 1" connection.interface-name ens37

# 3. 激活连接
nmcli con up "有线连接 1"

💡 如果通过 ens33 远程 SSH,修改 ens37 不会断开连接,可以放心操作。

备用方案:直接修改 ifcfg 文件

如果 nmcli con mod 因版本兼容报错,可直接编辑配置文件:

# 编辑 ens33 配置
sed -i 's/^HWADDR=.*/#HWADDR=旧MAC地址/' /etc/sysconfig/network-scripts/ifcfg-ens33

# 编辑 有线连接 1 配置
sed -i 's/^HWADDR=.*/#HWADDR=旧MAC地址/' /etc/sysconfig/network-scripts/ifcfg-有线连接_1

# 重新加载并激活
nmcli con reload
nmcli con up ens33
nmcli con up "有线连接 1"

五、验证结果

ip addr

预期输出:

2: ens33: ... inet 192.168.1.11/24 ...
3: ens37: ... inet 192.168.22.11/24 ...
nmcli con show --active

预期输出:

NAME        UUID  TYPE      DEVICE 
ens33       ...   ethernet  ens33  
有线连接 1  ...   ethernet  ens37  

六、总结与预防

问题

原因

解决

配置了静态 IP 但 ip addr 显示 DHCP IP

连接配置文件绑定了错误的 MAC 地址,NM 拒绝激活

移除 HWADDR/mac-address 绑定,指定 interface-name 后重新激活

预防建议

  1. 克隆虚拟机后,如果网卡重新生成(MAC 变化),记得检查并更新网络配置中的 HWADDR
  2. 或者,在配置静态 IP 时不绑定 MAC 地址,只通过 interface-name(如 ens33)来关联,避免克隆后失效。
  3. 使用 nmcli 管理配置而非直接编辑 ifcfg 文件,可以减少此类兼容性问题。

完成于2026/7/12

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐