解决Jetson Nano网络连接问题:从诊断到修复的完整指南

😶‍🌫️前言

在嵌入式开发过程中,网络连接问题是我们经常遇到的挑战之一。本文记录了我在使用NVIDIA Jetson Nano开发时遇到的一个非典型的网络问题:设备可以通过SSH与本地电脑连接,但无法访问外网。通过系统化的排查和分析,最终找到了问题根源并成功解决。记录此篇防止遇到类似的问题还有以后可以作为项目的意外提一嘴。

问题现象

  • Jetson Nano已连接Wi-Fi(SSID: HEU5147),获得IP地址192.168.0.50
  • 可以通过SSH从Windows电脑(IP: 192.168.0.105)连接到Jetson Nano
  • 无法ping通默认网关192.168.0.1,提示Destination Host Unreachable
  • 无法访问任何外部网站或服务比方说GitHub

初步诊断

查看Jetson Nano的网络配置:

1
2
3
4
5
6
7
jetson@unbutu:~/boiny_src/bd_car$ ip route
default via 192.168.0.1 dev wlan0 proto static metric 20600
default via 192.168.55.100 dev l4tbr0 metric 32766 linkdown
169.254.0.0/16 dev docker0 scope link metric 1000 linkdown
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.50 metric 600
192.168.55.0/24 dev l4tbr0 proto kernel scope link src 192.168.55.1 linkdown

尝试ping网关:

1
2
3
4
5
6
jetson@unbutu:~/boiny_src/bd_car$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.50 icmp_seq=1 Destination Host Unreachable
From 192.168.0.50 icmp_seq=2 Destination Host Unreachable
From 192.168.0.50 icmp_seq=3 Destination Host Unreachable
...

问题分析

1. 网络配置比对

无意间通过查看路由器的ip,发现一个关键线索:

1
2
路由器的默认网关:192.168.0.106
Jetson Nano的默认网关:192.168.0.1

这表明Jetson Nano配置了错误的网关地址,导致无法正确路由到外网。

2. 网络通信原理分析

IP地址和子网

Jetson Nano(192.168.0.50)和Windows电脑(192.168.0.105)在同一子网(192.168.0.0/24),因此局域网通信(如SSH)正常。

默认网关作用

网关是设备访问外网的必经之路。当Jetson Nano需要访问非本地网络的资源时,数据包会被发送到默认网关,再由网关转发到目标网络。由于配置了错误的网关地址,数据包无法被正确转发,导致外网不可访问。

为什么SSH正常但外网不通

SSH连接使用的是局域网内部通信,不需要经过网关。而访问外网则必须通过正确配置的网关进行路由。

✅解决

方案一:修正默认网关(推荐)

  1. 删除错误网关并添加正确网关 ❗主要操作

    1
    2
    sudo ip route del default via 192.168.0.1
    sudo ip route add default via 192.168.0.106 dev wlan0
  2. 验证路由表更新

    1
    ip route
  3. 测试连通性

    1
    2
    3
    ping 192.168.0.106  # 测试网关连接
    ping 8.8.8.8 # 测试外网连接
    ping google.com # 测试DNS解析
  4. 配置DNS服务器

    如果域名解析失败,配置DNS:

    1
    sudo nano /etc/resolv.conf

    添加以下内容:

    1
    2
    nameserver 8.8.8.8
    nameserver 8.8.4.4

​ 后面操作可选

  1. 持久化网络配置

    使用NetworkManager持久保存配置:

    1
    2
    3
    sudo nmcli con mod HEU5147 ipv4.gateway 192.168.0.106
    sudo nmcli con mod HEU5147 ipv4.dns "8.8.8.8 8.8.4.4"
    sudo nmcli con up HEU5147
  2. 重启网络服务

    1
    sudo systemctl restart NetworkManager

学到一些 Linux常用的和网络相关的指令

附录:常用网络诊断命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 查看网络接口
ip a
ifconfig

# 查看路由表
ip route

# 查看DNS配置
cat /etc/resolv.conf

# 查看Wi-Fi连接
nmcli dev wifi

# 查看活动连接
nmcli connection show --active

# 连接wifi
nmcli device wifi connect <wifi_name> password <wifi_key>