Day 7-4 网络诊断工具

Day 7-4 网络诊断工具 本章学习目标 目标 说明 理解网络基础 掌握 IP 地址、子网掩码、网关的核心概念,理解数据包如何在网络中流动 配置 Linux 网络 使用现代工具(nmcli / Netplan)为 Rocky Linux 10 和 Ubuntu 26.04 配置静态 IP 理解 T

Day 7-4 网络诊断工具

tcpdump 与 Wireshark

本章学习目标

目标 说明
理解网络基础 掌握 IP 地址、子网掩码、网关的核心概念,理解数据包如何在网络中流动
配置 Linux 网络 使用现代工具(nmcli / Netplan)为 Rocky Linux 10 和 Ubuntu 26.04 配置静态 IP
理解 TCP/IP 模型 建立“请求如何到达服务器”的最小认知,区分 TCP 和 UDP
熟练使用诊断工具 掌握 ip、ss、tcpdump、curl、ping、traceroute、mtr 等工具
独立排障 运用五层排查法,独立解决 SSH 无法连接、页面无法访问等常见故障

本章模块概览

Day 7 网络知识模块与本节位置

本节导读

前几节我们学习了 IP 地址配置和 TCP/IP 分层模型。现在你已经知道了“数据怎么走”(模型),也知道了 IP 配置。但生产环境中总会遇到网络不通、访问慢、连不上的问题——怎么查?

本节我们学习一套完整的网络诊断工具链:从查看 IP 和路由(ip),到检查端口(ss),再到抓包分析(tcpdump)和测试连通性(ping/traceroute/mtr),最后验证 HTTP 服务(curl)。

工具速览:

工具 用途 对应层级
ip 查看 IP、路由、ARP 网络层/链路层
ss 查看端口监听和连接状态 传输层
tcpdump 抓包分析网络流量 全栈
curl 测试 HTTP 服务 应用层
ping 测试网络连通性 网络层
traceroute/mtr 追踪网络路径 网络层

一、ip 命令族

传统的 ifconfig、route、arp 命令已经废弃,统一使用 ip 命令替代。

1.1 ip addr(查看 IP 地址)

# 查看所有网卡的 IP 地址(最常用)
[root@magedu ~]# ip addr show

# 简写形式
[root@magedu ~]# ip a

# 只查看 IPv4 地址
[root@magedu ~]# ip -4 -br addr
lo       UNKNOWN 127.0.0.1/8
ens160   UP      10.0.0.142/24

# 查看指定网卡
[root@magedu ~]# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:00:fa:0a brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.142/24 brd 10.0.0.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever

关键字段解读:

字段 含义
state UP 网卡已启用(DOWN 表示停用)
inet 10.0.0.142/24 IPv4 地址和子网掩码
link/ether MAC 地址
valid_lft forever 静态 IP(DHCP 获取的会显示租约剩余时间)
# 查看网卡状态
[root@magedu ~]# ip link show

# 启动网卡
[root@magedu ~]# ip link set eth0 up

# 关闭网卡(慎用,会断网)
[root@magedu ~]# ip link set eth0 down

提示:ip link set ens160 up 相当于插上网线,或者把网卡的物理开关打开。它只告诉内核“这张网卡可以工作了”。

当执行 nmcli conn up ens160 时,它内部会帮你调用 ip link set ens160 up,所以通常不需要单独执行后者。

1.3 ip route(路由表)

# 查看路由表
[root@magedu ~]# ip route show
default via 10.0.0.1 dev ens160 proto static metric 100
10.0.0.0/24 dev ens160 proto kernel scope link src 10.0.0.142 metric 100

关键字段解读:

条目 含义
default via 10.0.0.1 默认网关(所有外网流量走这里)
dev ens160 从哪块网卡出去
10.0.0.0/24 dev ens160 同一子网直接通信,不需要网关

如果看不到 default via 行,说明网关没有配置或没有获取到。

1.4 ip neigh(ARP 缓存)

ARP 协议用于将 IP 地址解析为 MAC 地址。ip neigh 查看本机的 ARP 缓存表。

