在日常使用 Linux(例如 Jetson、树莓派、服务器)过程中,我们经常会遇到以下几个问题:
- 如何知道系统当前是走 有线网络还是无线网络?
- 如何判断是连接了 公网还是内网?
169.254.x.x
是什么?为什么我连不上网?- 多网卡时,系统是如何决定走哪张网卡的?
本篇博客将从实际命令出发,带你快速掌握在 Linux 中分析网络连接的技巧。
🌐 一、判断当前网络走的是哪张网卡
我们可以用 ip route get
命令来查看访问某个公网地址(如百度)时,走的是哪张网卡:
ip route get 180.101.49.11
输出示例:
180.101.49.11 via 192.168.1.1 dev eth0 src 192.168.1.110 uid 1000
cache
dev eth0
:说明当前走的是 eth0 网卡src 192.168.1.110
:本机出口 IPvia 192.168.1.1
:网关地址
如果你看到的是 wlan0
或其他,就说明当前走的是无线网络或其他类型网卡。
📶 二、判断 IP 是公网、内网还是 Link-local 地址
私有地址段(内网 IP):
地址段 | 说明 |
---|---|
10.0.0.0/8 | Class A 内网 |
172.16.0.0/12 | Class B 内网 |
192.168.0.0/16 | Class C 内网 |
只要你获取到的 IP 是以上范围,就是内网地址,需要依靠网关(路由器)通过 NAT 访问公网。
Link-local 地址(局域通信,不能出网):
169.254.0.0/16
这是系统在 没有 DHCP 服务 时自动分配的地址,通常用于两个设备之间点对点通信(比如 Jetson 与激光雷达、开发板直连),不能访问外网。
🧭 三、查看所有网卡及其类型
命令:
ifconfig
或现代系统推荐用:
ip addr show
网卡名通常能直接告诉你类型:
网卡名示例 | 类型 |
---|---|
eth0 , eth1 |
有线网卡 |
wlan0 |
无线网卡(WiFi) |
usb0 , enx… |
USB 网卡 |
lo |
本地回环地址 |
docker0 |
虚拟网桥(Docker) |
结合网卡分配的 IP 地址,可以判断出:
- 哪张网卡正在连接网络
- 是不是走了公网
- 是否有不正常的
169.254.x.x
问题
🧪 四、判断是否真的走了公网
我们可以用 curl
获取公网出口 IP:
curl ifconfig.me
或者:
curl cip.cc
如果你看到的 IP 和你的 src
地址不同,比如:
本机 IP:192.168.1.110
公网 IP:123.182.77.90
那就说明你是通过 NAT 路由器访问公网的。这种情况是非常常见的家庭或公司网络结构。
📋 五、常见网络结构图示意
[Jetson:192.168.1.110] --> [路由器/NAT:192.168.1.1] --> [公网:百度]
[Jetson:169.254.x.x] --> [直连设备:169.254.x.x]
(局域通信,无公网能力)
🎯 六、总结
项目 | 判断方法 | 示例 |
---|---|---|
当前走的网卡 | ip route get |
dev eth0 |
出口 IP | ip route get / curl |
src 192.168.1.110 |
是否是公网 | 判断 IP 是否是私有地址 | 192 开头 = 内网 |
169.254 地址含义 | 系统自动分配,不能上网 | 仅用于直连通信 |
网卡类型 | 网卡名分析 + ip addr |
eth0 , wlan0 等 |
🧠 掌握这些命令和逻辑,你就可以轻松应对 Linux 网络分析中的各种问题!
如果你觉得这篇文章有帮助,欢迎点赞 👍 收藏 ⭐,或者留言一起讨论!