Linux hping3命令介绍
hping3是一个用于测试网络和防火墙的命令行工具,它可以发送自定义的TCP/IP数据包,并显示目标主机的回应。hping3支持TCP、UDP、ICMP和RAW-IP协议,可以模拟各种网络攻击和测试场景,如端口扫描、路由跟踪、防火墙规则检测、拒绝服务攻击等。hping3也可以用作一个简单的ping工具,或者一个网络性能测试工具。
Linux hping3命令适用的Linux版本
hping3命令可以在大多数Linux发行版中使用,但是需要安装hping3软件包。如果你的Linux系统没有安装hping3,你可以使用以下命令来安装:
- 在基于Debian的系统中,如Ubuntu、Mint等,使用
apt-get install hping3
命令。 - 在基于Red Hat的系统中,如CentOS、Fedora等,使用
yum install hping3
命令。 - 在基于Arch的系统中,如Manjaro、Antergos等,使用
pacman -S hping3
命令。
注意,如果你使用的是CentOS 8,你需要先启用PowerTools仓库,才能安装hping3。你可以使用以下命令来启用PowerTools仓库:
[linux@bashcommandnotfound.cn ~]$ sudo dnf config-manager --set-enabled PowerTools
Linux hping3命令的基本语法
hping3命令的基本语法如下:
hping3 [选项] 目标主机
其中,目标主机可以是一个IP地址或者一个域名,例如hping3 192.168.1.1
或者hping3 bashcommandnotfound.cn
。
Linux hping3命令的常用选项或参数说明
hping3命令有很多选项和参数,可以用来控制发送的数据包的类型、大小、数量、间隔、端口、标志、校验和等。以下是一些常用的选项和参数的说明:
选项 | 参数 | 说明 |
---|---|---|
-0 | 无 | 使用RAW-IP协议发送数据包 |
-1 | 无 | 使用ICMP协议发送数据包 |
-2 | 无 | 使用UDP协议发送数据包 |
-8 | 无 | 使用TCP协议发送数据包(默认) |
-9 | 无 | 使用TCP协议发送数据包,并显示TCP头部信息 |
-a | IP地址 | 设置数据包的源IP地址为指定的IP地址 |
-c | 数字 | 设置发送数据包的数量为指定的数字 |
-d | 数字 | 设置数据包的数据部分的大小为指定的数字(字节) |
-e | 字符串 | 设置数据包的数据部分的内容为指定的字符串 |
-f | 无 | 设置数据包的IP头部的分片标志为1,表示数据包被分片 |
-g | 端口号 | 设置数据包的源端口号为指定的端口号 |
-i | 数字 | 设置发送数据包的间隔为指定的数字(秒) |
-n | 无 | 不对目标主机的IP地址进行DNS解析 |
-p | 端口号 | 设置数据包的目的端口号为指定的端口号 |
-q | 无 | 安静模式,只显示最后的统计信息 |
-s | 无 | 打开交互模式,可以在运行时修改数据包的参数 |
-S | 无 | 设置数据包的TCP头部的SYN标志为1,表示发起一个TCP连接 |
-t | 数字 | 设置数据包的IP头部的TTL(生存时间)为指定的数字 |
-u | 无 | 设置数据包的TCP头部的URG标志为1,表示数据包的数据部分有紧急数据 |
-V | 无 | 显示hping3的版本信息 |
-w | 数字 | 设置数据包的TCP头部的窗口大小为指定的数字 |
-z | 无 | 设置数据包的TCP头部的ACK标志为1,表示确认收到数据包 |
Linux hping3命令的实例
以下是一些使用hping3命令的实例,可以帮助你更好地理解和使用hping3命令。
实例1:使用hping3命令ping目标主机
如果你想使用hping3命令来ping一个目标主机,你可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ hping3 -1 -c 4 bashcommandnotfound.cn
这个命令的意思是使用ICMP协议(-1选项)发送4个数据包(-c 4参数)到bashcommandnotfound.cn这个域名。你可以看到类似以下的输出:
HPING bashcommandnotfound.cn (eth0 45.123.21.2): icmp mode set, 28 headers + 0 data bytes
len=46 ip=45.123.21.2 ttl=117 id=0 icmp_seq=0 rtt=10.9 ms
len=46 ip=45.123.21.2 ttl=117 id=0 icmp_seq=1 rtt=11.0 ms
len=46 ip=45.123.21.2 ttl=117 id=0 icmp_seq=2 rtt=10.9 ms
len=46 ip=45.123.21.2 ttl=117 id=0 icmp_seq=3 rtt=10.9 ms
--- bashcommandnotfound.cn hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 10.9/10.9/11.0 ms
这个输出显示了每个数据包的长度、源IP地址、TTL、序号、往返时间等信息,以及最后的统计信息,包括发送和接收的数据包数量、丢包率、最小/平均/最大的往返时间等。
实例2:使用hping3命令扫描目标主机的开放端口
如果你想使用hping3命令来扫描一个目标主机的开放端口,你可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ hping3 -S -p 80 -c 1 bashcommandnotfound.cn
这个命令的意思是使用TCP协议(默认)发送一个数据包(-c 1参数),并设置SYN标志为1(-S选项),表示发起一个TCP连接,到bashcommandnotfound.cn这个域名的80端口(-p 80参数)。你可以看到类似以下的输出:
HPING bashcommandnotfound.cn (eth0 13.107.21.200): S set, 40 headers + 0 data bytes
len=46 ip=13.107.21.200 ttl=117 id=0 sport=80 flags=SA seq=0 win=8192 rtt=10.9 ms
--- bashcommandnotfound.cn hping statistic ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 10.9/10.9/10.9 ms
这个输出显示了目标主机的回应数据包的长度、源IP地址、TTL、ID、源端口、TCP标志、序号、窗口大小、往返时间等信息,以及最后的统计信息。你可以注意到TCP标志为SA,表示目标主机回应了一个SYN-ACK数据包,表示端口是开放的。如果端口是关闭的,你会看到TCP标志为RA,表示目标主机回应了一个RST-ACK数据包。
实例3:使用hping3命令测试目标主机的防火墙规则
如果你想使用hping3命令来测试一个目标主机的防火墙规则,你可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ hping3 -S -p ++80,443 -c 2 bashcommandnotfound.cn
这个命令的意思是使用TCP协议(默认)发送两个数据包(-c 2参数),并设置SYN标志为1(-S选项),表示发起一个TCP连接,到bashcommandnotfound.cn这个域名的80和443端口(-p ++80,443参数)。这里的++表示递增端口号,也就是说,第一个数据包发送到80端口,第二个数据包发送到443端口。你可以看到类似以下的输出:
HPING bashcommandnotfound.cn (eth0 13.107.21.200): S set, 40 headers + 0 data bytes
len=46 ip=45.123.21.2 ttl=117 id=0 sport=80 flags=SA seq=0 win=8192 rtt=10.9 ms
len=46 ip=45.123.21.2 ttl=117 id=0 sport=443 flags=SA seq=1 win=8192 rtt=10.9 ms
--- bashcommandnotfound.cn hping statistic ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 10.9/10.9/10.9 ms
这个输出显示了目标主机的回应数据包的长度、源IP地址、TTL、ID、源端口、TCP标志、序号、窗口大小、往返时间等信息,以及最后的统计信息。你可以注意到TCP标志都为SA,表示目标主机回应了两个SYN-ACK数据包,表示80和443端口都是开放的。如果你看到TCP标志为RA或者没有回应数据包,表示端口是关闭的或者被防火墙过滤了。你可以通过改变端口号或者其他参数来测试不同的防火墙规则。
实例4:使用hping3命令进行路由跟踪
如果你想使用hping3命令来进行路由跟踪,也就是查看数据包从你的主机到目标主机的经过的路由器的IP地址,你可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ hping3 -1 -t 1 -c 30 bashcommandnotfound.cn
这个命令的意思是使用ICMP协议(-1选项)发送30个数据包(-c 30参数),并设置TTL(生存时间)为1(-t 1参数),到bashcommandnotfound.cn这个域名。你可以看到类似以下的输出:
HPING bashcommandnotfound.cn (eth0 13.107.21.200): icmp mode set, 28 headers + 0 data bytes
len=46 ip=192.168.1.1 ttl=64 id=0 icmp_seq=0 rtt=0.6 ms
len=46 ip=192.168.1.1 ttl=64 id=0 icmp_seq=1 rtt=0.5 ms
len=46 ip=192.168.1.1 ttl=64 id=0 icmp_seq=2 rtt=0.5 ms
...
len=46 ip=45.123.21.2 ttl=117 id=0 icmp_seq=27 rtt=10.9 ms
len=46 ip=45.123.21.2 ttl=117 id=0 icmp_seq=28 rtt=10.9 ms
len=46 ip=45.123.21.2 ttl=117 id=0 icmp_seq=29 rtt=10.9 ms
--- bashcommandnotfound.cn hping statistic ---
30 packets transmitted, 30 packets received, 0% packet loss
round-trip min/avg/max = 0.5/5.7/10.9 ms
这个输出显示了每个数据包的长度、源IP地址、TTL、ID、序号、往返时间等信息,以及最后的统计信息。你可以注意到,当TTL为1时,数据包只能到达你的本地路由器,也就是192.168.1.1这个IP地址,然后被丢弃,并回应一个ICMP超时数据包。当TTL递增时,数据包可以到达更远的路由器,直到到达目标主机,也就是13.107.21.200这个IP地址。这样,你就可以看到数据包的路径,也就是路由跟踪。
实例5:使用hping3命令进行拒绝服务攻击
如果你想使用hping3命令来进行拒绝服务攻击,也就是通过发送大量的数据包来消耗目标主机的资源,使其无法正常提供服务,你可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ hping3 -S -p 80 --flood --rand-source bashcommandnotfound.cn
这个命令的意思是使用TCP协议(默认)发送大量的数据包(--flood选项),并设置SYN标志为1(-S选项),表示发起大量的TCP连接,到bashcommandnotfound.cn这个域名的80端口(-p 80参数)。并且,设置数据包的源IP地址为随机的IP地址(--rand-source选项),表示伪造数据包的来源,以避免被目标主机或者防火墙识别和屏蔽。你可以看到类似以下的输出:
HPING bashcommandnotfound.cn (eth0 13.107.21.200): S set, 40 headers + 0 data bytes
hping in flood mode, no replies will be shown
这个输出显示了hping3进入了flood模式,不会显示任何回应数据包。你可以通过观察你的网络流量或者目标主机的性能来判断攻击的效果。注意,这种攻击是非法的,可能会造成严重的后果,你应该只在你有权限的网络环境中进行测试,而不要对真实的目标主机进行攻击。
Linux hping3命令的注意事项
使用hping3命令时,你需要注意以下几点:
- hping3命令需要root权限才能运行,因为它需要访问原始套接字。如果你没有root权限,你可以使用sudo命令来提升权限,例如
sudo hping3 ...
。 - hping3命令的选项和参数非常多,你可以使用
hping3 --help
命令来查看所有的选项和参数的说明,或者使用man hping3
命令来查看hping3的手册页。 - hping3命令是一个强大的工具,可以用来测试网络和防火墙的安全性和性能,但也可以用来进行网络攻击和破坏。你应该遵守网络的规则和道德,不要滥用hping3命令,不要对没有授权的目标主机进行攻击或者扫描,否则你可能会承担法律责任。
- 如果你在使用hping3命令时,遇到了
bash: hping3: command not found
的错误,表示你的Linux系统没有安装hping3软件包,你需要按照上面的方法来安装hping3软件包,才能使用hping3命令。
Linux hping3相关命令
以下是一些和hping3命令相关的命令,你可以使用它们来进行不同的网络测试和操作。
评论区