ARP 广播请求、单播响应和按目标 MAC 发送数据

# 查看 ARP 缓存
[root@magedu ~]# ip neigh show
10.0.0.1 dev ens160 lladdr 52:54:00:00:fa:01 REACHABLE
10.0.0.254 dev ens160 lladdr 52:54:00:00:fa:fe STALE
状态 含义
REACHABLE 可达,正常通信
STALE 过期,需要重新解析
FAILED 解析失败
[root@magedu ~]# arping 10.0.0.2
ARPING 10.0.0.2 from 10.0.0.150 ens160
Unicast reply from 10.0.0.2 [00:50:56:ED:17:93] 0.679ms
Unicast reply from 10.0.0.2 [00:50:56:ED:17:93] 1.034ms
Unicast reply from 10.0.0.2 [00:50:56:ED:17:93] 0.821ms
Unicast reply from 10.0.0.2 [00:50:56:ED:17:93] 0.895ms

二、ss 连接状态查看

ss 比 netstat 更快(直接从内核获取信息),是生产环境首选。

2.1 基本用法

# 查看所有 TCP 监听端口(最常用)
[root@magedu ~]# ss -tlnp
State  Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0      128    0.0.0.0:22         0.0.0.0:*         users:(("sshd",pid=1234,fd=3))
LISTEN 0      128    0.0.0.0:80         0.0.0.0:*         users:(("nginx",pid=5678,fd=6))
LISTEN 0      128    [::]:22            [::]:*            users:(("sshd",pid=1234,fd=4))
选项 含义
-t TCP
-u UDP
-l 只显示监听端口
-n 不解析名称(显示数字端口)
-p 显示进程信息(哪个程序在用)
-a 显示所有连接(不只是监听)
-s 统计摘要

2.2 状态筛选

# 查看已建立的连接
[root@magedu ~]# ss -tan state established
Recv-Q Send-Q Local Address:Port Peer Address:Port
0      52     10.0.0.142:22      10.0.0.100:54321
0      0      10.0.0.142:80      10.0.0.200:12345

# 查看 TIME_WAIT 状态
[root@magedu ~]# ss -tan state time-wait

# 查看 CLOSE_WAIT 状态
[root@magedu ~]# ss -tan state close-wait

# 查看指定端口
[root@magedu ~]# ss -tan sport = :80
[root@magedu ~]# ss -tan dport = :3306

[root@magedu ~]# ss -tnlp | grep :80

2.3 常见连接状态

状态 含义 常见原因
LISTEN 服务正在监听 正常
ESTABLISHED 连接已建立 正常
TIME_WAIT 连接关闭等待 高并发场景常见

三、tcpdump 抓包分析

tcpdump 是命令行抓包工具,可以捕获经过网卡的数据包,是排查网络问题的最强手段。

# 安装
[root@magedu ~]# dnf install tcpdump -y

3.1 基本用法

# 抓取所有包(按 Ctrl+C 停止)
[root@magedu ~]# tcpdump -i ens160

# 限制抓包数量
[root@magedu ~]# tcpdump -i ens160 -c 100

# 不解析主机名和端口名(推荐,速度快)
[root@magedu ~]# tcpdump -i ens160 -nn

# 按端口过滤
[root@magedu ~]# tcpdump -i ens160 -nn port 80
[root@magedu ~]# tcpdump -i ens160 -nn port 22

# 按主机过滤
[root@magedu ~]# tcpdump -i ens160 -nn host 10.0.0.100

# 组合条件
[root@magedu ~]# tcpdump -i ens160 -nn host 10.0.0.100 and port 80

3.2 保存和读取

# 保存到文件(.pcap 格式,可用 Wireshark 打开)
[root@magedu ~]# tcpdump -i ens160 -nn -w capture.pcap

# 限制抓包数量,避免文件过大
[root@magedu ~]# tcpdump -i ens160 -nn -c 1000 -w capture.pcap

