四. 虚拟机网络模式深度解析与配置
网络是虚拟机最复杂的子系统之一。掌握每种模式的原理和适用场景,才能随心所欲地搭建实验环境。
4.1 NAT 模式(网络地址转换)
工作原理:宿主机充当虚拟路由器,虚拟机通过虚拟 NAT 设备访问外网,但外网无法直接访问虚拟机。所有虚拟机共享宿主机 IP。
常用场景:普通上网、无需对外提供服务的学习环境。
配置要点:
VMware:默认网络模式,无需额外设置。
VirtualBox:默认 NAT,可通过“端口转发”暴露服务。
KVM:默认 default 网络就是 NAT 模式。
查看 NAT 网络参数(VirtualBox):
VBoxManage showvminfo "vm-name" | grep "NIC"
4.2 桥接模式(Bridge)
工作原理:虚拟机的虚拟网卡直接连接到宿主机物理网卡上,仿佛一台独立机器存在于局域网中,可以获取路由器分配的 IP,也能被局域网其他设备访问。
常见问题:
如果宿主机使用 WiFi,某些路由器会禁止桥接模式下的二层通信,导致虚拟机无法获取 IP。此时可改用 NAT 或仅主机模式。
在公司网络中,桥接模式可能违反网络安全策略,谨慎使用。
配置方法(VirtualBox):
设置 → 网络 → 网卡1 → 连接方式:桥接网卡 → 名称:选择宿主机正在使用的物理网卡(如 Intel 以太网或 WiFi 网卡)。
4.3 仅主机模式(Host‑Only)
工作原理:创建一个仅存在于宿主机内部的虚拟网络,所有仅主机模式的虚拟机可以相互通信,也可以与宿主机通信,但无法访问外网。
常用场景:搭建隔离的测试环境,如恶意软件分析、内部集群实验。
在仅主机模式中开启 NAT 上网(让虚拟机既能相互通信又能上网):
在宿主机上开启 Internet 连接共享(ICS),或者创建一个虚拟 NAT 网关。
配置静态 IP 示例(仅主机网络通常使用 192.168.56.0/24 网段):
# 在 Linux 虚拟机中修改 netplan
addresses: [192.168.56.101/24]
gateway4: 192.168.56.1 # 虚拟网卡的宿主机地址
4.4 内部网络(Internal Network,VirtualBox 特有)
工作原理:只允许同一内部网络的虚拟机之间通信,完全隔离宿主机和外网。
配置:设置 → 网络 → 高级 → 网络名称(如 intnet1),相同名称即属于同一内部网络。
4.5 VMware 的独特网络模式
Host‑only:对应仅主机模式。
NAT:标准 NAT,支持端口转发。
Custom (VMnet2~VMnet19):可自定义虚拟交换机,实现更复杂的拓扑。
五. 高级网络:端口转发、虚拟网卡桥接与 NAT 穿透
5.1 端口转发:从宿主机访问虚拟机内部服务
场景:在 NAT 模式下,从宿主机浏览器访问虚拟机里运行的 Web 服务(如端口 80)。
VMware 设置:
编辑 → 虚拟网络编辑器 → 选择 NAT 模式 → NAT 设置 → 添加端口转发。
或者编辑 .vmx 文件(虚拟机所在目录)添加:
nat.portForward = "80:192.168.xxx.xxx:80"
VirtualBox 设置:
设置 → 网络 → 高级 → 端口转发 → 添加规则:
名称:web
协议:TCP
主机 IP:留空(或 127.0.0.1)
主机端口:8080
虚拟机 IP:10.0.2.15(NAT 默认网关)
虚拟机端口:80
之后在宿主机访问 http://localhost:8080 即可。
KVM(libvirt)端口转发:编辑网络 XML:
virsh net-edit default
添加端口转发规则(需要自定义网络):
<forward mode='nat'>
<nat>
<port start='8080' end='8080'/>
</nat>
</forward>
更简单的方法是使用 iptables 直接在宿主机添加规则(持久化稍麻烦):
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.122.100:80
5.2 在虚拟机中运行 VPN 网关
用途:让所有通过虚拟机的流量走 VPN,而宿主机正常上网。
方案:虚拟机配置为仅主机模式 + NAT,虚拟机内安装 VPN 客户端,宿主机设置默认网关为虚拟机的 IP。
5.3 虚拟网卡的高级用法
为虚拟机添加第二块网卡(常用于双网卡网关、防火墙实验):
VMware:虚拟机设置 → 添加 → 网络适配器 → 选择网络模式(如桥接)。
VirtualBox:设置 → 网络 → 启用网卡2。
KVM:
virsh attach-interface --domain vm-name --type network --source default --model virtio --persistent
6. 共享文件夹与剪贴板:无缝数据交换
6.1 VMware 共享文件夹
宿主机是 Windows:
虚拟机设置 → 选项 → 共享文件夹 → 总是启用 → 添加宿主机目录(如 D:\share)。
在 Linux 客户机中挂载:
sudo vmhgfs-fuse .host:/share /mnt/share -o allow_other -o uid=1000
若希望开机自动挂载,在 /etc/fstab 添加:
.host:/share /mnt/share fuse.vmhgfs-fuse defaults,allow_other 0 0
6.2 VirtualBox 共享文件夹
设备 → 共享文件夹 → 固定分配 → 添加宿主机路径。
在 Windows 客户机中,共享文件夹会出现在“网络” → “VBOXSVR” 下。
在 Linux 客户机中挂载:
sudo mount -t vboxsf share_name /mnt/share
自动挂载(/etc/fstab):
share_name /mnt/share vboxsf defaults 0 0
需要确保 vboxsf 模块已加载:sudo modprobe vboxsf。
6.3 使用 NFS / Samba 实现更灵活的共享(跨平台)
当增强工具的共享文件夹不稳定时,可以使用传统网络共享。
在 Linux 宿主机上搭建 NFS 服务器(示例):
sudo apt install nfs-kernel-server
echo "/home/user/shared 192.168.56.0/24(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports
sudo exportfs -a
在虚拟机中挂载:sudo mount -t nfs 192.168.56.1:/home/user/shared /mnt/nfs
6.4 剪贴板共享配置
来源:
https://hllft.cn/