当前位置: 首页 > news >正文

每天掌握一个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 值,用于定位网络延迟节点。

七、注意事项

  1. 权限要求

    • 部分功能(如 SYN 扫描、自定义源 IP)需 root 权限,建议使用 sudo 执行。
  2. 法律与伦理

    • 严禁在未授权的网络环境中使用 hping3 进行扫描或压力测试,可能违反网络安全法规。
  3. 流量控制

    • 压力测试时避免使用 --flood 参数对生产环境发起攻击,可能导致服务瘫痪。
  4. 协议兼容性

    • UDP 扫描结果可能受限于目标主机的 UDP 协议实现(部分服务对空 UDP 包不响应)。
  5. 结果解读

    • 端口扫描结果需结合防火墙策略综合判断,例如 ACK 扫描可能无法区分端口开放与防火墙放行。
  6. 替代工具

    • 若需图形化界面,可结合 Wireshark 分析 hping3 生成的数据包。

通过合理使用 hping3,可深入分析网络层与传输层的协议行为,适用于网络工程师、渗透测试人员等技术场景。使用前务必确保操作合法性,并谨慎对待敏感网络环境。

http://www.lqws.cn/news/73153.html

相关文章:

  • 工作流引擎-16-开源审批流项目之 整合Flowable官方的Rest包
  • NiceGUI 是一个基于 Python 的现代 Web 应用框架
  • Windows10-ltsc-2019 使用 PowerShell 安装安装TranslucentTB教程(不通过微软商店安装)
  • Qt概述:基础组件的使用
  • 动态类型语言和静态类型语言
  • 【MySQL基础】库的操作:创建、删除与管理数据库
  • [ Qt ] | 与系统相关的操作(一):鼠标相关事件
  • 分布式锁优化:使用Lua脚本保证释放锁的原子性问题
  • 网络安全的学习路线是怎么样的?
  • 【C语言】C语言经典小游戏:贪吃蛇(下)
  • 用 Whisper 打破沉默:AI 语音技术如何重塑无障碍沟通方式?
  • 【iOS】YYModel源码解析
  • Git GitHub Gitee
  • ISBN书号查询接口如何用PHP实现调用?
  • 房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋类型、房屋信息、预约看房、合同信息、房屋报修、房屋评价、房主管理模块
  • Python训练营打卡 Day26
  • JavaScript性能优化:实战技巧提升10倍速度
  • 2025年—Comfy UI 和 Stable Diffusion底层原理
  • docker可视化工具
  • 【头歌实验】Keras机器翻译实战
  • volatile,synchronized,原子操作实现原理,缓存一致性协议
  • 【JAVA后端入门基础001】Tomcat 是什么?通俗易懂讲清楚!
  • 类和对象:实现日期类
  • Windows采用npx方式本地部署n8n
  • Linux(信号)
  • 并发编程的源头
  • 探索 Dify 的工作流:构建智能应用的新范式
  • Flink CDC将MySQL数据同步到数据湖
  • Kafka集成Flume/Spark/Flink(大数据)/SpringBoot
  • 【设计模式-3.6】结构型——桥接模式