VirtualBox双网卡实战:5分钟搞定CentOS7虚拟机内外网互通
刚接触VirtualBox的朋友们,是否遇到过这样的尴尬:虚拟机要么能上网但宿主机连不上,要么宿主机能访问虚拟机却上不了外网?这种"二选一"的困境其实通过双网卡配置就能完美解决。今天我们就用最直白的方式,手把手带你完成NAT+Host-Only的双网卡配置,让你的CentOS7虚拟机既能畅游互联网,又能被宿主机随时访问。
1. 环境准备与基础概念
在开始配置前,我们需要准备以下环境:
- 已安装VirtualBox 6.0及以上版本
- 已创建CentOS7虚拟机(建议最小化安装)
- 宿主机网络正常(Windows/macOS/Linux均可)
关键概念速览:
- NAT模式:让虚拟机通过宿主机上网,就像家用路由器的工作原理
- Host-Only模式:建立宿主机与虚拟机之间的私有网络,与外部隔离
- 双网卡方案:一块网卡负责外网访问(NAT),另一块负责宿主机通信(Host-Only)
提示:建议先拍摄虚拟机快照,方便配置出错时快速回滚
2. NAT网卡配置:让虚拟机连接互联网
2.1 创建NAT网络
- 关闭CentOS7虚拟机
- 打开VirtualBox主界面 → 管理 → 全局设定 → 网络
- 点击"添加新NAT网络"图标(螺丝刀旁边的小加号)
- 在弹出窗口中设置:
- 网络CIDR:192.168.56.0/24
- 支持IPv6:取消勾选(简化配置)
2.2 配置虚拟机网卡
- 右键虚拟机 → 设置 → 网络
- 网卡1选项卡:
- 启用网络连接:勾选
- 连接方式:NAT网络
- 界面名称:选择刚创建的NAT网络
2.3 验证网络连通性
启动虚拟机后,在终端执行:
ping -c 4 www.baidu.com看到类似以下输出表示外网连接成功:
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=1 ttl=128 time=32.4 ms3. Host-Only网卡配置:实现宿主机访问
3.1 检查Host-Only网络
- VirtualBox主界面 → 管理 → 主机网络管理器
- 确认存在名为"VirtualBox Host-Only Ethernet Adapter"的适配器
- 若不存在,点击"创建"按钮新建
3.2 添加第二块网卡
- 虚拟机设置 → 网络 → 网卡2
- 启用网络连接:勾选
- 连接方式:Host-Only适配器
- 界面名称:选择默认Host-Only网络
3.3 配置CentOS静态IP
在虚拟机中编辑网络配置:
vi /etc/sysconfig/network-scripts/ifcfg-enp0s8写入以下内容(根据实际情况调整):
TYPE=Ethernet BOOTPROTO=static NAME=enp0s8 DEVICE=enp0s8 ONBOOT=yes IPADDR=192.168.56.100 NETMASK=255.255.255.0重启网络服务:
systemctl restart network4. 双网卡调优与问题排查
4.1 路由优先级设置
为避免网络冲突,需要调整路由优先级:
vi /etc/sysconfig/network-scripts/route-enp0s8添加:
192.168.56.0/24 dev enp0s8 metric 100 default via 192.168.56.1 dev enp0s3 metric 504.2 常见问题解决方案
问题1:Host-Only驱动报错症状:
Could not find Host Interface Networking driver!解决方法:
- 进入VirtualBox安装目录
- 找到drivers\network\netadp6\VBoxNetAdp6.inf
- 右键选择"安装"
问题2:宿主机无法ping通虚拟机检查清单:
- 确认虚拟机防火墙已放行ICMP协议
firewall-cmd --add-icmp-block-inversion --permanent firewall-cmd --reload - 确认Host-Only适配器IP与虚拟机在同一网段
- 重启VirtualBox网络服务(宿主机端)
5. 高级应用场景
5.1 端口转发配置
如需从宿主机访问虚拟机服务(如SSH):
- 虚拟机设置 → 网络 → 网卡1 → 高级 → 端口转发
- 添加规则:
- 名称:SSH
- 协议:TCP
- 主机IP:127.0.0.1
- 主机端口:2222
- 子系统IP:留空
- 子系统端口:22
5.2 多虚拟机互通方案
若需多台虚拟机相互通信:
- 为每台虚拟机配置相同的Host-Only网络
- 设置静态IP在同一网段(如192.168.56.101、192.168.56.102)
- 关闭各虚拟机的防火墙或设置相应规则
实际项目中,这种配置特别适合搭建分布式测试环境。我曾用三台这样的虚拟机搭建过微服务测试平台,每台机器运行不同的服务组件,通过Host-Only网络互相调用,而NAT网络则统一提供外网访问能力。