CentOS hping3安装与网络压力测试实战

张开发
2026/4/11 14:53:49 15 分钟阅读

分享文章

CentOS hping3安装与网络压力测试实战
1. 初识hping3网络测试的瑞士军刀第一次接触hping3是在五年前的一次网络故障排查中当时我们需要模拟TCP连接问题同事推荐了这个神奇的工具。简单来说hping3就像网络工程师的瑞士军刀它能让你像玩积木一样自由组装各种网络数据包。与普通的ping命令只能发送ICMP包不同hping3支持TCP、UDP、ICMP和RAW-IP协议还能进行端口扫描、DoS测试、防火墙测试等高级操作。在CentOS系统上hping3需要通过源码编译安装这个过程可能会遇到一些依赖问题。不过别担心我已经帮你踩过所有的坑。记得第一次安装时我花了整整三小时解决各种报错现在回想起来那些错误信息都成了宝贵的经验。接下来我会带你用最顺畅的方式完成安装并分享几个我在实际工作中最常用的压力测试技巧。2. 安装准备解决依赖问题的正确姿势2.1 基础依赖安装在开始之前我们需要确保系统已经安装了必要的开发工具和依赖库。打开终端执行以下命令yum groupinstall Development Tools -y yum install -y libpcap libpcap-devel tcl tcl-devel这里有个小技巧如果你使用的是最小化安装的CentOS建议先更新系统yum update -y yum upgrade -y我曾经在一个老旧系统上安装时因为glibc版本过低导致编译失败更新系统后问题迎刃而解。2.2 处理常见依赖错误即使安装了上述依赖编译时仍可能遇到两个典型错误首先是net/bpf.h缺失问题这是因为Linux系统与BSD系统的文件结构差异导致的。解决方法很简单ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h其次是64位系统的字节序问题需要修改源码中的bytesex.h文件。找到以下代码段#if defined(__i386__) \ || defined(__alpha__) \ || (defined(__mips__) (defined(MIPSEL) || defined (__MIPSEL__)))在__i386__后面添加|| defined(__x86_64__)修改后应该像这样#if defined(__i386__) \ || defined(__x86_64__) \ || defined(__alpha__) \ || (defined(__mips__) (defined(MIPSEL) || defined (__MIPSEL__)))3. 从源码编译安装hping33.1 获取并解压源码包推荐从官方源获取稳定版本wget http://www.hping.org/hping3-20051105.tar.gz tar zxvf hping3-20051105.tar.gz cd hping3-20051105如果下载速度慢可以尝试GitHub上的镜像源git clone https://github.com/antirez/hping.git cd hping3.2 配置与编译执行配置脚本时建议添加--no-tcl选项避免Tcl相关错误./configure --no-tcl然后开始编译make make strip sudo make install安装完成后验证是否成功hping3 --version如果看到版本信息恭喜你如果遇到libpcap.so.1找不到的错误可以创建软链接ln -s /usr/lib64/libpcap.so.1.4.0 /usr/lib64/libpcap.so.14. 网络压力测试实战技巧4.1 SYN Flood测试SYN Flood是最常见的DoS攻击模拟用于测试服务器的TCP连接处理能力。基本命令hping3 -S -p 80 --flood --rand-source 192.168.1.100参数说明-S设置SYN标志位-p 80目标端口--flood极速模式不显示统计信息--rand-source随机源IP在实际测试中我发现加上-i u1000每1000微秒发送一个包可以更精确控制流量hping3 -S -p 80 -i u1000 --rand-source 192.168.1.1004.2 UDP Flood测试UDP Flood常用于测试DNS、NTP等UDP服务的抗压能力hping3 --udp -p 53 --flood --rand-source 192.168.1.100对于游戏服务器测试可以指定数据包大小hping3 --udp -p 7777 --data 500 --flood 192.168.1.1004.3 高级攻击模拟LAND攻击源IP和目标IP相同hping3 -S -a 192.168.1.100 -p 80 192.168.1.100XMAS扫描设置FIN、URG和PUSH标志hping3 -F -P -U -p 80 192.168.1.100Teardrop攻击使用分片重叠hping3 -1 -x -t 1 -d 500 --morefrag 192.168.1.100 hping3 -1 -x -t 1 -d 200 --fragoff 400 192.168.1.1005. 结果分析与验证5.1 使用tcpdump抓包分析在进行压力测试时建议在目标服务器上开启抓包tcpdump -i eth0 -w test.pcap host 192.168.1.100测试结束后可以用Wireshark分析pcap文件或者直接使用tcpdump统计tcpdump -r test.pcap | wc -l5.2 系统资源监控在测试过程中实时监控目标服务器的资源使用情况watch -n 1 netstat -nt | grep SYN_RECV | wc -l top -b -n 1 | grep -E CPU|Mem5.3 防火墙规则测试hping3非常适合测试防火墙规则是否生效。例如测试ICMP是否被阻断hping3 --icmp 192.168.1.100测试特定端口的过滤规则hping3 -S -p 8080 192.168.1.1006. 安全注意事项与最佳实践虽然hping3是个强大的测试工具但使用不当可能造成真实影响。我有一次在测试生产环境时不小心触发了IDS警报引来了安全团队的关注。以下是我总结的黄金法则始终获取书面授权在测试任何网络前确保有明确的授权使用限制速率避免使用--flood模式改用-i u10000等控制速率在隔离环境测试建议在虚拟化环境中先验证测试方案及时清理测试完成后立即停止hping3进程记录完整保存完整的测试命令和结果便于后续分析对于持续集成环境可以编写自动化测试脚本#!/bin/bash TARGET192.168.1.100 PORT80 DURATION60 echo Starting SYN test at $(date) timeout $DURATION hping3 -S -p $PORT -i u5000 $TARGET echo Test completed at $(date)7. 真实案例电商大促前的压力测试去年双十一前我们团队需要对电商平台的负载均衡器进行极限测试。使用hping3模拟了混合流量模式# SYN Flood hping3 -S -p 443 --flood --rand-source 192.168.10.10 # UDP Flood hping3 --udp -p 53 --flood --rand-source 192.168.10.10 # ICMP Flood hping3 --icmp --flood --rand-source 192.168.10.10 通过调整各种流量比例我们成功发现了负载均衡器的TCP连接表溢出问题及时扩容后平稳度过了流量高峰。这个案例让我深刻体会到好的工具加上正确的使用方法真的可以预防灾难性故障。

更多文章