核心思想
在 RK3588 开发过程中,我需要同时使用 Windows 主机、VMware 中的 Ubuntu 虚拟机和 RK3588 开发板:Windows 用于日常开发与调试,Ubuntu 用于编译或运行 Linux 环境下的程序,RK3588 则负责板端部署。为了让三者能够互相传输文件、访问服务和调试程序,我搭建了一套不依赖路由器的三端局域网。
一、最终目标
最终使用的地址规划如下:
| 设备 | 网络接口 | IPv4 地址 | 子网掩码 | 默认网关 |
|---|---|---|---|---|
| Windows 主机 | 真实有线网卡 | 192.168.20.1 |
255.255.255.0 |
留空 |
| RK3588 | 板端有线网卡 | 192.168.20.2 |
255.255.255.0 |
留空 |
| Ubuntu 虚拟机 | ens33 |
192.168.20.5 |
255.255.255.0 |
留空 |
三个地址的子网掩码都是 /24,因此它们都属于 192.168.20.0/24 网段,可以直接通信,不需要路由器和默认网关。
实际连接关系如下:
1 | RK3588(192.168.20.2) |
需要注意的是,“三个设备使用同一个网口”并不是把三个 IP 全部配置在 Windows 网卡上。Windows、Ubuntu 和 RK3588 各自拥有独立地址,VMware 只是把 Ubuntu 的虚拟网卡桥接到了 Windows 的真实有线网卡。
二、配置 Windows 有线网卡
首先使用网线直接连接电脑和 RK3588。Windows 可以继续通过 Wi-Fi 上网,有线网口只负责与开发板通信。
按下 Win + R,输入:
1 | ncpa.cpl |
找到与 RK3588 相连的“以太网”,右键进入:
1 | 属性 → Internet 协议版本 4(TCP/IPv4)→ 属性 |

选择“使用下面的 IP 地址”,填写:
1 | IP 地址:192.168.20.1 |

也可以在管理员 PowerShell 中执行:
1 | netsh interface ipv4 set address name="以太网" static 192.168.20.1 255.255.255.0 |
随后检查配置:
1 | ipconfig |
确认真实有线网卡显示 192.168.20.1。这里一定要分清真实“以太网”和 VMware 创建的 VMnet1、VMnet8 虚拟网卡。
三、配置 VMware 桥接网络
这一部分是三端通信的关键。虚拟机如果处于 NAT 或仅主机模式,通常不能像独立设备一样直接进入 RK3588 所在的物理网络,因此需要使用桥接模式。
先将 Ubuntu 虚拟机完全关机,然后在 VMware 中打开:
1 | 编辑 → 虚拟网络编辑器 → 更改设置 |
选择 VMnet0,设置为:
1 | 网络类型:桥接模式 |
“桥接到”最好不要选择“自动”,而是明确选择连接 RK3588 的 Realtek 或 Intel 有线网卡。不要选择 Wi-Fi、VMnet1、VMnet8、蓝牙或者 VPN 网卡。

