在Linux虚拟机的使用过程中,连接外网是基础且关键的操作,无论是开发调试、软件安装还是访问网络资源,都离不开稳定的网络连接,本文将详细讲解Linux虚拟机连接外网的常见方法、配置步骤及问题排查,帮助用户顺利实现网络互通。
虚拟机网络模式选择
虚拟机软件(如VMware、VirtualBox等)提供了多种网络模式,不同模式的原理和适用场景不同,选择合适的模式是连接外网的前提,以下是常见网络模式的对比:
网络模式 | 原理 | 优点 | 缺点 | 适用场景 |
---|---|---|---|---|
NAT(网络地址转换) | 虚拟机通过主机IP转发网络请求,虚拟机与主机处于私有子网 | 配置简单,无需额外网络设备 | 虚拟机无法直接与局域网其他设备通信 | 个人开发、临时测试,无需对外提供服务的场景 |
桥接模式 | 虚拟机直接连接物理网络,如同局域网中的一台独立设备 | 虚拟机拥有独立IP,与主机平等 | 需局域网有足够IP,可能引发IP冲突 | 需要让虚拟机被局域网其他设备访问(如搭建服务器) |
仅主机模式 | 虚拟机与主机组成私有网络,无法直接访问外网(除非主机开启代理共享) | 隔离外网,安全性高 | 无法直接访问外网,需额外配置 | 内网开发测试,无需访问外网的环境 |
NAT模式配置(最常用)
NAT模式是虚拟机连接外网最简单的方式,无需修改物理网络设置,通过主机IP转发即可实现,以下是详细步骤(以VMware和Ubuntu系统为例):
虚拟机网络设置
- 打开VMware,选中虚拟机,点击“编辑虚拟机设置”>“网络适配器”,选择“网络连接”为“NAT模式”。
- 进入VMware的“编辑”>“虚拟网络编辑器”,选择“VMnet8”(NAT模式默认使用),勾选“使用本地DHCP服务将IP地址分配给虚拟机”,记录子网IP(如192.168.100.0)和网关(如192.168.100.2)。
Linux系统网络配置
-
自动获取IP(推荐):
Ubuntu 18.04及以上版本使用Netplan,编辑/etc/netplan/01-netcfg.yaml
(文件名可能不同),添加以下内容:network: version: 2 ethernets: ens33: # 虚拟机网卡名称,可通过ifconfig查看 dhcp4: true optional: true
执行
sudo netplan apply
使配置生效,通过ip a
查看是否获取到IP(如192.168.100.128)。 -
手动设置静态IP:
若需固定IP,修改上述配置文件:network: version: 2 ethernets: ens33: addresses: [192.168.100.150/24] # IP/子网掩码 gateway4: 192.168.100.2 # NAT网关 nameservers: addresses: [8.8.8.8, 114.114.114.114] # DNS dhcp4: no
同样执行
sudo netplan apply
。
验证网络连接
- 执行
ping 8.8.8.8
测试是否连通外网,若能ping通,说明NAT配置成功; - 执行
ping www.baidu.com
测试域名解析,若失败需检查DNS配置(如/etc/resolv.conf
是否包含正确DNS)。
桥接模式配置
若需让虚拟机作为局域网中的独立设备(如搭建网站服务器),可使用桥接模式:
虚拟机网络设置
- 在VMware“虚拟网络编辑器”中,选择“桥接模式”,桥接到物理网卡(如“以太网”或“WLAN”)。
- 虚拟机设置中,网络适配器选择“桥接模式”。
Linux系统网络配置
桥接模式下,虚拟机需与主机处于同一网段,获取局域网IP(或手动设置),配置方法与NAT模式类似,但网关需改为局域网网关(如192.168.1.1),DNS使用局域网DNS或公共DNS(8.8.8.8)。
Netplan配置:
network: version: 2 ethernets: ens33: addresses: [192.168.1.100/24] # 与主机同网段 gateway4: 192.168.1.1 # 局域网网关 nameservers: addresses: [8.8.8.8]
验证连接
ping 8.8.8.8
测试外网连通性;ping 主机IP
测试与主机的局域网通信;- 若局域网内有其他设备,可尝试ping虚拟机IP,验证是否被局域网识别。
仅主机模式配置(需主机共享网络)
仅主机模式下,虚拟机默认无法访问外网,需主机开启网络共享(以Windows主机为例):
虚拟机设置
- VMware中“虚拟网络编辑器”选择“仅主机模式”(VMnet1),关闭DHCP服务(手动分配IP)。
- 虚拟机网络适配器选择“仅主机模式”。
主机共享网络
- Windows主机进入“控制面板”>“网络和共享中心”>“更改适配器设置”,右键VMnet1适配器>“属性”>“共享”,勾选“允许其他网络用户通过此计算机的Internet连接连接”,选择物理网卡(如“以太网”)。
- 虚拟机中手动配置IP(如192.168.56.101),子网掩码255.255.255.0,网关192.168.56.1(VMnet1默认网关)。
验证连接
- 虚拟机
ping 192.168.56.1
测试与主机通信; - 主机开启代理工具(如Clash)后,虚拟机配置代理IP(如主机IP:7890),可访问外网。
常见问题排查
-
虚拟机无法获取IP:
- 检查VMware NAT模式的DHCP服务是否开启(虚拟网络编辑器中“使用本地DHCP服务”);
- Linux中执行
sudo dhclient ens33
手动获取IP,查看日志/var/log/syslog
排查错误。
-
能ping通IP但无法解析域名:
- 检查
/etc/resolv.conf
是否包含DNS(如nameserver 8.8.8.8
); - Ubuntu中执行
sudo apt install resolvconf
确保DNS配置生效。
- 检查
FAQs
Q1:虚拟机能ping通8.8.8.8,但无法打开网页,是什么原因?
A:通常为DNS解析问题,检查/etc/resolv.conf
中的DNS配置,确保添加了公共DNS(如8.8.8.8或114.114.114.114),若问题依旧,可能是主机防火墙拦截了域名访问,尝试关闭主机防火墙测试。
Q2:桥接模式下虚拟机获取不到IP怎么办?
A:首先确认桥接模式是否正确桥接到物理网卡(而非VMnet1等虚拟网卡);其次检查局域网DHCP服务器是否正常(若手动设置IP,需确保IP与主机同网段且不冲突);最后查看Linux网卡是否启用(执行sudo ip link set ens33 up
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/22844.html