CentOS虚拟机网络配置失败?先搞懂这四种连接模式
虚拟机安装CentOS时配置网络连接,核心答案是:根据你的使用场景选择桥接、NAT、仅主机或Host-Only四种模式之一,然后在CentOS中用nmtui或修改配置文件完成IP、网关和DNS设置。很多人在这一步卡住,往往不是命令不熟,而是没搞明白网络模型,下面我把每种模式的适用场景、配置方法一次说透。
网络模式选不对,配置全白费四种模式怎么挑?
在真正动手配置CentOS网络前,你得先了解虚拟机软件(VMware或VirtualBox)提供的网络模式,这四张”网卡”对应四种完全不同的网络行为:
- NAT模式(网络地址转换):默认选择,虚拟机通过宿主机共享IP上网,外部网络无法主动访问虚拟机,适合单机上网测试、安装软件包。
- 桥接模式(Bridged):虚拟机直接连接到物理网络,拥有和宿主机同网段的独立IP,适合需要局域网内互访的场景,比如搭建Web服务器供同事访问。
- 仅主机模式(Host-Only):虚拟机只能与宿主机通信,无法访问外网,适合搭建内部测试环境,隔离外部干扰。
- 自定义模式(VMnetx):高级用户手动指定虚拟网络,如果你有多台虚拟机需要组网,这个模式更灵活。
打个比方:NAT像家里路由器的内网设备能上网但外面找不到你;桥接相当于把虚拟机接到同一个交换机上,跟真机平起平坐;仅主机就像两台电脑用网线直连,不连互联网。
行业共识认为,90%以上的CentOS学习场景用NAT就够用,但如果你在做集群实验或需要本机访问虚拟机里的服务,桥接是更优解。
VMware里改网络模式,只需三步
在配置CentOS内部之前,先确认虚拟机的”硬件网卡”接的是哪个模式:
- 右键虚拟机 → 选择”设置”→ 点击”网络适配器”
- 勾选你需要的模式(推荐NAT,选完后记下下方的MAC地址)
- 点击”高级”展开,确认”已连接”和”启动时连接”均为勾选状态
改完模式后,启动CentOS,注意:如果你在系统安装阶段就卡在网上配置页面,先跳过,等系统装完再处理网卡,装完系统后,一切网络调整都不需要重装。
手动改配置文件?用nmtui更省事CentOS网络配置实操
进入CentOS后,首先确认网卡名,不同版本的CentOS,网卡命名规则不同:
- CentOS 6及更早:常用eth0、eth1
- CentOS 7及以上:常用ens33、enp0s3这类带固件信息的名字
用ip a命令查看当前网卡状态,找到类似2: ens33这样的行,如果该网卡没有IPv4地址,说明还没拿到IP。
快速确认网络状态:三条命令定位问题
ip addr:查看所有网卡的IP地址、MAC地址、状态ip route:查看默认网关,确保路由指向正确ping -c 4 8.8.8.8:测试能否到达公网,若不通则说明DNS或网卡配置有误
用nmtui图形化工具,避免手写配置出错
CentOS 7及以后版本自带nmtui(NetworkManager Text User Interface),这是最不容易出错的配置方式。
- 终端输入
nmtui,按回车进入界面 - 选择”Edit a connection”,找到你的网卡名
- 将IPv4 CONFIGURATION改为”Manual”(手动)或保持”Automatic”(自动获取)
- 如果选Manual,在Addresses处填写自定义IP:格式如
168.20.100/24,按空格后可以补网关 - 在DNS servers处填写你的DNS,如
5.5.5(阿里DNS)和114.114.114 - 选择OK保存,然后按esc回到主菜单,选择”Activate a connection”,重启网卡
重启后执行ip addr验证IP是否生效。如果nmtui里看不到网卡,先执行nmcli device status确认NetworkManager是否接管了网卡。
NAT模式下,CentOS网络配置的具体步骤
以最常见的VMware NAT模式为例,我将整个流程拆解清楚,这套操作适配CentOS 7/8/9,也适配Stream版本。
先在宿主机确认NAT网段
在Windows宿主机上,打开”VMware Virtual Network Editor”:
- 点击”NAT模式”,下方会显示子网IP,通常是
168.xxx.0 - 记下子网掩码(一般为255.255.255.0)和网关IP(通常为
168.xxx.2)
这里的网关IP至关重要,CentOS虚拟机里的默认网关必须填这个IP,否则会出现”虚拟机有IP但上不了网”的诡异情况。
在CentOS里配置静态IP(固定地址)
如果你不想每次重启虚拟机都换IP,就手动配置静态IP,编辑网卡文件:
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改或添加以下内容:
TYPE=Ethernet BOOTPROTO=static NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.20.100 NETMASK=255.255.255.0 GATEWAY=192.168.20.2 DNS1=223.5.5.5 DNS2=114.114.114.114
保存退出后执行systemctl restart network(CentOS 7)或nmcli connection reload && nmcli connection up ens33(CentOS 8+),然后用ping www.baidu.com测试一下,能通就说明配置成功了。
注意:CentOS 8及以上不再推荐
systemctl restart network,改用nmcli命令更稳,如果配置文件写完后重启网络报错,多数原因是BOOTPROTO值有误或网卡名不匹配。
桥接模式配置技巧:让虚拟机像独立机器一样上网
桥接模式更实用也更容易踩坑,你需要给CentOS配置一个与宿主机同网段但不冲突的IP。
查宿主机IP,规划虚拟机IP
Windows宿主机按Win+R输入cmd,执行ipconfig,记下四件事:
- IPv4地址(如192.168.1.105)
- 子网掩码(通常为255.255.255.0)
- 默认网关(如192.168.1.1)
- DNS服务器(可能是路由器的192.168.1.1,也可能是运营商DNS)
给虚拟机分配一个同网段的空闲IP,例如168.1.108,注意不要和路由器DHCP池冲突,建议在路由器里做静态IP绑定,否则虚拟机IP可能被其他设备抢占。
写配置和测试连通性
沿用上面的ifcfg-ens33文件,只改三处:
BOOTPROTO=static
IPADDR=192.168.1.108
GATEWAY=192.168.1.1
重启网络服务后,测试两项:
ping 192.168.1.1验证网关通ping 192.168.1.105验证宿主机通
如果宿主机能通但外网不通,检查DNS配置;如果局域网内其他电脑能访问这台虚拟机,说明桥接已生效,此时你完全可以把虚拟机当成一台普通的局域网服务器来使用。
网络配置失败的常见原因与排查命令
就算配置看起来完全正确,CentOS网络也可能出幺蛾子,排查时按以下顺序逐步击破:
- 先看物理链路:
ip link显示网卡状态是否为UP,如果是DOWN,执行ip link set ens33 up - 再看IP和路由:
ip addr有没有IP?ip route有没有default行? - 检查防火墙:
systemctl status firewalld若防火墙开启,用临时关闭测试是否影响通信systemctl stop firewalld
- 查SELinux干扰:临时用
setenforce 0关掉SELinux,如果网络恢复,则是SELinux策略问题 - 查看NetworkManager是否冲突:
systemctl status NetworkManager确认网络管理服务正常运行
如果你使用的是CentOS 6这种老系统,网卡文件写法稍不同,且默认没有NetworkManager,请直接编辑/etc/sysconfig/network-scripts/ifcfg-eth0。
一张表看懂故障现象和对应操作
| 现象 | 可能原因 | 解决操作 |
|---|---|---|
| 虚拟机无IP | 网卡未获取地址或ONBOOT未设置为yes | 运行dhclient尝试获取IP,并检查ONBOOT |
| 能ping通网关,但上不了外网 | DNS配置错误或网关未生效 | 检查ifcfg文件中的DNS行,用nslookup测试 |
| 宿主机能通,局域网其他电脑不通 | 防火墙拦截或网卡绑定错误模式 | 关闭firewalld,确认桥接网卡连接到正确的虚拟交换机 |
| 重启网络失败 | 配置文件语法错误或duplicate MAC | 用nmcli con show检查连接是否存在冲突 |
常见问题答疑:网络连接配置的几个高频疑问
Q1:NAT模式下虚拟机可以上外网,但宿主机访问不了虚拟机里的Web服务,怎么办?
把端口转发开一下,在VMware的编辑→虚拟网络编辑器→NAT设置里,添加一条端口转发规则,宿主机端口4666转发到虚拟机的80端口,之后你在宿主机浏览器访问http://localhost:4666,就能看到虚拟机里的网站,也可以用桥接模式,让虚拟机获得局域网独立IP,从宿主机直接访问该IP的对应端口。
Q2:CentOS 9 Stream用nmtui配置静态IP后不生效,重启还原成DHCP了,怎么回事?
CentOS 9 Stream中NetworkManager会优先使用keyfile配置文件,而不是旧的ifcfg文件,运行nmcli connection reload后查看nmcli -t -f NAME,DEVICE con show,用nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.20.100/24 ipv4.gateway 192.168.20.2重写配置,改完再执行nmcli connection up ens33,然后查看/etc/NetworkManager/system-connections/目录下的文件确认写入成功。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/625902.html





