【Ubuntu】Ubuntu 虚拟机配置三网段(桥接-WIFI、仅主机、桥接-开发板)

引言

为了更方便使用虚拟机,我们来配置一下三网段。

网络连接模式

模式 适用场景 特点 类比
NAT 个人上网/新手首选 虚拟机共享主机IP,能上网但隐身 家用WiFi
桥接 服务器/需要被局域网访问 虚拟机会获得独立IP,像真机一样 手机开热点
仅主机 完全隔离的网络测试 只能和主机通信,完全不上网 飞行模式+蓝牙

虚拟机设置

image

image

image

三网段

  1. ens33:(WIFI桥接,自动获取IP,用于外网访问)
  2. ens37:(仅主机模式,静态IP,用于主机SSH/文件共享)
  3. ens38:(桥接模式,静态IP,用于开发板连接)

Ubuntu 系统设置

1、进入 /etc/netplan 文件夹

有些教程说的是在"/etc/network/interfaces"路径下,但是我发现并没有,查了一下才知道 Ubuntu 20.4+ 版本的是在 netplan 文件夹里配置的

cd /etc/netplan/

2、修改配置文件

在 netplan 下找到"50-cloud-init.yaml"配置文件(每个人文件名称可能不一样)。

输入:
sudo nano 50-cloud-init.yaml

写入三网段配置(注意 yaml 语法非常严格),以下网络 IP 地址只是参考,可以根据实际需求自定义设置:

network:
    ethernets:
        # WIFI桥接,自动获取IP,用于外网访问
        ens33:
            dhcp4: true # 自动获取IP和路由,无需手动配网关

        # 仅主机模式,静态IP,用于主机SSH/文件共享
        ens37:
            dhcp4: false
            addresses: [192.168.184.184/24] # /24 = 子网掩码255.255.255.0

        # 开发板桥接,静态IP,用于开发板连接
        ens38:
            dhcp4: false
            addresses: [192.168.155.201/24]

    version: 2
    renderer: networkd  # 强制使用networkd,避免兼容问题

写完之后按 Ctrl+O 保存,按 Ctrl+X 退出。

# 保存退出后,应用配置(无需重启)
# 输入:
sudo netplan apply
# 返回:
WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.

我们配置的是 “简单三网卡本地通信”,根本不需要 OVS 服务,系统提示 “OVS 服务未运行”,只是 netplan 在检测所有可能的网络组件,并非报错。我们用不到 OVS,它没运行完全不影响我们的核心需求。

3、网卡 IP 地址修改

虽然上面说的是参考的 ip 地址,但是我摆出来的实际上是已经修正了的。修正需要两个步骤:

  1. 查看虚拟机 VMnet 与 ens 的匹配。
  2. Windows 网络配置下的 VMnet1 的 IP 地址与 Ubuntu 下的 ens37 网卡(仅主机)的 IP 地址在同一网段。
  3. 「Ubuntu 网卡(ens38)、Windows 以太网口、开发板」三者处于「同一网段」,且各自 IP 唯一不重复。

VMnet 与 ens 的匹配

虚拟机设置中查看三网段分别对应的 MAC 地址

image

image

image

Ubuntu 系统中查看网络的 MAC 地址

