CentOS 10 配置静态 IP:NetworkManager、nmcli 与 VMware VMnet8 NAT 说明
本文由 AI 工具 Hermes 辅助整理生成,内容基于本人提供或公开信息汇总。本人已对内容进行确认。
一、为什么 CentOS 10 里找不到 network-scripts
在 CentOS 7 或一些早期 Linux 教程里,经常会看到这样的网卡配置路径:
/etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts/ifcfg-eth0
但是在 CentOS Stream 10 / RHEL 10 这一代里,这种老式 ifcfg 配置方式已经不再推荐,也不再作为默认网络配置方式使用。现在系统主要通过 NetworkManager 管理网络连接。
新的连接配置文件一般保存在:
/etc/NetworkManager/system-connections/
所以在 /etc/sysconfig/ 下面看不到 network-scripts,不是系统安装坏了,而是网络管理方式变了。
简单来说:
CentOS 7 常见方式:/etc/sysconfig/network-scripts/ifcfg-*
CentOS 10 推荐方式:NetworkManager + nmcli / nmtui / .nmconnection
二、先查看当前网卡名称
进入系统后,先查看网卡状态:
nmcli device status
示例输出:
DEVICE TYPE STATE CONNECTION
ens33 ethernet 已连接 ens33
lo loopback 连接(外部) lo
这里真正需要配置的是 ens33。
lo 是本机回环网卡,地址通常是 127.0.0.1,不需要配置。
三、CentOS 10 使用 nmcli 配置静态 IP
假设当前环境如下:
网卡名称:ens33
静态 IP:192.168.233.129
子网掩码:255.255.255.0
CIDR 写法:/24
网关:192.168.233.2
DNS:114.114.114.114、8.8.8.8
可以直接执行:
nmcli con mod ens33 ipv4.addresses 192.168.233.129/24 ipv4.gateway 192.168.233.2 ipv4.dns "114.114.114.114 8.8.8.8" ipv4.method manual autoconnect yes
nmcli con up ens33
说明:
con:connection 的缩写
mod:modify 的缩写
ipv4.addresses:IPv4 地址和掩码
ipv4.gateway:网关
ipv4.dns:DNS 服务器
ipv4.method manual:手动配置,也就是静态 IP
autoconnect yes:开机自动连接
也可以写成多行命令:
nmcli connection modify ens33 ipv4.addresses 192.168.233.129/24
nmcli connection modify ens33 ipv4.gateway 192.168.233.2
nmcli connection modify ens33 ipv4.dns "114.114.114.114 8.8.8.8"
nmcli connection modify ens33 ipv4.method manual
nmcli connection modify ens33 connection.autoconnect yes
nmcli connection up ens33
注意:建议先设置 ipv4.addresses,再设置 ipv4.method manual。如果先执行:
nmcli connection modify ens33 ipv4.method manual
可能会出现类似错误:
ipv4.method: method 'manual' requires at least an address or a route
这是因为 NetworkManager 要求手动模式下至少要有一个地址或路由。
四、如何确认已经是静态 IP
查看连接的 IPv4 配置:
nmcli con show ens33 | grep ipv4
重点看这一项:
ipv4.method: manual
如果是 manual,说明当前连接是静态 IP。
如果是:
ipv4.method: auto
说明还是 DHCP 自动获取。
也可以只看方法:
nmcli con show ens33 | grep ipv4.method
期望结果:
ipv4.method: manual
五、查看当前 IP、网关和 DNS
查看网卡 IP:
ip addr show ens33
或者:
ifconfig
示例:
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.233.129 netmask 255.255.255.0 broadcast 192.168.233.255
查看网关:
ip route
正常情况下会看到类似:
default via 192.168.233.2 dev ens33
192.168.233.0/24 dev ens33 proto kernel scope link src 192.168.233.129
查看 DNS:
cat /etc/resolv.conf
可能会看到:
nameserver 114.114.114.114
nameserver 8.8.8.8
六、测试网络是否正常
先测试网关:
ping 192.168.233.2
再测试公网 IP:
ping 114.114.114.114
最后测试域名解析:
ping www.baidu.com
判断方式:
能 ping 通网关:虚拟机到 VMware NAT 网络正常
能 ping 通 114.114.114.114:虚拟机能访问外网 IP
能 ping 通 www.baidu.com:DNS 解析正常
如果能 ping 通 114.114.114.114,但是 ping 不通 www.baidu.com,通常是 DNS 配置问题。
七、VMware 里的 VMnet8 NAT 是什么
如果 CentOS 10 是安装在 VMware Workstation 里的,并且虚拟机网络模式选择的是 NAT,那么它通常会走 VMware 的 VMnet8 虚拟网络。
VMware 常见虚拟网络:
VMnet0:桥接模式
VMnet1:仅主机模式
VMnet8:NAT 模式
NAT 模式的特点:
虚拟机可以通过宿主机访问外网
外部网络通常不能直接访问虚拟机
虚拟机和宿主机之间可以互相通信
适合学习、测试、开发环境
在 NAT 模式下,虚拟机的 IP 必须和 VMnet8 的网段保持一致。
比如 VMnet8 的子网是:
192.168.233.0/24
那么虚拟机可以配置成:
192.168.233.129/24
网关通常是:
192.168.233.2
宿主机上的 VMnet8 虚拟网卡地址通常可能是:
192.168.233.1
这里要注意:
192.168.233.1 通常是宿主机 VMnet8 虚拟网卡
192.168.233.2 通常是 VMware NAT 网关
192.168.233.129 是虚拟机 CentOS 的地址
八、如何查看 VMware VMnet8 的 NAT 配置
在 Windows 宿主机上,可以打开 VMware 的虚拟网络编辑器:
VMware Workstation -> Edit -> Virtual Network Editor
如果按钮不可编辑,需要点击:
Change Settings
然后选择:
VMnet8
检查以下几项:
Type:NAT
Subnet IP:192.168.233.0
Subnet mask:255.255.255.0
点击:
NAT Settings
可以看到 NAT 网关地址,例如:
Gateway IP:192.168.233.2
这就是 CentOS 10 里 ipv4.gateway 应该填写的地址。
还可以点击:
DHCP Settings
查看 VMware 自动分配 IP 的范围,例如:
Starting IP address:192.168.233.128
Ending IP address:192.168.233.254
如果要手动设置静态 IP,建议避开 DHCP 自动分配范围,避免 IP 冲突。
例如 DHCP 范围是:
192.168.233.128 - 192.168.233.254
那静态 IP 可以考虑设置成:
192.168.233.10
192.168.233.20
192.168.233.30
前提是这些地址没有被其他虚拟机占用。
如果你明确知道 192.168.233.129 没有被占用,也可以继续使用它。
九、静态 IP 与 VMware DHCP 范围的关系
很多人配置 VMware NAT 静态 IP 时,会忽略 DHCP 范围。
比如当前环境:
VMnet8 网段:192.168.233.0/24
NAT 网关:192.168.233.2
CentOS 静态 IP:192.168.233.129
如果 VMware DHCP 正好也可能把 192.168.233.129 分配给其他虚拟机,就会出现 IP 冲突。
建议有两种处理方式:
第一种:把 CentOS 静态 IP 设置到 DHCP 范围之外。
例如:
192.168.233.10
对应命令:
nmcli con mod ens33 ipv4.addresses 192.168.233.10/24 ipv4.gateway 192.168.233.2 ipv4.dns "114.114.114.114 8.8.8.8" ipv4.method manual autoconnect yes
nmcli con up ens33
第二种:在 VMware DHCP 设置中调整 DHCP 地址池,给静态 IP 留出固定区域。
例如:
静态 IP 预留:192.168.233.10 - 192.168.233.99
DHCP 地址池:192.168.233.128 - 192.168.233.254
这样更清晰,也更不容易冲突。
十、也可以使用 nmtui 图形界面配置
如果记不住 nmcli 命令,可以使用:
nmtui
进入后选择:
Edit a connection
然后选择:
ens33
把 IPv4 配置改成:
Manual
然后填写:
Addresses:192.168.233.129/24
Gateway:192.168.233.2
DNS servers:114.114.114.114, 8.8.8.8
保存后重新激活连接。
十一、常见问题
1. 为什么不能编辑 NetworkManager.conf 来配置 IP
/etc/NetworkManager/NetworkManager.conf 是 NetworkManager 的主配置文件,主要用来控制插件、日志等行为,不是具体网卡的 IP 配置文件。
静态 IP 应该配置在具体连接上,例如:
nmcli con mod ens33 ...
或者编辑:
/etc/NetworkManager/system-connections/*.nmconnection
2. 为什么设置 manual 会报错
如果执行:
nmcli con mod ens33 ipv4.method manual
报错:
ipv4.method: method 'manual' requires at least an address or a route
原因是还没有配置 IP 地址。
解决方式是把地址、网关、DNS 和 manual 放到同一条命令里:
nmcli con mod ens33 ipv4.addresses 192.168.233.129/24 ipv4.gateway 192.168.233.2 ipv4.dns "114.114.114.114 8.8.8.8" ipv4.method manual autoconnect yes
3. 修改后 SSH 断开怎么办
执行:
nmcli con up ens33
会重新激活网络连接。
如果你是通过 SSH 连接虚拟机,可能会短暂断开。只要 IP 没写错,稍等几秒后重新连接即可。
4. 为什么能 ping IP 但不能 ping 域名
比如:
ping 114.114.114.114
可以通,但是:
ping www.baidu.com
不通。
这种情况一般是 DNS 问题,可以重新设置 DNS:
nmcli con mod ens33 ipv4.dns "114.114.114.114 8.8.8.8"
nmcli con up ens33
5. 怎么恢复成 DHCP
如果不想使用静态 IP,可以恢复自动获取:
nmcli con mod ens33 ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
nmcli con up ens33
然后查看:
nmcli con show ens33 | grep ipv4.method
如果显示:
ipv4.method: auto
说明已经恢复 DHCP。
十二、总结
CentOS 10 配置静态 IP 的关键点如下:
1. CentOS 10 不再使用老式 /etc/sysconfig/network-scripts/ifcfg-* 作为主要配置方式
2. 当前推荐使用 NetworkManager 管理网络
3. 命令行配置静态 IP 推荐使用 nmcli
4. VMware NAT 模式通常使用 VMnet8
5. VMnet8 的 NAT 网关常见是该网段的 .2 地址
6. 静态 IP 要和 VMnet8 网段一致
7. 静态 IP 最好避开 VMware DHCP 自动分配范围
本次示例最终命令:
nmcli con mod ens33 ipv4.addresses 192.168.233.129/24 ipv4.gateway 192.168.233.2 ipv4.dns "114.114.114.114 8.8.8.8" ipv4.method manual autoconnect yes
nmcli con up ens33
验证静态 IP:
nmcli con show ens33 | grep ipv4.method
看到:
ipv4.method: manual
就说明静态 IP 配置成功。
十三、参考资料
- Red Hat RHEL 10 文档:
ifcfg格式网络配置文件支持已移除,连接配置使用 keyfile 格式并保存在/etc/NetworkManager/system-connections/。- https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html/considerations_in_adopting_rhel_10/networking
- https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10/html-single/configuring_and_managing_networking/configuring_and_managing_networking
- NetworkManager 官方参考:keyfile 插件使用 INI 风格格式,并保存连接配置。
- https://networkmanager.pages.freedesktop.org/NetworkManager/NetworkManager/nm-settings-keyfile.html
- Broadcom VMware 知识库:VMware Workstation 的 NAT 网络默认使用 VMnet8,可通过 Virtual Network Editor 查看和配置 NAT Settings。
- https://knowledge.broadcom.com/external/article/310849
