当前位置: 首页 > 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.xdnf.cn/news/768889.html

相关文章:

  • deepseek问答记录:请讲解一下transformers.HfArgumentParser()
  • Linux指令:
  • 每日八股文6.2
  • 网络安全的学习路线是怎么样的?
  • 【数据库】关系数据库标准语言-SQL(金仓)下
  • 快手可灵视频V1.6模型API如何接入免费AI开源项目工具
  • Java中Random类常用方法详解
  • 数据结构哈希表总结
  • 【看到哪里写到哪里】在C里面怎么传递二维数组呢?
  • TC3xx学习笔记-启动过程详解(一)
  • COUNT(*) 与 COUNT(列名) 的区别解析
  • MySQL中SELECT查询的执行顺序
  • 【 HarmonyOS 5 入门系列 】鸿蒙HarmonyOS示例项目讲解
  • SCAU8643--简单选择排序
  • 2506js,活扩控件
  • 基于ubuntu和树莓派环境对游戏进行移植
  • cJSON简单使用
  • uniapp路由跳转toolbar页面
  • 为何ERP系统更倾向使用业务编码作为主键?兼顾可读性与系统集成的设计思考
  • 【Zephyr 系列 3】多线程与调度机制:让你的 MCU 同时干多件事
  • oracle sql 语句 优化方法
  • 数据库系统概论(十三)详细讲解SQL中数据更新(插入,修改与更新)
  • RocketMQ 消息发送核心源码解析:DefaultMQProducerImpl.send () 方法深度剖析
  • 前端开发知识体系全景指南
  • 小目标检测:YOLOV7改进之双坐标注意力(DCA)
  • Python Day41
  • 神经网络与深度学习(第一章)
  • 链式前向星图解
  • 排序算法C语言实现
  • Linux配置DockerHub镜像源配置