抓 UDP 在做什么
udp 原语只匹配无连接协议的报文,可以单独使用,也可以与端口、地址组合。域名解析、时间同步、地址分配、日志投递、QUIC 与隧道封装都以它承载。与 TCP 最大的区别是它没有握手与重传:抓不到响应既可能是丢包,也可能是对端本就不回应,无法靠标志位判断,只能结合业务日志与两端对照来定位。过滤时注意端口条件与协议关键词要写对,否则会误命中 TCP 的同类端口。
基本信息
| 全部 UDP | udp |
|---|---|
| 端口组合 | udp port 53 / udp portrange 5000-5100 |
| 方向限定 | udp src port / udp dst port |
| IPv6 | ip6 and udp port 547 |
| 常见端口 | 53 域名、67 与 68 地址分配、123 时间、443 QUIC、514 日志 |
典型使用场景
- 排查域名解析:只看 53 端口确认查询与响应是否成对出现
- 核对时间同步:观察 123 端口的请求响应是否规律出现
- 确认是否使用新协议:检查 443 端口上的 UDP 流量占比
- 排查地址分配失败:抓 67 与 68 端口看四步交互缺在哪一步
- 检查隧道封装:按隧道协议端口过滤,注意内外层头部
常用示例
常用示例
tcpdump -i eth0 -nn udp port 53 # 域名解析
tcpdump -i eth0 -nn 'udp and port 123' # 时间同步
tcpdump -i eth0 -nn 'udp and (port 67 or port 68)' # 地址分配
tcpdump -i eth0 -nn 'udp portrange 4789-4790' # 隧道封装端口
tcpdump -i eth0 -nn 'ip6 and udp port 547' # IPv6 前缀分配
tcpdump -i eth0 -nn 'udp and host 10.0.0.9' # 限定对端
tcpdump -nn -r a.pcap 'udp port 53' | wc -l # 离线统计查询条数常见 UDP 用途与端口
| 端口 | 用途 | 抓包注意点 |
|---|---|---|
| 53 | 域名解析 | 同时存在 TCP 53,大响应会回退到 TCP |
| 67 与 68 | 地址分配 | 使用广播,需在同一广播域抓包 |
| 123 | 时间同步 | 响应缺失通常是可达性问题 |
| 443 | QUIC | 与 TCP 443 是两类流量,需要分别统计 |
| 514 | 日志投递 | 丢包无提示,缺失只能靠对比发现 |
| 4789 | 隧道封装 | 注意内外层头部与对应地址 |
UDP 报文没有握手,因此判断可达性只能靠「请求是否到达对端」与「对端是否发出响应」两侧证据。单侧抓包的缺失只能说明该位置没有看到。
UDP 没有重传机制,抓不到响应就直接归因于网络丢包是常见误判。对端应用可能根本没有回复,需要结合服务端进程与业务日志一起判断。
与应用侧对照
与应用侧对照
ss -lunp | head -20 # 本机 UDP 监听端口与进程
systemctl status systemd-resolved 2>/dev/null | head -5 # 解析服务状态
chronyc sources 2>/dev/null | head -5 # 时间同步源状态判读要点
- 同一请求反复出现,是无连接协议下的应用重试,与 TCP 重传机制不同
- 响应延迟大但都能收到,说明链路质量波动而非不可达
- 大报文被分片后过滤仍能命中首片,完整内容需要重组
- 隧道封装场景下过滤按外层地址与端口,写错层级会匹配不到