VMware双网卡配置实战:Linux虚拟机同时访问开发板和互联网(Ubuntu版)

📅 发布时间:2026/7/12 7:50:42 👁️ 浏览次数:
VMware双网卡配置实战:Linux虚拟机同时访问开发板和互联网(Ubuntu版)
VMware双网卡配置实战Linux虚拟机同时访问开发板和互联网Ubuntu版作为一名嵌入式开发者你是否经常在调试开发板和上网查资料之间反复横跳一边是连接着开发板的网线另一边是需要访问互联网更新软件包、查阅文档的网络环境。单网卡虚拟机在这种场景下显得捉襟见肘频繁切换网络配置不仅打断工作流还容易导致配置混乱。今天我们就来彻底解决这个痛点通过为VMware中的Ubuntu虚拟机配置双网卡实现开发板内网与互联网外网的并行访问。这不仅仅是添加一块虚拟网卡那么简单背后涉及到对VMware虚拟网络模式NAT与桥接的深度理解以及Linux网络接口的精细化管理。我们将从原理出发手把手带你完成配置并分享几个我踩过坑才总结出来的故障排查技巧让你在嵌入式开发的道路上畅通无阻。1. 理解虚拟网络NAT与桥接模式的核心差异在动手配置之前花几分钟理解VMware的几种网络连接模式至关重要。这能让你在遇到问题时不再是盲目尝试而是能精准定位。VMware主要提供了三种网络模式桥接Bridged、NAT和仅主机Host-Only。对于我们的双网卡场景前两者是主角。桥接模式可以理解为虚拟机在网络世界里获得了一个独立的“身份”。VMware会在你的物理主机网络之上创建一个虚拟的网桥。虚拟机的虚拟网卡通过这个网桥直接连接到你的物理网络就像一台真实的新电脑接入了你办公室或家里的路由器。因此虚拟机需要从你的局域网DHCP服务器获取一个IP地址或者手动配置一个与物理网络同网段的静态IP。它的最大特点是虚拟机与局域网内的其他设备包括你的开发板、同事的电脑、网络打印机处于对等地位可以互相直接访问。注意桥接模式下如果物理网络环境发生变化比如从公司网络切换到家庭网络虚拟机的网络配置可能需要相应调整。NAT模式则提供了一种“共享上网”的体验。VMware会在主机内部创建一个私有的虚拟网络默认是VMnet8并自己扮演一个路由器的角色。虚拟机被分配到这个私有网络中的一个IP地址如192.168.xx.xx。当虚拟机需要访问外部互联网时数据包会先发送给这个虚拟路由器即VMware的NAT服务由它进行网络地址转换后以主机的名义发送出去外部返回的数据包也由主机接收再转发给对应的虚拟机。对于外部网络而言所有流量都来自你的主机他们看不到虚拟机的存在。这两种模式的对比如下特性桥接模式 (Bridged)NAT模式 (NAT)网络位置与主机并列处于同一物理局域网处于主机内部的私有网络IP地址与物理网络同网段通常为192.168.xx.xx私有地址段访问外网依赖物理网络的路由器/网关通过主机的网络连接共享访问被局域网访问可以直接访问默认无法被直接访问需设置端口转发配置复杂度相对简单但受物理网络环境影响简单网络环境隔离性好典型用途服务器模拟、需要与物理设备如开发板通信个人开发、测试、安全上网理解了这些我们的策略就清晰了用NAT模式的网卡连接互联网用桥接模式的网卡连接开发板所在的局域网。这样虚拟机既能通过NAT畅游外网又能通过桥接与开发板“肩并肩”地通信。2. 配置VMware虚拟网络编辑器理论清晰后我们开始实战。第一步是在VMware Workstation或Player中配置好所需的虚拟网络。这里假设你的开发板通过网线直接连接到你的电脑有线网卡或者连接到你电脑所在的同一个局域网交换机上。打开VMware在顶部菜单栏找到编辑-虚拟网络编辑器。你会看到一个需要提升权限的提示点击更改设置输入管理员密码授权。在虚拟网络编辑器窗口中你会看到默认的VMnet0桥接、VMnet8NAT等。我们主要关注这两个。配置VMnet8 (NAT网络)通常它已经是NAT模式并且关联到了你主机正在使用的活跃网络适配器可能是Wi-Fi或有线网卡。确认其连接类型为“NAT模式”即可一般无需改动。记下它的子网IP例如192.168.233.0。配置VMnet0 (桥接网络)选中VMnet0确保其连接类型为“桥接模式”。关键的一步在下方的“桥接到”下拉菜单。这里必须选择你连接开发板或局域网的那块物理网卡。如果你用网线连接开发板就选择你的有线以太网适配器名称可能类似“Realtek PCIe GbE Family Controller”。如果你和开发板都通过Wi-Fi连接到同一个路由器则可以选择无线网卡。选错将导致无法与开发板通信。如果你的VMnet0已被其他配置占用或者你想更清晰地管理完全可以添加新的虚拟网络比如VMnet2将其设置为桥接模式并桥接到正确的物理网卡。后续在虚拟机设置中选用VMnet2即可。3. 为Ubuntu虚拟机添加并配置双网卡虚拟网络准备就绪现在来配置虚拟机硬件。确保你的Ubuntu虚拟机处于关闭状态。在VMware库中右键点击该虚拟机选择设置。在硬件选项卡中找到现有的网络适配器。将其网络连接设置为NAT模式对应VMnet8。这块网卡将负责互联网访问。接下来添加第二块网卡。点击下方的添加按钮在弹出的硬件类型窗口中选择网络适配器然后点击完成。现在硬件列表里出现了第二个网络适配器。选中它将其网络连接设置为自定义并在下拉菜单中选择你刚才配置好的桥接网络如VMnet0或你自定义的VMnet2。点击确定保存所有设置。至此虚拟机的硬件层面已经具备了双网卡。启动你的Ubuntu虚拟机我们将进入系统内部进行软件配置。4. Ubuntu系统内的网络接口配置Ubuntu系统特别是18.04及以后版本的网络管理方式经历了演变从传统的/etc/network/interfaces文件转向了Netplan。这里我们以目前主流的Netplan为例进行配置它更简洁、强大。首先打开终端使用ip addr或ifconfig需先安装net-tools命令查看识别到的网络接口。你应该能看到类似ens33和ens34的两个接口名称可能因系统而异也可能是eth0,eth1。通常第一个添加的网卡NAT是ens33第二个桥接是ens34。记下它们。Netplan的配置文件位于/etc/netplan/目录下通常是一个以.yaml结尾的文件如01-netcfg.yaml或00-installer-config.yaml。在修改前建议先备份sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.backup然后使用文本编辑器如nano或vim编辑该文件sudo nano /etc/netplan/00-installer-config.yaml我们需要为两个接口分别配置。一个接口连接互联网的NAT网卡使用DHCP自动获取IP另一个接口连接开发板的桥接网卡通常需要设置静态IP且必须与你的开发板IP处于同一网段。假设你的开发板IP是192.168.100.10子网掩码255.255.255.0。那么你的桥接网卡可以配置为192.168.100.100。配置文件内容大致如下network: version: 2 renderer: networkd ethernets: ens33: # NAT网卡用于上网 dhcp4: true optional: true ens34: # 桥接网卡用于连接开发板 dhcp4: no addresses: - 192.168.100.100/24 # 如果你的开发板网络有特定网关和DNS可以在这里设置 # gateway4: 192.168.100.1 # nameservers: # addresses: [8.8.8.8, 114.114.114.114] optional: true提示YAML文件对缩进非常敏感必须使用空格通常2个空格不能使用Tab键。addresses后面的-表示列表项。编辑完成后保存退出。应用新的网络配置sudo netplan apply如果命令执行没有报错再次使用ip addr show检查应该能看到ens33获取到了一个IP可能是192.168.233.xxx而ens34的IP正是你设置的192.168.100.100。5. 验证与高级故障排查技巧配置完成后必须进行验证确保两条通路都工作正常。验证互联网连接在终端里ping一个外网地址比如谷歌的DNS服务器。ping -c 4 8.8.8.8如果通说明NAT网卡配置成功。验证开发板连接ping你的开发板IP地址。ping -c 4 192.168.100.10如果通恭喜你双网卡配置大功告成你现在可以一边通过ens34用ssh登录开发板进行调试一边通过ens34使用apt update更新系统软件包了。然而现实往往不会一帆风顺。下面分享几个我实践中遇到的典型问题及解决方法问题一桥接网卡无法ping通开发板。检查1物理连接与VMware桥接设置确认主机连接开发板的网线是通的并且VMware虚拟网络编辑器中桥接模式正确“桥接到”了对应的物理网卡是有线网卡就别选成无线网卡。检查2IP地址与子网掩码确保Ubuntu中桥接网卡的静态IP与开发板IP在同一网段。192.168.100.100/24和192.168.100.10是在同一网段192.168.100.0/24。如果开发板是192.168.1.10你的虚拟机IP也必须是192.168.1.xxx。检查3主机防火墙有时主机Windows的防火墙会阻止虚拟机与物理网络之间的通信。可以暂时关闭主机防火墙测试如果问题解决再在防火墙规则中为VMware相关进程如vmware-hostd.exe或虚拟网卡添加允许规则。检查4路由表在Ubuntu终端输入ip route show。确保没有错误的路由条目将发往开发板网段如192.168.100.0/24的流量指向了错误的接口如ens33。发往开发板网段的流量其出口接口应该是ens34。问题二可以ping通开发板但无法访问互联网。这通常不是NAT网卡本身的问题而是路由优先级或DNS的问题。检查默认网关运行ip route show default。默认网关应该只有一个并且是通过NAT网卡ens33获取的。如果默认网关错误地指向了桥接网卡ens34的网关比如192.168.100.1那么所有非本地流量都会尝试走向开发板网络自然无法上网。在Netplan配置中确保只有NAT网卡ens33通过DHCP获取网关而桥接网卡ens34不设置gateway4。检查DNS尝试ping www.baidu.com。如果提示“未知的名称或服务”但直接ping IP如14.119.104.254能通就是DNS解析失败。在Netplan配置中为ens33NAT网卡明确指定DNS服务器或者在系统级修改/etc/resolv.conf如果使用systemd-resolved则修改/etc/systemd/resolved.conf。问题三重启后网络配置失效或接口名称变化。这是一个常见痛点。Ubuntu可能会根据设备检测顺序重命名网络接口导致ens33和ens34互换。更稳定的方法是使用网卡的MAC地址进行匹配。在Netplan配置中可以这样写network: version: 2 renderer: networkd ethernets: id-for-nat: match: macaddress: 00:0c:29:xx:xx:xx # 替换为你的NAT网卡MAC地址 dhcp4: true set-name: nat-port id-for-bridge: match: macaddress: 00:0c:29:yy:yy:yy # 替换为你的桥接网卡MAC地址 addresses: - 192.168.100.100/24 set-name: bridge-port你可以通过ip link show命令查看每个接口的MAC地址。set-name可以为你匹配到的接口设置一个易于识别的固定名称。经过以上步骤你的Ubuntu虚拟机就拥有了稳定、高效的双网络通道。这个配置方案不仅适用于嵌入式开发同样适用于任何需要虚拟机同时接入两个隔离网络的场景比如同时连接公司内网和互联网进行测试。记住理解原理是关键它能让你在面对千变万化的具体环境时依然能游刃有余地解决问题。