# 加时间戳,避免覆盖
[root@magedu ~]# tcpdump -i ens160 -nn port 80 -w /tmp/http_$(date +%Y%m%d_%H%M%S).pcap

# 读取文件
[root@magedu ~]# tcpdump -nn -r capture.pcap

# 读取文件并过滤端口
[root@magedu ~]# tcpdump -nn -r capture.pcap port 80

生产环境抓包流程:

# 1. 服务器上抓包
[root@magedu ~]# tcpdump -i ens160 -nn port 80 -c 100 -w /tmp/http.pcap

# 2. sz 下载到本地
[root@magedu ~]# sz /tmp/http.pcap

# 3. 用 Wireshark 打开分析
# 双击 .pcap 文件即可用 Wireshark 打开

关于 .pcap 文件:

后缀 说明
.pcap 最通用,Wireshark、tcpdump 默认格式
.pcapng 新版 Wireshark 默认格式,支持更多元数据

生产环境中使用 .pcap 后缀即可,兼容性最好。

3.3 输出解读

[root@magedu ~]# tcpdump -i ens160 -nn port 80
10:30:01.123456 IP 10.0.0.100.54321 > 10.0.0.142.80: Flags [S], seq 123456
10:30:01.123478 IP 10.0.0.142.80 > 10.0.0.100.54321: Flags [S.], seq 654321, ack 123457
10:30:01.123489 IP 10.0.0.100.54321 > 10.0.0.142.80: Flags [.], ack 654322
字段 含义
时间戳 10:30:01.123456
源地址 10.0.0.100.54321(IP + 端口)
方向 > 发送,< 接收
目标地址 10.0.0.142.80
标志 [S]=SYN,[.]=ACK,[F]=FIN,[R]=RST

3.4 实际排查场景

# 排查 SSH 连接问题
[root@magedu ~]# tcpdump -i ens160 -nn port 22

# 排查 HTTP 访问问题(-A 显示内容)
[root@magedu ~]# tcpdump -i ens160 -nn -A port 80

# 排查 DNS 解析问题
[root@magedu ~]# tcpdump -i ens160 -nn port 53

四、curl HTTP 验证

curl 是命令行 HTTP 客户端,用于测试 Web 服务连通性,是排障时的必备工具。

4.1 基本用法

# GET 请求
[root@magedu ~]# curl http://localhost:80

# 查看响应头(最常用)
[root@magedu ~]# curl -I http://localhost:80
HTTP/1.1 200 OK
Server: nginx/1.26.0
Content-Type: text/html
Content-Length: 4057

# 详细模式(含请求/响应头与 TLS 握手细节)
[root@magedu ~]# curl -v http://localhost:80

4.2 运维常用场景

# 验证服务本地是否正常(排除网络问题)
[root@magedu ~]# curl -I http://localhost:80
[root@magedu ~]# curl -I http://localhost:8080

# 测试接口响应时间
[root@magedu ~]# curl -w "%{http_code} %{time_total}\n" -o /dev/null -s http://localhost:8080
200 0.023

五、ping/traceroute/mtr

5.1 ping(连通性和延迟测试)

主机 A 发送 ICMP Echo Request,主机 B 返回 Echo Reply

# 基本 ping
[root@magedu ~]# ping 10.0.0.1

# 限制次数
[root@magedu ~]# ping -c 4 10.0.0.1

# 间隔时间(秒)
[root@magedu ~]# ping -i 0.5 10.0.0.1

# 指定数据包大小
[root@magedu ~]# ping -s 1024 10.0.0.1

输出解读:

[root@magedu ~]# ping -c 4 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.196 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.436 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.361 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.298 ms

--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 49ms
rtt min/avg/max/mdev = 0.196/0.322/0.436/0.092 ms
字段 含义
icmp_seq 序列号,连续递增说明没丢包
ttl 生存时间,每经过一个路由器减 1
time 往返时间(毫秒)
0% packet loss 无丢包(>0% 表示有丢包)

5.2 traceroute(路由追踪)

# 安装
[root@magedu ~]# dnf install traceroute -y

# ICMP 模式
[root@magedu ~]# traceroute -I baidu.com

