每天掌握一个Linux命令 - hping3
Linux 命令工具 hping3 使用指南
- Linux 命令工具 hping3 使用指南
- 一、工具概述
- 二、安装方式
- 1. Debian/Ubuntu 系统
- 2. CentOS/RHEL 系统(需先启用 EPEL 源)
- 3. 从源码编译(适用于其他 Linux 发行版)
- 三、核心功能
- 四、基础用法
- 1. 基本语法格式
- 2. 常用参数说明
- 3. 基础示例
- (1)发送 ICMP 回显请求(类似 ping)
- (2)TCP SYN 扫描目标 80 端口
- (3)指定源端口发送 UDP 数据包
- 五、进阶操作
- 1. 端口扫描进阶
- (1)TCP 全连接扫描(需 root 权限)
- (2)UDP 端口批量扫描(检测 53、123、5060 端口)
- 2. 路径追踪(类似 traceroute)
- 3. 压力测试(生成 1000 个/秒的 SYN 流量)
- 4. 自定义 TCP 标志位组合
- 六、实战案例
- 案例 1:检测防火墙对 SYN 包的过滤策略
- 案例 2:测试 UDP 服务连通性(DNS 服务器)
- 案例 3:追踪网络路径并统计延迟
- 七、注意事项
Linux 命令工具 hping3 使用指南
一、工具概述
hping3 是一款功能强大的开源网络测试工具,基于命令行界面,主要用于生成和分析网络数据包,支持 TCP、UDP、ICMP 等多种协议。其核心特点包括:
- 灵活构造自定义数据包(修改源/目标 IP、端口、协议标志位等)。
- 支持流量生成、端口扫描、路径追踪、性能测试(如带宽、延迟)等场景。
- 输出结果包含详细的网络指标(如 TTL、往返时间、数据包丢失率等)。
二、安装方式
1. Debian/Ubuntu 系统
sudo apt update
sudo apt install hping3
2. CentOS/RHEL 系统(需先启用 EPEL 源)
sudo yum install epel-release
sudo yum install hping3
3. 从源码编译(适用于其他 Linux 发行版)
wget https://github.com/commixproject/hping3/archive/master.zip
unzip master.zip
cd hping3-master
make && sudo make install
三、核心功能
功能分类 | 具体能力 |
---|---|
数据包构造 | 自定义协议(TCP/UDP/ICMP)、源/目标地址、端口、标志位(如 SYN、ACK、FIN)等。 |
端口扫描 | 支持 TCP SYN 扫描、ACK 扫描、UDP 扫描等,检测目标端口开放状态。 |
路径追踪 | 类似 traceroute ,通过递增 TTL 值追踪数据包路由路径。 |
压力测试 | 生成指定速率的流量,测试网络带宽或服务稳定性。 |
网络诊断 | 检测网络延迟、丢包率,分析防火墙规则对数据包的过滤策略。 |
四、基础用法
1. 基本语法格式
hping3 [OPTIONS] [DESTINATION]
2. 常用参数说明
参数 | 作用 |
---|---|
-c COUNT | 发送 COUNT 个数据包后停止。 |
-p PORT | 指定目标端口(TCP/UDP 协议时使用)。 |
-s SOURCE_PORT | 指定源端口(默认随机)。 |
-t TTL | 设置数据包 TTL 值。 |
-A | 设置 TCP ACK 标志位(用于 ACK 扫描)。 |
-S | 设置 TCP SYN 标志位(用于 SYN 扫描或建立连接)。 |
-U | 设置 TCP URG 标志位。 |
-F | 设置 TCP FIN 标志位(用于 FIN 扫描)。 |
-d DATA_SIZE | 设置数据包数据部分大小(单位:字节,默认 32 字节)。 |
-e DATA | 自定义数据包数据内容(如 -e "test payload" )。 |
-I INTERFACE | 指定发送数据包的网络接口(如 eth0 )。 |
3. 基础示例
(1)发送 ICMP 回显请求(类似 ping)
hping3 www.baidu.com
(2)TCP SYN 扫描目标 80 端口
hping3 -c 1 -S -p 80 www.baidu.com
- 输出结果中
flags=SA
表示端口开放(SYN+ACK 响应)。
(3)指定源端口发送 UDP 数据包
hping3 -c 1 -u -s 5000 -p 1234 target.server.com
五、进阶操作
1. 端口扫描进阶
(1)TCP 全连接扫描(需 root 权限)
hping3 -c 1 -s 80 -p 80 --tcp-flag SYN,ACK www.baidu.com
- 通过模拟完整 TCP 三次握手检测端口状态。
(2)UDP 端口批量扫描(检测 53、123、5060 端口)
hping3 -c 1 -u -p 53,123,5060 target.server.com
2. 路径追踪(类似 traceroute)
hping3 --traceroute www.qq.com
- 输出结果显示每一跳的 IP 地址和往返时间(RTT)。
3. 压力测试(生成 1000 个/秒的 SYN 流量)
hping3 -c 10000 -S -p 80 --rand-source --flood www.target.com
--flood
:快速发送数据包(不显示详细输出)。--rand-source
:随机化源 IP 地址。
4. 自定义 TCP 标志位组合
hping3 -c 1 --tcp-flag SYN,FIN,URG -p 443 target.com
- 构造包含 SYN、FIN、URG 标志的特殊数据包,测试防火墙规则。
六、实战案例
案例 1:检测防火墙对 SYN 包的过滤策略
需求:判断目标服务器是否允许外部主机发送 SYN 包到 22 端口(SSH)。
命令:
hping3 -c 5 -S -p 22 target.server.com
分析:
- 若收到
flags=SA
响应:端口开放且防火墙允许 SYN 包通过。 - 若收到
flags=RA
响应:端口关闭或防火墙拦截 SYN 包。 - 若无响应:可能是防火墙完全丢弃该类数据包。
案例 2:测试 UDP 服务连通性(DNS 服务器)
需求:检测 DNS 服务器(8.8.8.8)的 53 端口是否响应 UDP 请求。
命令:
hping3 -c 3 -u -p 53 8.8.8.8 -d 32 --data "QUERIES"
分析:
- 若输出
received=3
:说明 UDP 端口可达且服务正常。 - 若
received=0
:可能端口关闭或网络阻断 UDP 流量。
案例 3:追踪网络路径并统计延迟
命令:
hping3 --traceroute --interval 0.5 -c 2 www.amazon.com
输出示例:
1. 192.168.1.1 (192.168.1.1) 0.348 ms 0.297 ms2. 202.103.24.1 (202.103.24.1) 5.672 ms 5.891 ms...
- 每行显示一跳的 IP 地址和两次测量的 RTT 值,用于定位网络延迟节点。
七、注意事项
-
权限要求:
- 部分功能(如 SYN 扫描、自定义源 IP)需
root
权限,建议使用sudo
执行。
- 部分功能(如 SYN 扫描、自定义源 IP)需
-
法律与伦理:
- 严禁在未授权的网络环境中使用 hping3 进行扫描或压力测试,可能违反网络安全法规。
-
流量控制:
- 压力测试时避免使用
--flood
参数对生产环境发起攻击,可能导致服务瘫痪。
- 压力测试时避免使用
-
协议兼容性:
- UDP 扫描结果可能受限于目标主机的 UDP 协议实现(部分服务对空 UDP 包不响应)。
-
结果解读:
- 端口扫描结果需结合防火墙策略综合判断,例如 ACK 扫描可能无法区分端口开放与防火墙放行。
-
替代工具:
- 若需图形化界面,可结合 Wireshark 分析 hping3 生成的数据包。
通过合理使用 hping3,可深入分析网络层与传输层的协议行为,适用于网络工程师、渗透测试人员等技术场景。使用前务必确保操作合法性,并谨慎对待敏感网络环境。