直接给答案
CentOS 7虚拟机配置网络连接的核心思路是:先选对虚拟机网络模式(桥接、NAT、仅主机),再修改网卡配置文件,最后重启网络服务验证连通性。这篇文章把每一步拆开揉碎,从VirtualBox到VMware,从动态IP到静态IP,手把手带你配通网络。
虚拟机三种网络模式怎么选?
在动手敲命令之前,先花两分钟搞懂三种模式的区别,选错模式,后面全白搭。
NAT模式:最省心,适合临时用
虚拟机通过宿主机上网,宿主机充当“代理”,虚拟机的IP是私有网段,外部设备访问不到虚拟机,多数情况下,用NAT模式默认就能上网,无需额外配置。
桥接模式:想要局域网互通?选它
虚拟机直接“插”到宿主机所在的局域网,和物理机平起平坐,IP要和宿主机在同一网段,否则上不了网。桥接模式最典型的应用场景是:你想在centos7虚拟机里搭个服务,让局域网内其他电脑通过IP直接访问。
仅主机模式:只和宿主机通信
虚拟机和宿主机之间组了个“私聊群”,不经过外部网络,适合做实验、测试,不需要外网访问的场景。
行业共识:新手第一次配CentOS 7虚拟机网络,用NAT模式起步成功率最高,之后根据需求再切换其他两种模式。
VirtualBox里centos7虚拟机怎么配置网络连接?
VirtualBox的网卡设置入口和VMware略有差异,下面按实际点击路径写。
第一步:打开网卡设置
- 在VirtualBox主界面选中你的CentOS 7虚拟机
- 点击顶部菜单“设置” → “网络”
- 默认有一个“网卡1”,启用它
第二步:选择连接方式
点开“连接方式”下拉框,你会看到NAT、桥接网卡、内部网络、仅主机适配器等选项。
- 想直接上网,选NAT
- 想局域网互通,选桥接网卡,然后在“名称”栏选你宿主机正在用的网卡(有线选有线,无线选无线)
第三步:进入系统改网卡配置
很多人卡在这里虚拟机里网卡默认叫ens33或ens192,不是老的eth0,用命令看一下:
ip addr
记下网卡名称,然后编辑配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
把ONBOOT=no改成ONBOOT=yes,如果你的网络环境需要DHCP自动获取IP,保持BOOTPROTO=dhcp不动,保存退出后重启网络:
systemctl restart network
测试一下: ping -c 3 www.baidu.com,通了就完事。
VMware里centos7网络配置和VirtualBox有什么不同?
VMware的网络模式封装得更好,但核心逻辑一样,部分用户反复折腾的时候会问“vmware centos7 桥接模式 无法上网怎么办”,多半是没选对VMnet网卡。
VMware的三种模式入口
在虚拟机菜单栏:虚拟机 → 设置 → 网络适配器,勾选对应模式:
- NAT模式:选NAT
- 桥接模式:选“桥接模式”,然后点“配置适配器”,勾选宿主机正在用的物理网卡
- 仅主机:选“仅主机模式”
VMware里最容易踩的坑
桥接模式选错虚拟网卡。 VMnet0默认是自动桥接,但有时候自动桥接会失效,解决办法是手动指定桥接到有线或无线网卡。
VMware的NAT模式用不了,大概率是Windows服务里VMware NAT Service没启动,按Win + R输入services.msc,找到VMware NAT Service和VMware DHCP Service,右键手动启动并把启动类型改为“自动”。
静态IP配置:让IP固定下来
DHCP拿到的IP可能会变,对做服务器的人来说很烦,下面给出centos7 虚拟机 静态ip 配置的完整步骤。
确认网关和子网掩码
在虚拟机里执行:
ip route show
输出里default via 192.168.x.1 dev ens33就是你的网关地址,子网掩码一般是255.255.0。
修改配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
改,注意别照抄,把IP网段换成你自己的:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=223.5.5.5
保存退出,重启网络服务:
systemctl restart network
验证静态IP生效
ip addr show ping -c 3 192.168.1.1 ping -c 3 www.baidu.com
两条ping都通,说明配置成功,DNS建议国内服务器用5.5.5(阿里DNS)替代8.8.8,响应更快。
常见网络故障排查清单
配置完还是不通?按照下面的顺序一项一项查。
网卡没启动
执行ip addr看网卡状态,如果ens33没有IP地址或者状态是DOWN,先把网卡启用:
ifup ens33
NetworkManager和高优先级冲突
CentOS 7自带NetworkManager,有时候会跟network服务打架,业界普遍观点是在虚拟机环境里关掉NetworkManager,用network服务管理:
systemctl stop NetworkManager systemctl disable NetworkManager systemctl restart network
防火墙拦了
VM里ping不通外网,先看防火墙:
systemctl status firewalld
如果开着,临时关闭测试:
systemctl stop firewalld
通了再决定要不要永久关闭,或者放行具体端口。
VMware本机ping得通但虚拟机ping不通外部
多为VMware NAT服务未启动,按上文服务面板处理,VirtualBox则检查VirtualBox DHCP Server是否被Windows防火墙拦截,较老版本的VirtualBox偶尔会出现这个问题。
网络配置文件参数速查表
| 参数 | 作用 | 示例值 |
|---|---|---|
| BOOTPROTO | 获取IP方式 | dhcp / static / none |
| ONBOOT | 开机自动启用网卡 | yes / no |
| IPADDR | 静态IP地址 | 168.1.100 |
| NETMASK | 子网掩码 | 255.255.0 |
| GATEWAY | 网关地址 | 168.1.1 |
| DNS1 | 首选DNS | 5.5.5 |
| DNS2 | 备用DNS | 114.114.114 |
| HWADDR | MAC地址,通常不手动改 | 00:0C:29:xx:xx:xx |
关于虚拟机软件版本的一个说法
VirtualBox和VMware两个平台的配置界面大差不差,但老版本VirtualBox对新版CentOS 7内核支持不友好,装完可能没网卡驱动,需要安装增强功能,如果你用的是VirtualBox 6.0以下版本配CentOS 7.8以上系统,装好后ip addr看不到网卡,先升级VirtualBox版本再试。
CentOS 7虚拟机网络配置说白了就三步:选模式、改配置、重启验证,NAT解决上网问题,桥接解决局域网互访问题,静态IP解决IP漂移问题,按上文步骤操作,多数网络问题当场即可解决。
Q&A:centos7虚拟机网络配置常见疑问
NAT模式下虚拟机为何无法访问宿主机?
NAT模式下,虚拟机默认由VMware或VirtualBox的虚拟DHCP服务分配IP,通常和宿主机IP不在同一网段,直接访问宿主机需要配置端口转发或改用桥接模式,更简单的做法是在宿主机上ping虚拟机的IP,若能通,说明网络是通的,不通则检查宿主机的防火墙拦截规则。
桥接模式下静态IP设对了仍无法上网?
先查网关是否可达:ping -c 3 网关IP,网关通但公网不通,优先检查DNS解析,在/etc/resolv.conf里加入nameserver 223.5.5.5,网关都不通,则八成是虚拟网卡绑定错了物理网卡在VMware里重新选择与宿主机实际网络对应的物理网卡,再试一次。