hping3 是什么
hping3 是能自主构造报文的探测工具:可以指定 TCP 标志位、端口、UDP 或 ICMP 模式与负载长度,用来在 ICMP 被禁或需要『用 TCP 探测』时验证路径与端口级策略。它常被用来确认中间设备是否对特定端口或标志位区别对待,也提供类似 traceroute 的 TCP 探测模式。
基本信息
| 适用平台 | Linux(多数发行版仓库提供);需 root 才能使用原始套接字模式 |
|---|---|
| 模式选项 | -1 ICMP、-2 UDP、-S SYN、-A ACK、--traceroute |
| 常用参数 | -p 目标端口、-c 次数、-d 负载长度、-i 间隔 |
| 风险提示 | 具备 --flood 洪泛能力,生产网段禁用 |
典型使用场景
- ICMP 被禁的环境:用 TCP SYN 探测确认主机与端口是否可达
- 验证防火墙对标志位的策略:对同一端口分别发 SYN 与 ACK 观察响应差异
- 探测端口级路径:用 --traceroute 加 -S 走 TCP 方式逐跳
- UDP 服务排查:用 -2 模式向 UDP 端口发包,确认是否有响应或 ICMP 差错返回
- 对比不同端口的可达性:判断策略是按端口还是按地址生效
常用探测
常用探测
# 发 SYN:收到 SYN/ACK 说明端口开放且路径放行
sudo hping3 -S -p 443 -c 4 10.0.0.5
# 换端口对比,验证策略是否区分端口
sudo hping3 -S -p 80 -c 4 10.0.0.5
# UDP 模式,负载 20 字节
sudo hping3 -2 -p 53 -d 20 -c 4 10.0.0.5
# ICMP 模式
sudo hping3 -1 -c 4 10.0.0.5
# 类 traceroute,但用 TCP 探测
sudo hping3 --traceroute -S -p 443 10.0.0.5响应判读
| 响应 | 含义 | 注意事项 |
|---|---|---|
| SYN/ACK | 端口开放且策略放行 | 最明确的开放信号 |
| RST | 端口关闭或被策略代答 | 防火墙也可能代答 RST,不能直接断定端口关闭 |
| 无响应 | 被丢弃或主机不在线 | 与 ICMP 探测结果交叉验证 |
| ICMP 不可达 | 路径中某跳明确拒绝 | 差错类型可帮助定位策略位置 |
没有 root 权限时部分模式无法使用:ICMP 与原始套接字相关的选项会直接失败,这与『目标不通』是两回事,别把权限报错当成网络结论。
hping3 具备 --flood 与随机源地址能力:绝不要在生产网段开启洪泛模式,即便是短时间也可能打满链路并触发安全告警。