3. 远程网络拓扑设计

当 Jetson 设备从实验室走向现场,网络就不再是“插上网线就能通”的简单问题。现场可能同时存在千兆有线、厂区 Wi-Fi、4G/5G 蜂窝链路和一条通往运维中心的 VPN 隧道,而运维人员真正关心的只有一件事:从运维中心出发,能否稳定、可预期地到达每一台 Jetson 的 SSH、Web 或自定义服务端口。这就是“可达性”问题。可达性不是“能 ping 通”这么简单,它由地址规划、路由路径、NAT 行为、隧道策略和链路冗余共同决定。

先明确可达性的三个层次

设计拓扑前,需要把“可达”拆成三层来理解。第一层是链路可达:Jetson 的物理或无线接口是否与上游设备建立了二层/三层连接,例如 eth0 是否拿到地址、wlan0 是否完成 DHCP、wwan0 是否拨号成功。第二层是路由可达:从运维中心到 Jetson 的 IP 报文,沿途每一跳是否有明确的路由条目,是否存在被 NAT 隐藏、被防火墙丢弃或被默认路由带偏的情况。第三层是服务可达:即使 IP 能通,目标端口是否被监听、是否被 ufw/iptables 拦截、SSH 是否绑定在正确的接口上。

很多“设备失联”的排障之所以低效,是因为把三层混在一起查。正确的做法是先确认链路,再确认路由,最后确认服务,逐层收敛。

混合组网下的典型拓扑

一个可落地的混合拓扑通常包含四类角色:现场 Jetson 节点、现场接入设备(交换机/AP/工业路由器)、运营商蜂窝网络、以及运维中心的 VPN 网关。Jetson 优先走有线,Wi-Fi 作为同机房内的移动或补充接入,4G/5G 作为有线与 Wi-Fi 都失效时的兜底链路。三条链路不应各自为政,而应通过路由优先级形成明确的“主—备”关系。

Jetson 混合组网可达性拓扑(主—备链路) 运维中心 VPN 网关 10.8.0.1 运维终端 10.8.0.10 监控/批量管理平台 WireGuard / IPsec 隧道 10.8.0.0/24 现场工业路由器 LAN 192.168.10.1/24 VPN 客户端 10.8.0.2 NAT + 防火墙策略 有线 eth0(主) Wi-Fi wlan0(备) 4G/5G wwan0(兜底) 现场交换机 VLAN 10 / 192.168.10.0 厂区 AP SSID: factory-iot 运营商基站 公网 APN Jetson #1 eth0 192.168.10.11 wlan0 192.168.20.11 wwan0 10.20.30.11 Jetson #2 eth0 192.168.10.12 wlan0 192.168.20.12 wwan0 10.20.30.12 Jetson #N eth0 192.168.10.1N wlan0 192.168.20.1N wwan0 10.20.30.1N 有线主链路 Wi-Fi 备用链路 4G/5G 兜底链路 VPN 隧道

地址规划:避免“三张网各说各话”

混合组网最容易踩的坑是地址冲突。假设有线网段是 192.168.10.0/24,Wi-Fi 网段是 192.168.20.0/24,蜂窝链路通常由运营商分配公网或私网地址。如果现场路由器 LAN 口和运维中心内网都用了 192.168.1.0/24,VPN 建立后就会出现路由歧义。因此建议:现场有线、Wi-Fi、蜂窝分别使用互不重叠的私网段,VPN 隧道单独使用 10.8.0.0/24 这类专用网段,并在路由器上为每台 Jetson 保留固定地址或 DHCP 静态绑定。

一个可参考的规划示例如下:有线 192.168.10.0/24,Wi-Fi 192.168.20.0/24,蜂窝 10.20.30.0/24,VPN 10.8.0.0/24。Jetson 的 eth0 固定为 192.168.10.11,wlan0 为 192.168.20.11,wwan0 由运营商分配。这样无论从哪条链路进入,运维中心都能通过 VPN 网段中的隧道地址定位到设备。

路由优先级与链路切换

三条链路同时存在时,必须明确谁优先。Linux 下通过路由 metric 控制:metric 越小优先级越高。典型配置是给有线默认路由 metric 100,Wi-Fi metric 200,蜂窝 metric 300。这样当有线断开时,内核会自动切换到 Wi-Fi;Wi-Fi 也断开时,再走蜂窝。可以用以下命令查看和调整:

# 查看当前路由与 metric
ip route show

# 为有线添加低 metric 默认路由
sudo ip route replace default via 192.168.10.1 dev eth0 metric 100

# Wi-Fi 作为备用
sudo ip route replace default via 192.168.20.1 dev wlan0 metric 200

# 蜂窝兜底
sudo ip route replace default via 10.20.30.1 dev wwan0 metric 300

需要注意的是,metric 切换只解决“出站选路”,不解决“入站可达”。如果 Jetson 位于运营商 NAT 之后,运维中心无法主动发起连接,此时必须依靠 Jetson 主动向 VPN 网关建立隧道,或使用反向 SSH、内网穿透等机制。这也是为什么在混合组网中,VPN 通常由现场路由器或 Jetson 自身作为客户端主动拨入,而不是等待中心侧连接。

可达性验证的四个检查点

拓扑设计完成后,应按顺序验证。第一,检查接口状态:ip -br addr 确认 eth0、wlan0、wwan0 是否都有地址。第二,检查路由表:ip route get 10.8.0.1 确认去往 VPN 网关走的是预期接口。第三,检查隧道:wg show 或 ipsec status 确认握手成功、最近握手时间在合理范围内。第四,检查服务:从运维中心执行 nc -vz 10.8.0.11 22,确认 SSH 端口可达。四个检查点全部通过,才说明该 Jetson 在当前拓扑下真正可达。

建议为每台 Jetson 在监控平台登记“主用地址 + 备用地址 + 隧道地址”三组信息,并在拓扑变更后同步更新。可达性问题的根因,往往不是设备故障,而是地址或路由记录与现场实际不一致。

冗余不等于可靠:避免路由环路与黑洞

多链路并存时,如果配置不当,可能出现路由环路或黑洞。例如有线和 Wi-Fi 同时发布默认路由且 metric 相同,内核会按哈希或先到先得选择,导致流量忽左忽右;又比如蜂窝链路的默认路由被错误地设为最低 metric,所有流量都走计费的 4G,既慢又贵。因此,除了设置 metric,还应配合策略路由或 ip rule,让去往 VPN 网关的流量始终走当前可用链路,而普通业务流量按优先级分流。

最后要强调,拓扑图不是画完就结束的文档。现场增加一台交换机、更换 AP 的 SSID、运营商更换 APN,都可能改变可达路径。把拓扑、地址表、路由策略和验证命令放在同一份运维手册中,并定期用脚本批量执行可达性检查,才能让“远程可达”从一次性配置变成可持续保障的能力。