输入:
ifconfig
返回:
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.112.59  netmask 255.255.255.0  broadcast 192.168.112.255
        inet6 240e:47e:76a0:16f9:20c:29ff:fec2:d470  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::20c:29ff:fec2:d470  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c2:d4:70  txqueuelen 1000  (以太网)
        RX packets 11286  bytes 1050916 (1.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7802  bytes 985320 (985.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.184.184  netmask 255.255.255.0  broadcast 192.168.184.255
        inet6 fe80::20c:29ff:fec2:d47a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c2:d4:7a  txqueuelen 1000  (以太网)
        RX packets 1139  bytes 85058 (85.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1524  bytes 285704 (285.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.133.133  netmask 255.255.255.0  broadcast 192.168.133.255
        inet6 fe80::20c:29ff:fec2:d484  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:c2:d4:84  txqueuelen 1000  (以太网)
        RX packets 8  bytes 632 (632.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 177  bytes 13304 (13.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (本地环回)
        RX packets 244  bytes 25036 (25.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 244  bytes 25036 (25.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

匹配总结

ens33 - VMnet0 WIFI桥接
ens37 - VMnet1 仅主机
ens38 - VMnet8 开发板桥接

Windows 下的 VMnet1 与 Ubuntu 下的 ens37 网卡的 IP 地址在同一网段

打开 Windows 下的网络连接,查看 VMnet1 的 IP 地址:

image

查询结束后,将 Ubuntu 的 IP 地址修改:

对应关系 Windows 主机 VMnet 信息 要求 Ubuntu 配置
ens37 ↔ VMnet1 IP:192.168.184.1(子网:192.168.184.0/24) 192.168.184.x(如 192.168.184.184)/24

开发板与 Windows 以太网口与 ens38 网卡的 IP 地址在同一网段

「Ubuntu 网卡(ens38)、Windows 以太网口、开发板」三者处于「同一网段」,且各自 IP 唯一不重复。

  1. 使用交叉网线连接开发板和pc,连接成功后,在查看网络连接中可以看到本地网卡已连接。
    image

  2. 右键属性,选择Internet协议版本4(Tcp/IPv4),选择使用下面的 IP 地址,设置 IP 地址和子网掩码。
    所设置的 IP 地址与下面将要配置的开发板 IP 地址在同一网段,这里设置为 192.168.155.200
    image

  3. 在开发板中执行 ifconfig etj0 192.168.155.155,eth0为开发板网卡。
    192.168.155.155 与上面配置的 PC IP 在同一网段。使用 ifconfig 命令可以看到 IP 地址:
    image

  4. 配置 Ubuntu ens38 网卡的 IP 地址为 192.168.155.201,修正成功,后面测试即可 ping 通。

4、开机手动配置 IP / 编译自启动配置 IP

开机手动配置 IP

sudo ifconfig ens37 192.168.184.184
sudo ifconfig ens38 192.168.155.201

编译自启动配置 IP

打开开机文件:

sudo nano /etc/rc.local

修改开机文件:

#!/bin/bash
# 这里添加你的开机执行命令,并最后以 exit 0 结尾

# 打印日志
echo "rc.local executed at $(date)" >> /var/log/rc-local.log

# 开机自动配置 ens37 网卡仅主机模式的 IP 地址
sudo ifconfig ens37 192.168.184.184
# 开机自动配置 ens38 开发板桥接模式的 IP 地址
sudo ifconfig ens38 192.168.155.201

exit 0

5、测试

VMnet0 - ens33 WIFI桥接用于外网访问

Ping 公网 IP(排除 DNS 干扰,直接验证路由)

输入:
ping -c 4 8.8.8.8
返回:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=106 time=251 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=106 time=351 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=106 time=330 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=106 time=288 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 251.372/305.173/350.674/38.346 ms

Ping 公网域名(验证 DNS 解析)

输入:
ping -c 4 www.baidu.com
返回:
PING www.baidu.com(240e:ff:e020:99b:0:ff:b099:cff1 (240e:ff:e020:99b:0:ff:b099:cff1)) 56 data                                                                                                                                 bytes
64 bytes from 240e:ff:e020:99b:0:ff:b099:cff1 (240e:ff:e020:99b:0:ff:b099:cff1): icmp_seq=1 tt                                                                                                                                l=53 time=32.3 ms
64 bytes from 240e:ff:e020:99b:0:ff:b099:cff1 (240e:ff:e020:99b:0:ff:b099:cff1): icmp_seq=2 tt                                                                                                                                l=53 time=49.8 ms
64 bytes from 240e:ff:e020:99b:0:ff:b099:cff1 (240e:ff:e020:99b:0:ff:b099:cff1): icmp_seq=3 tt                                                                                                                                l=53 time=49.7 ms
64 bytes from 240e:ff:e020:99b:0:ff:b099:cff1 (240e:ff:e020:99b:0:ff:b099:cff1): icmp_seq=4 tt                                                                                                                                l=53 time=38.7 ms

--- www.baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 32.279/42.613/49.826/7.480 ms

VMnet1 - ens37 仅主机模式

Ubuntu Ping Windows 主机

在 Ubuntu 系统下直接 Ping 向 Windows,会失败,原因是 Ping 失败是 Windows 防火墙或网络策略阻断了 ICMP 协议(Ping 依赖的协议),需要在 Windows 主机上「允许 ICMP 入站规则」:

  • 以下是 AI 生成流程,实测可用:
  • 打开「控制面板」→「系统和安全」→「Windows Defender 防火墙」→「高级设置」;
  • 左侧选择「入站规则」,右侧点击「新建规则」;
  • 规则类型选择「自定义」,点击「下一步」;
  • 协议类型选择「ICMPv4」,点击「下一步」;
  • 操作选择「允许连接」,点击「下一步」;
  • 配置文件保持默认(域、专用、公用全勾选),点击「下一步」;
  • 名称输入「允许 ICMP 入站(Ping)」,点击「完成」;

image

输入:
ping -c 4 192.168.184.1
返回:
PING 192.168.184.1 (192.168.184.1) 56(84) bytes of data.
64 bytes from 192.168.184.1: icmp_seq=1 ttl=128 time=2.04 ms
64 bytes from 192.168.184.1: icmp_seq=2 ttl=128 time=3.88 ms
64 bytes from 192.168.184.1: icmp_seq=3 ttl=128 time=0.402 ms
64 bytes from 192.168.184.1: icmp_seq=4 ttl=128 time=3.65 ms

--- 192.168.184.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3006ms
rtt min/avg/max/mdev = 0.402/2.492/3.882/1.400 ms

Windows 主机 Ping Ubuntu

image

Windows 下使用 SSH 连接 Ubuntu

按下Win+R输入cmd打开控制台,输入ssh Ubuntu系统的用户名@VMnet1的IP地址,再输入 Ubuntu 系统的密码即可连接成功。

输入:
ssh Ubuntu系统的用户名@VMnet1的IP地址
返回:
[email protected]'s password:
Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-164-generic x86_64)
 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of 2025年 12月 20日 星期六 16:01:43 UTC

  System load:            0.01
  Usage of /:             11.2% of 185.96GB
  Memory usage:           13%
  Swap usage:             0%
  Processes:              267
  Users logged in:        1
  IPv4 address for ens33: 192.168.112.59
  IPv6 address for ens33: 240e:47e:76a0:16f9:20c:29ff:fec2:d470

 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s
   just raised the bar for easy, resilient and secure K8s cluster deployment.

   https://ubuntu.com/engage/secure-kubernetes-at-the-edge

Expanded Security Maintenance for Applications is not enabled.

69 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status

New release '24.04.3 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sat Dec 20 16:00:42 2025 from 192.168.112.118
shf@ubuntu-skyrim:~$

VMnet8 - ens38 仅桥接用于连通开发板

主要还是保证 「Ubuntu 网卡(ens38)、Windows 以太网口、开发板」三者处于「同一网段」,且各自 IP 唯一不重复。

  1. 先保证 Ubuntu Ping 通 Windows 主机,如上。
  2. 再保证开发板 Ping 通 Windows 主机。
  3. 即可保证 Ubuntu Ping 通开发板。

详细步骤可以看此文章:PC/Ubuntu/开发板相互ping通(电脑与开发板直接用网线连接)

要记得关闭 Windows 的防火墙。

最后总结注意

  1. ns33 是分配WIFI上网,由系统自动分配上网地址。

  2. ens38 的 address 192.168.184.184 要看虚拟机里面的"查看网络连接"中的VMnet1(仅主机)中分配的地址比如子网192.168.184.1,如下,(有的可能不是分配 184)那就可以设置address 192.168.184.199 或者address 192.168.184.200 都可以,按照个人情况。
    image

  3. ens39 的address 192.168.155.201 这个是开发板访问虚拟机Ubuntu系统的。同时开发板的地址是192.168.155.155,注意要跟PC(ubuntu)同一网段。比如 WIN11 电脑的网口(以太网)IP地址是设置 192.168.155.200,如下。
    image

博客导航

博客导航

posted @ 2025-12-20 23:22  膝盖中箭卫兵  阅读(160)  评论(0)    收藏  举报
ORCID iD icon https://orcid.org/0000-0001-5102-772X