为什么 UDP 难测
UDP 没有握手,也就没有「连接建立失败」这种明确信号。测试因此变成双向的事:既要发得出去,还要确认对端真的回了。所以工具只能提供线索,最终判据要靠业务协议本身或者两端同时抓包。
怎么挑工具
简单探测可以用 nc、tcping 这一类工具;更可信的是用业务协议自身探测,例如 DNS 用 dig、时间同步用对应客户端、语音用 SIP 的 OPTIONS 请求。端口扫描类工具只在获授权的环境里使用。
基本信息
| 常用工具 | nc -u、dig、tcping、nmap -sU,配合 tcpdump |
|---|---|
| 判据强弱 | 通用探测最弱,业务协议探测更强,两端抓包最可靠 |
| 关键前提 | 无响应不等于不通:防火墙可能静默丢弃 |
| 授权要求 | 扫描类工具只能在已获授权的环境中使用 |
典型使用场景
- 验证防火墙是否真正放行了某个 UDP 服务:必须两端对照
- 排查 DNS、NTP、日志接收等 UDP 服务的连通性
- 验证有状态防火墙的回程方向是否也放行
- 压测或上线前的连通性基线确认
常用命令
常用命令
nc -u -v -w 2 10.0.0.9 123 # 发探测(无响应不代表不通)
dig @10.0.0.9 example.com +time=2 # 用业务协议测 DNS
tcping 10.0.0.9 123 # 缺少 UDP 专用工具时的替代做法
nmap -sU -p 123 --reason 10.0.0.9 # 仅在授权环境使用结果怎么读
| 结果 | 可能含义 | 下一步 |
|---|---|---|
| 没有任何响应 | 端口没开、防火墙静默丢弃、或对端本就不应答 | 换业务协议探测并两端抓包 |
| 收到端口不可达差错 | 目标可达但没有程序监听 | 确认服务是否已启动 |
| 工具报告拒绝 | 多为 ICMP 差错被解释成拒绝 | 结合抓包确认真实语义 |
| 有正常响应 | 链路与服务都正常 | 进入业务层验证 |
nc -u 没有反应时,既可能是链路不通,也可能只是对端不回应。两端同时抓包才是可以下结论的证据。
UDP 防火墙规则放行只是一半:有状态设备还要允许回程流量,否则请求出得去、响应回不来。