在 Linux 中判断当前网络类型与网卡类型的实用方法(内外网判断 + 网卡分类)

发布于:2025-04-18 ⋅ 阅读:(76) ⋅ 点赞:(0)

在日常使用 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:本机出口 IP
  • via 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 网络分析中的各种问题!

如果你觉得这篇文章有帮助,欢迎点赞 👍 收藏 ⭐,或者留言一起讨论!


网站公告

今日签到

点亮在社区的每一天
去签到