故障排查
type
status
date
slug
summary
tags
category
icon
password
一、排查思路(按七层模型)
- 从底层到应用层逐步排查,确保逻辑清晰。
- 物理层:网线/接口
- 数据链路层:MAC 地址、交换机配置
- 网络层:IP 地址、路由、Ping
- 传输层:端口、TCP/UDP、Telnet
- 会话层:会话保持
- 表示层:编码、加密
- 应用层:服务进程、应用日志
- 常用工具:
- ping:测试网络连通性(ICMP 协议)。
- telnet:测试目标主机端口是否开放。
- tcpdump:抓包分析,检查网络层和传输层。
二、常用工具
1. ping
- 用途:检测网络连通性,判断是否能到达目标 IP。
- 示例:
2. telnet
- 用途:测试 TCP 端口连通性。
- 示例:
- 安装方式:
- Linux:
yum install -y telnet - Windows: 控制面板 → 程序和功能 → 启用 Telnet Client
3. tcpdump
- 用途:抓取指定网络接口的数据包。
- 常用参数:
-i <iface>:指定接口-n:不把 IP 地址解析成主机名(直接显示 IP)。-nn:不仅不解析 IP 地址,还不把端口号解析成服务名(直接显示端口号)。-w <file>:写入文件-c <num>:收到指定的数据包数目后,就停止进行倾倒操作。
- 示例:
- 类型关键字(指定对象)
- host(缺省类型):指定一台主机
- 示例:
host 210.27.48.2 - net:指定一个网络
- 示例:
net 202.0.0.0 - port:指定端口号
- 示例:
port 23 - 方向关键字(指定方向)
- src:源地址
- 示例:
src 210.27.48.2 - dst:目标地址
- 示例:
dst net 202.0.0.0 - dst or src(缺省):源或目标
- dst and src:源和目标同时匹配
- 协议关键字(指定协议,缺省为全部)
- ip:IP 包
- tcp:TCP 包
- udp:UDP 包
- arp:ARP 包
- rarp:RARP 包
- fddi:光纤分布式数据接口帧
- 其他关键字
- gateway:网关相关包
- broadcast:广播包
- less:小于指定长度
- greater:大于指定长度
- 表达式逻辑运算
- 非 (NOT):
!或not - 且 (AND):
&&或and - 或 (OR):
||或or - 括号:多条件时可用括号,但需转义
- 示例:
- 类型:host/net/port
- 方向:src/dst
- 协议:ip/tcp/udp/arp
- 逻辑:not/and/or
✅ 总结口诀:
分类 | 命令 | 说明 |
主机过滤 | tcpdump -i ens33 -nn host 192.168.1.100 | 抓取来自或发往某主机的包 |
tcpdump -i ens33 -nn src host 192.168.1.100 | 抓取源 IP 为指定主机的包 | |
tcpdump -i ens33 -nn dst host 192.168.1.200 | 抓取目标 IP 为指定主机的包 | |
网络过滤 | tcpdump -i ens33 -nn net 192.168.1.0/24 | 抓取整个网段的包 |
tcpdump -i ens33 -nn dst net 10.0.0.0/8 | 抓取目标网段的包 | |
端口过滤 | tcpdump -i ens33 -nn port 22 | 抓取指定端口的包 (SSH) |
tcpdump -i ens33 -nn src port 80 | 抓取源端口为 80 的包 | |
tcpdump -i ens33 -nn dst port 443 | 抓取目标端口为 443 的包 | |
协议过滤 | tcpdump -i ens33 -nn tcp | 抓取所有 TCP 包 |
tcpdump -i ens33 -nn udp | 抓取所有 UDP 包 | |
tcpdump -i ens33 -nn icmp | 抓取所有 ICMP 包 (ping) | |
tcpdump -i ens33 -nn arp | 抓取所有 ARP 包 | |
组合条件 | tcpdump -i ens33 -nn 'src host 192.168.1.100 and (dst port 80 or dst port 443)' | 抓取某主机访问 Web 端口的包 |
tcpdump -i ens33 -nn 'src host 192.168.1.100 and not dst port 22' | 抓取某主机但排除 SSH 端口 | |
tcpdump -i ens33 -nn '(tcp or udp) and dst net 10.0.0.0/8' | 抓取 TCP/UDP 且目标网段为 10.0.0.0/8 的包 | |
输出控制 | tcpdump -i ens33 -nn -w output.pcap | 保存数据包到文件 |
tcpdump -i ens33 -nn -c 100 | 只抓取前 100 个包 | |
tcpdump -i ens33 -nn -X | 显示详细内容(十六进制/ASCII) |
三、TCP 报文分析步骤
1. 基本信息确认
- 通信双方:源 IP:Port → 目的 IP:Port
- 客户端/服务端区分:一般 端口号 ≤1024 为服务端,高位端口为客户端。
- 时间戳:检查报文间隔,是否超时。
2. 三次握手
- SYN(客户端发起):
Flags [S],seq=随机值
- SYN+ACK(服务端回应):
Flags [S.],ack=seq+1
- ACK(客户端确认):
Flags [.],ack=对方 seq+1
✅ 三步完整表示连接成功。
3. 数据传输阶段
- SEQ 序列号
- 连续性:后一个包的起始 seq = 前一个包的 seq+len
- 缺口 → 丢包或乱序
- ACK 确认号
- ack=x 表示已收到 x-1 之前的字节
- 若不递增 → 延迟 ACK 或丢包
- Flags 标志位
- S:SYN 建立连接
- F:FIN 关闭连接
- R:RST 异常断开
- P:PUSH 立即交付应用层
- .:ACK 确认
- 观察点:重复 SYN(重传)、大量 RST(异常关闭)
- 窗口大小(win)
- 表示还能接收的数据量
- 若为 0 → 接收方缓冲区满(零窗口问题)
- 重传情况
- 相同 seq 出现多次 → TCP 重传
4. 四次挥手
- 一般流程:
FIN → ACK → FIN → ACK
- 若出现 RST → 强制关闭。
5. 常见异常现象
- ACK 不增长 → 数据丢失
- 重复 seq → 重传
- 窗口为 0 → 接收端拥塞
- 大量 RST → 应用层异常关闭
- 只有 SYN 无回应 → 端口未开放或被防火墙拦截
✅ 分析逻辑总结:
先看 Flags(阶段) → 再看 SEQ/ACK(连续性) → 最后看 窗口/重传(性能与异常)。
四、网络五元素(五元组)
- 源 IP 地址(Source IP)
- 源端口(Source Port)
- 目标 IP 地址(Destination IP)
- 目标端口(Destination Port)
- 传输层协议(TCP/UDP)
五、潜在误解
- 服务端常用 知名端口(0–1023)。
- 客户端通常使用 临时端口(>1023) 连接服务端。
Loading...