Ubuntu 双网卡网络配置实战:WiFi 静态 IP 与机器人下位机通信(nmcli 配置
适用场景:Ubuntu、ROS 2、机器人开发、工控机、双网卡、静态 IP 配置

在机器人开发过程中,我们经常会遇到这样的网络需求:
-
无线网卡(WiFi):连接实验室或公司的无线网络,与上位机、大模型服务或局域网设备通信。
-
有线网卡(Ethernet):连接机器人底盘、运动控制器或下位机,进行实时控制。
看似简单,但真正配置时却容易遇到各种问题,例如:
-
网卡名称为什么不是
wlan0? -
DHCP 自动分配了错误的 IP。
-
/23子网掩码到底是什么意思? -
修改 WiFi 后,有线网络还能正常通信吗?
本文将结合一次真实的配置过程,详细介绍如何在 Ubuntu 中使用 NetworkManager(nmcli) 配置 WiFi 静态 IP,同时保证 有线网络正常连接机器人下位机。
一、需求背景
本次网络拓扑如下:
WiFi
192.168.17.3/23
│
│
┌───────────────────┐
│ 无线路由器 │
│ 192.168.16.1 │
└───────────────────┘
│
──────────────────────────────────
Ubuntu 工控机
──────────────────────────────────
│
Ethernet
192.168.26.12/24
│
机器人下位机
192.168.26.1
目标如下:
| 网络 | 配置 |
|---|---|
| WiFi | 固定 IP:192.168.17.3/23 |
| 网关 | 192.168.16.1 |
| 有线网 | 保持 192.168.26.12/24 不变 |
| 下位机 | 192.168.26.1 正常通信 |
也就是说:
-
WiFi 用于访问局域网。
-
有线网专门用于机器人通信。
-
两个网络互不影响。
二、踩坑记录
真正配置时,遇到了几个比较典型的问题。
坑一:网卡名称为什么和教程不一样?
很多教程都是:
wlan0
而我的电脑显示的是:
wlo1
甚至还能看到:
altname wlp0s20f3
刚开始还以为系统识别错了。
其实并不是。
这是 Ubuntu 新版本采用的 Predictable Network Interface Names(可预测网络接口命名)。
也就是说:
-
wlan0 -
wlo1 -
wlp0s20f3
本质上都可能表示同一块无线网卡,只是命名规则不同。
因此,不要照着教程死敲网卡名称,而应该先查看自己的设备:
ip addr show
找到真正的无线网卡名称即可。
坑二:DHCP 获取到了错误的 IP
连接 WiFi 后:
192.168.16.215
这是 DHCP 自动分配的地址。
但是设备要求固定使用:
192.168.17.3
因此必须关闭 DHCP,改为静态 IP。
坑三:一直误解了 /23 子网掩码
这是本次配置中最容易忽略的问题。
很多人看到:
192.168.17.3/23
第一反应会认为:
网关是不是也应该是 192.168.17.x?
其实不是。
/23 实际表示什么?
CIDR 表示法中的:
/23
对应子网掩码:
255.255.254.0
它覆盖两个连续的 C 类网段。
也就是说:
192.168.16.0/23
包含:
192.168.16.1
~
192.168.16.255
以及
192.168.17.1
~
192.168.17.255
因此:
IP:
192.168.17.3
网关:
192.168.16.1
完全属于同一个网络。
理解这一点后,很多网络配置问题都会迎刃而解。
三、开始正式配置
1. 查看当前网络状态
首先查看系统中的网络接口:
ip addr show
查看当前可连接的 WiFi:
nmcli device wifi list
如果没有扫描到目标无线网络,可以重新扫描:
sudo nmcli device wifi rescan
查看当前已经建立的连接:
nmcli connection show --active
这一步主要是确认:
-
当前连接的是哪个 WiFi
-
NetworkManager 创建的连接名称是什么
后续修改静态 IP 都需要使用该连接名称。
2. 连接目标 WiFi
如果尚未连接无线网络:
sudo nmcli device wifi connect "RXJQR" password "rxjqrshyxgs" ifname wlo1
连接成功后,再继续配置静态 IP。
3. 修改为静态 IP
这是整个配置过程中最关键的一步。
sudo nmcli connection modify "RXJQR" \
ipv4.method manual \
ipv4.addresses 192.168.17.3/23 \
ipv4.gateway 192.168.16.1 \
ipv4.dns 192.168.16.1,8.8.8.8
下面分别解释每个参数:
ipv4.method manual
关闭 DHCP。
告诉 NetworkManager:
不再自动获取 IP,由用户手动指定。
ipv4.addresses
指定固定 IP:
192.168.17.3/23
ipv4.gateway
指定默认网关:
192.168.16.1
虽然网关属于 16 网段,但由于 /23 覆盖了 16 和 17 两个网段,因此完全合法。
ipv4.dns
指定 DNS:
192.168.16.1
同时增加公共 DNS:
8.8.8.8
防止部分域名解析失败。
四、让配置立即生效
修改完成后,需要重新启动网络连接:
sudo nmcli connection down "RXJQR"
sudo nmcli connection up "RXJQR"
无需重启电脑。
五、验证配置是否成功
首先确认 IP:
ip addr show wlo1
应看到:
inet 192.168.17.3/23
然后测试网关:
ping 192.168.16.1
如果能够正常收到回复,说明 WiFi 网络已经配置成功。
最后确认机器人网络没有受到影响:
ping 192.168.26.1
如果能够正常通信,说明双网卡已经可以同时工作。
六、最终配置结果
| 项目 | 配置 | 状态 |
|---|---|---|
| WiFi IP | 192.168.17.3/23 | ✅ |
| 网关 | 192.168.16.1 | ✅ |
| DNS | 192.168.16.1、8.8.8.8 | ✅ |
| 有线 IP | 192.168.26.12/24 | ✅ 保持不变 |
| 下位机通信 | 192.168.26.1 | ✅ 正常 |
七、总结
这次配置虽然最终只用了几条 nmcli 命令,但真正花时间的是理解网络原理,而不是输入命令。
整个排查过程中,有三个经验值得总结:
-
不要照搬教程中的网卡名称。 不同 Ubuntu 版本的命名方式不同,先通过
ip addr show确认自己的无线网卡。 -
理解子网掩码比记命令更重要。
/23并不是只包含192.168.17.x,而是覆盖192.168.16.x与192.168.17.x两个网段,因此192.168.17.3与192.168.16.1可以正常通信。 -
双网卡可以长期共存。 WiFi 用于访问局域网和互联网,有线网用于机器人控制,只要地址规划合理,二者不会互相影响。
对于机器人开发而言,网络配置几乎是所有调试工作的基础。掌握 nmcli 的使用方法以及子网划分的基本原理,能够帮助我们在部署 ROS 2、连接底盘控制器、调试传感器时少走很多弯路。
如果你正在搭建机器人开发环境,希望这篇文章能为你提供一些参考,也欢迎交流更多关于 Ubuntu、ROS 2 和机器人网络配置的实践经验。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)