# 不解析主机名(更快)
[root@magedu ~]# traceroute -n baidu.com

输出解读:

[root@magedu ~]# traceroute -n baidu.com
1  10.0.0.1       0.5ms 0.4ms 0.5ms
2  172.16.0.1     2.3ms 2.1ms 2.2ms
3  * * *
4  110.242.68.66  5.1ms 4.8ms 5.0ms
字段 含义
跳数 经过的第 N 个路由器
IP 地址 路由器地址
三次探测时间 每次的往返时间
* 超时无响应(可能防火墙拦截)

5.3 mtr(动态路由追踪)

mtr 结合了 ping 和 traceroute,动态显示丢包率和延迟,是排查网络质量的最佳工具。

# 安装
[root@magedu ~]# dnf install mtr -y

# 运行 mtr(交互式)
[root@magedu ~]# mtr baidu.com

# 只显示报告(不交互)
[root@magedu ~]# mtr -r baidu.com

# 不解析主机名
[root@magedu ~]# mtr -n baidu.com

输出示例:

[root@magedu ~]# mtr -r baidu.com
Start: 2025-01-15T10:00:00
HOST: localhost       Loss% Snt Last Avg Best Wrst StDev
  1. 10.0.0.1          0.0%  10  0.5 0.4  0.3  0.8   0.1
  2. 172.16.0.1        0.0%  10  2.3 2.2  2.0  2.5   0.1
  3. ???             100.0%  10  0.0 0.0  0.0  0.0   0.0
  4. 110.242.68.66     0.0%  10  5.1 4.9  4.5  5.3   0.2
字段 含义
Loss% 丢包率(关键指标)
Snt 发送包数
Last/Avg/Best/Wrst 延迟统计
StDev 标准差(抖动)
??? 该跳不响应

六、firewalld 基础查看

6.1 查看防火墙状态和规则

# 查看防火墙状态
[root@magedu ~]# systemctl status firewalld

# 查看当前区域配置(最常用)
[root@magedu ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources:
  services: ssh dhcpv6-client http https
  ports: 8080/tcp 3306/tcp
  forward: no
  masquerade: no
字段 含义
services 放行的服务(预定义端口)
ports 放行的自定义端口
interfaces 生效的网卡

七、本章小结

7.1 核心命令速记

查看类命令:

操作 命令
查看 IP 地址 ip a 或 ip -4 -br addr
查看路由表 ip route show
查看 ARP 缓存 ip neigh show
查看监听端口 ss -tlnp
查看已建立连接 ss -tan state established
查看连接统计 ss -s
查看防火墙规则 firewall-cmd --list-all

测试类命令:

操作 命令
测试连通性 ping -c 4 目标IP
追踪路由 traceroute -I 目标IP
动态路径分析 mtr -r 目标IP
测试 HTTP 服务 curl -I http://localhost
抓包分析 tcpdump -i ens160 -nn port 80

7.2 排障工具选择指南

问题现象 首选工具 备选工具
服务器没 IP ip a nmcli dev status
外网不通 ip route + ping traceroute
端口不通 ss -tlnp telnet / nc
服务返回异常 curl -v tcpdump
网络延迟高 ping mtr
怀疑丢包 mtr tcpdump
防火墙拦截 firewall-cmd --list-all tcpdump

7.3 学完本节应能独立完成

  • 使用 ip 命令查看 IP 地址、路由和 ARP。
  • 使用 ss 命令查看端口监听和连接状态。
  • 使用 tcpdump 抓包分析网络流量,并导出 .pcap 文件用 Wireshark 深度分析。
  • 使用 curl 测试 HTTP 服务。
  • 使用 ping/traceroute/mtr 诊断网络路径。
  • 查看防火墙开放端口。

下一节预告

Day 7-5:分层排障方法论。

我们已经掌握了网络诊断工具,下一节我们将学习怎么用这些工具——从物理层到应用层的五层排查法,以及 SSH 无法连接、页面无法访问两大真实场景的完整排障流程。

评论