Administrator
发布于 2026-10-09 / 3 阅读
0
0

Linux 学习笔记 L5:网络查询与诊断

学会了看文件、改权限,接下来进入 Linux 最实用的领域之一:网络。不管是自己的 VPS 连不上,还是网站打不开,排查思路都离不开这几个命令。这篇把常用的网络查询命令讲透,配上真实输出,照着敲一遍就会。

先理解:Linux 看网络的思路

遇到网络问题,排查顺序一般是:

本机网卡正常吗? → 能 ping 通网关吗? → 能 ping 通外网吗? → DNS 正常吗? → 端口通吗?

一层一层缩小范围。下面每个命令对应其中一层。


ip:查看网卡和 IP 地址(替代 ifconfig)

老教程里用 ifconfig,新系统(Debian 11+、Ubuntu 20.04+)默认没装它了,统一用 ip。

看本机有哪些网卡、IP 是多少

ip addr

输出大概长这样(关键部分):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    inet 172.26.8.214/20 brd 172.26.15.255 scope global eth0

怎么读:

  • lo 是回环网卡(本机自己跟自己说话),127.0.0.1 永远指向本机,不用管。

  • eth0 是真正的网卡,UP 表示已启用。

  • inet 172.26.8.214/20 就是本机的内网 IP,/20 是子网掩码的简写(相当于 255.255.240.0)。

只想看 IP,不想看一堆细节:

ip -brief addr
lo       UNKNOWN  127.0.0.1/8
eth0     UP       172.26.8.214/20

一行一个,清爽。

看路由表:数据包从哪走

ip route
default via 172.26.0.1 dev eth0
172.26.0.0/20 dev eth0 proto kernel scope link src 172.26.8.214

第一行最关键:default via 172.26.0.1 —— 所有不知道往哪发的数据包,都扔给 172.26.0.1 这个网关。这是你上网的“大门”,后面 ping 网关就 ping 它。


ping:测试连通性

最常用的网络命令,没有之一。

ping halo.nya.je
PING halo.nya.je (3.15.231.19) 56(84) bytes of data.
64 bytes from 3.15.231.19: icmp_seq=1 ttl=47 time=188 ms
64 bytes from 3.15.231.19: icmp_seq=2 ttl=47 time=187 ms
^C
--- halo.nya.je ping statistics ---
2 packets transmitted, 2 received, 0% packet loss

解读:

  • 第一行告诉你域名解析到了哪个 IP(3.15.231.19)—— 顺带验证了 DNS 是否正常。

  • time=188 ms 是延迟,数字越小越快。国内 ping 美国 VPS,150-250ms 正常。

  • 0% packet loss 表示没丢包。丢包率高说明线路不稳定。

  • 按 Ctrl+C 停止,不然它会一直 ping 下去。

只 ping 几次就停

ping -c 4 halo.nya.je   # ping 4 次自动停

写脚本、快速测试时用 -c,不用手动按 Ctrl+C。

ping 不通?分层看

ping -c 2 172.26.0.1   # 先 ping 网关(内网)
ping -c 2 8.8.8.8      # 再 ping 公网 IP(跳过 DNS)
ping -c 2 google.com   # 最后 ping 域名(测试 DNS)
  • 网关都 ping 不通:网卡或内网问题,看 ip addr。

  • 能 ping 通 8.8.8.8 但 ping 不通域名:DNS 问题,检查 /etc/resolv.conf。

  • 都通但网站打不开:往下看端口和 HTTP。


ss:看端口和连接(替代 netstat)

ss 是查“这台机器上谁在监听哪个端口、谁跟谁连着”的神器。老命令 netstat 已被淘汰。

看本机开了哪些端口

ss -tlnp

参数拆开讲:

-t    只看 TCP(网站、SSH 都是 TCP)
-l    只看正在监听的(listening)
-n    显示数字端口,不反查名字(快)
-p    显示是哪个进程在用

输出示例:

State  Recv-Q  Send-Q  Local Address:Port  Process
LISTEN 0       128     0.0.0.0:22          sshd
LISTEN 0       512     0.0.0.0:80          caddy
LISTEN 0       512     0.0.0.0:443         caddy
  • 0.0.0.0:22 表示 22 端口在所有网卡上监听,SSH 正常。

  • 0.0.0.0:80 和 443 是 Caddy(网站),说明 Web 服务在跑。

  • 如果你装了个服务但这里没出现它的端口,说明服务没启动成功。

看当前有哪些连接

ss -tnp

去掉 -l,看到的是已建立的连接:

State  Local Address:Port  Peer Address:Port  Process
ESTAB  172.26.8.214:22     203.0.113.5:51234  sshd

这行表示有人(203.0.113.5)正连着这台机器的 22 端口(SSH)。看到陌生 IP 连着你的 SSH?结合日志查一下。

只查某个端口

ss -tlnp | grep 443

快速确认某个服务端口在不在。


curl:发 HTTP 请求,查网站和接口

curl 是 Linux 下的“万能浏览器”,不打开图形界面,直接发请求看返回。

最常用:看网站返回什么

curl -I https://halo.nya.je
HTTP/2 200
server: Caddy
content-type: text/html; charset=utf-8
  • HTTP/2 200:网站正常(200 就是成功)。

  • 常见状态码:301/302 跳转,403 禁止访问,404 找不到页面,500 服务器报错,502/503 后端挂了。

看完整的返回内容

curl https://halo.nya.je

直接输出网页 HTML。想保存到文件:

curl -o page.html https://halo.nya.je

常用参数组合

curl -s https://api.example.com/data        # -s 静默,不显示进度条
curl -s -w "%{http_code}\n" -o /dev/null https://halo.nya.je

第二个命令是运维常用技巧:只关心网站是 200 还是 500,不关心内容。

测本地服务通不通

curl -I http://127.0.0.1:8080

服务绑在本地端口时这样测,绕过域名和防火墙,直达服务本身。


dig:查 DNS

域名解析到哪个 IP,用 dig 看得最清楚。

dig halo.nya.je +short
3.15.231.19

+short 只显示结果,干净。

指定 DNS 服务器查询

dig @8.8.8.8 halo.nya.je +short

怀疑本地 DNS 被污染时,用 Google(8.8.8.8)的 DNS 直接查,对比结果。


traceroute / mtr:看数据包走了哪条路

ping 告诉你通不通,traceroute 告诉你经过了哪些路由器,慢在哪一跳。

traceroute halo.nya.je

更好用的 mtr(ping + traceroute 二合一):

mtr halo.nya.je

按 q 退出。Loss% 列显示每跳的丢包率,哪跳丢包一目了然。


实战:网站打不开,一套流程走下来

# 1. 本机网卡正常吗?
ip -brief addr
# 2. 网关通吗?
ping -c 2 172.26.0.1
# 3. 公网通吗?
ping -c 2 8.8.8.8
# 4. DNS 正常吗?
dig halo.nya.je +short
# 5. Web 端口在监听吗?
ss -tlnp | grep -E '80|443'
# 6. 防火墙挡住了吗?
ufw status

哪一步失败,问题就在哪一层。


小结

命令

作用

对应排查层

ip addr

看网卡和 IP

本机网络

ping

测连通性和延迟

连通性

ss -tlnp

看监听端口

服务状态

curl -I

看 HTTP 状态码

应用层

dig

查 DNS 解析

域名解析

traceroute / mtr

看路由路径和丢包

线路质量

记住排查顺序:网卡 → 网关 → 公网 → DNS → 端口 → 服务,一层层往下走,问题跑不掉。

下一篇 L6:防火墙 ufw——给 VPS 加道门。


评论