接着打开 Ubuntu 虚拟机设置:
1 | 虚拟机设置 → 网络适配器 |
选择:
1 | 自定义:特定虚拟网络 → VMnet0 |
同时确认“已连接”和“启动时连接”已经勾选。如果界面中有“复制物理网络连接状态”,也可以一并勾选。
VMnet0、VMnet1 和 VMnet8 的区别
| 网络 | 典型用途 |
|---|---|
| VMnet0 | 桥接到真实网络,让虚拟机像独立电脑一样接入物理局域网 |
| VMnet1 | 仅主机网络,主要用于虚拟机与宿主机之间通信 |
| VMnet8 | NAT 网络,主要用于让虚拟机借助宿主机访问互联网 |
排障过程中,我曾发现 Windows 的 VMnet1 也占用了 192.168.20.0/24 网段。这会导致 Windows 同时存在两条相同网段的路由,数据可能从错误的接口发出。因此,最终配置时应避免让 VMnet1 和真实有线网卡处于同一网段。可以暂时禁用 VMnet1,或者将它改为其他网段,例如 192.168.200.0/24。
四、配置 Ubuntu 虚拟机
启动 Ubuntu 后,先查看网卡名称:
1 | ip -br link |
我的虚拟网卡名称是 ens33。不同环境中也可能显示为 ens160、enp0s3 或 eth0,后续命令需要使用实际名称。
使用图形界面配置
依次打开:
1 | 设置 → 网络 → 有线 → 齿轮按钮 → IPv4 |
将 IPv4 方法改成“手动”,填写:
1 | 地址:192.168.20.5 |
保存后关闭并重新开启有线连接。
使用 NetworkManager 配置
先查看连接名称:
1 | nmcli device status |
假设连接名称为 Wired connection 1,执行:
1 | sudo nmcli connection modify "Wired connection 1" \ |
重新启用连接:
1 | sudo nmcli connection down "Wired connection 1" |
检查结果:
1 | ip -4 addr show ens33 |
正常情况下可以看到:
1 | inet 192.168.20.5/24 |
如果虚拟机还需要访问互联网,可以再添加一块 NAT 网卡:第一块网卡使用 VMnet0 与 RK3588 通信,第二块网卡使用 VMnet8 上网。此时桥接网卡不应抢占默认路由,所以设置了 ipv4.never-default yes。
五、配置 RK3588
在 RK3588 上查看接口名称:
1 | ip -br link |
常见名称是 eth0 或 end0。假设实际接口为 eth0,可先临时配置:
1 | sudo ip link set eth0 up |
如果网卡原来有错误地址,并且当前是在串口、HDMI 或本地终端中操作,可以清除后重新配置:
1 | sudo ip addr flush dev eth0 |
如果当前是通过 SSH 远程连接 RK3588,不要直接执行 ip addr flush,否则连接会立即中断。
检查配置:
1 | ip -4 addr show eth0 |
临时配置在重启后可能消失。永久配置方式要根据板端使用的是 NetworkManager、/etc/network/interfaces 还是其他网络管理服务决定。
六、逐步验证三端通信
网络排查时不要一开始就测试业务程序,而应先确认最基本的 Ping。
Windows 测试
1 | ping 192.168.20.2 |
Ubuntu 测试
1 | ping -c 4 192.168.20.1 |
RK3588 测试
1 | ping -c 4 192.168.20.1 |
理想情况下,三台设备之间的六个方向都应该能够通信。如果 Windows 能 Ping RK3588,但 RK3588 不能 Ping Windows,通常不是网线问题,而是 Windows 防火墙拦截了入站 ICMP 请求。
七、解决单向 Ping 问题
先在管理员 PowerShell 中查看网络类型:
1 | Get-NetConnectionProfile |
将连接 RK3588 的网络设为专用网络:
1 | Set-NetConnectionProfile -InterfaceAlias "以太网" -NetworkCategory Private |
然后添加允许 ICMPv4 的入站规则:
1 | New-NetFirewallRule ` |
也可以查看 ARP 或邻居表,判断二层通信是否正常。
Windows:
1 | arp -a |
Ubuntu 或 RK3588:
1 | ip neigh |
如果能够看到对方的 IP 和 MAC 地址,说明物理连接和桥接基本正常;如果长期显示 INCOMPLETE 或 FAILED,应重点检查网线、网卡状态、IP 地址和 VMware 桥接对象。
八、为什么 Ping 通了,程序还是访问不了
Ping 使用 ICMP 协议,只能证明基础网络连通,并不能证明某个 TCP 或 UDP 服务已经可以访问。
例如 Ubuntu 上运行了一个 8080 端口的服务,RK3588 需要访问:
1 | curl http://192.168.20.5:8080 |
服务必须监听 0.0.0.0:8080 或 192.168.20.5:8080。如果只监听 127.0.0.1:8080,就只能在 Ubuntu 本机通过 localhost 访问。
Linux 中可以检查监听状态:
1 | ss -lntp | grep 8080 |
下面两种监听地址的含义不同:
1 | 127.0.0.1:8080 只允许本机访问 |
因此,遇到“Ping 通但 curl 不通”时,应继续检查:
- 服务是否已经启动;
- 服务监听的 IP 是否正确;
- 端口是否填写正确;
- Windows 或 Linux 防火墙是否放行该端口;
- 客户端访问的是不是目标设备的真实局域网地址。
九、我的排障顺序
经过这次配置,我更习惯按照网络层次逐步排查:
1 | 物理网线 |
常用检查命令如下:
1 | ip -br link |
这种顺序可以避免在基础网络尚未打通时,反复修改应用程序代码。
十、总结
最终稳定的三端通信配置可以概括为:
1 | Windows 有线网卡:192.168.20.1/24 |
开发建议
对于嵌入式开发来说,这套思路不仅适用于 RK3588,也适用于树莓派、Jetson、其他 Linux 开发板以及通过以太网通信的 FPGA 设备。只要按照“物理连接—IP 与路由—Ping—端口—应用”的顺序排查,大多数网络问题都能逐步定位。