简介
fping 是一个类似 ping 的程序,它使用 Internet 控制消息协议 (ICMP) 回显请求以确定目标主机是否正在响应。fping 与 ping 的不同之处在于您可以在命令中指定任意数量的目标行,或指定包含要 ping 的目标列表的文件。而不是发送到一个目标直到超时或回复,fping 将发送一个 ping 数据包并以循环方式移动到下一个目标。 在默认模式下,如果目标回复,则会将其记录下来并从要检查的目标列表中删除;如果目标在一定时间限制和/或重试限制内没有响应,则会将其指定为无法访问。 fping 还支持向目标发送指定数量的 ping,或无限循环(如 ping )。与 ping 不同,fping 旨在用于脚本中,因此其输出设计为易于解析。无需使用信号 SIGQUIT(在大多数系统上用键盘输入 ^\)终止进程即可获取当前统计信息。
fping - 向网络主机发送 ICMP ECHO_REQUEST 数据包
fping6 - 向后兼容 4.0 以下版本的 fping
安装
源码安装
可以通过Github源代码进行安装。建议挂代理下载。
#克隆源码
git clone https://github.com/schweikert/fping.git
#进入fping目录
cd fping/
#查看当前目录的文件
ls
运行 ./autogen.sh
./autogen.sh
运行 ./configure
./configure
安装
make install
输入以下命令如果出现这个界面就说明安装成功了。
fping -h
APT包管理器安装
fping 工具默认安装在Kali Linux 了,也可以通过以下命令进行安装。
sudo apt install fping
使用
fping
1. -h, --help
显示帮助文档
fping -h
2. 常规使用
用法:fping [选项] [目标...]
fping 192.168.174.145
探测选项
3. -4,--ipv4
仅 ping IPv4 地址
fping -4 192.168.174.145
4. -6,--ipv6
仅 ping IPv6 地址
fping -6 fe80::e485:153c:608a:22bd%10
5. -b,--size=BYTES
要发送的 ping 数据量,以字节为单位(默认值:56)
要发送的 ping 数据的字节数。最小大小(通常为 12)为 fping 工作所需的数据(序列号、时间戳)留出空间。报告的接收数据大小包括 IP 标头(通常为 20 字节)和 ICMP 标头(8 字节),因此最小总大小为 40 字节。
默认值为 56,与 ping 相同。最大值是理论上的最大 IP 数据报大小(64K),但大多数系统将其限制为较小的、与系统相关的数字。
fping -b 56 192.168.174.145
6. -B,--backoff=N
将指数退避因子设置为 N(默认值:1.5)
退避因子。在默认模式下,fping 会在放弃之前向目标发送多个请求,并在每个连续请求上等待更长时间才能得到答复。此参数是每个连续请求上等待时间 (-t) 乘以的值;必须将其输入为浮点数 (x.y)。默认值为 1.5。
fping -B 1.5 192.168.174.145
7. -c,--count=N
计数模式:向每个目标发送 N 次 ping
发送给每个目标的请求数据包数量。在此模式下,每收到一个响应都会显示一行(可以使用 -q 或 -Q 来抑制)。此外,当所有请求都已发送(或中断时),将显示每个目标的响应统计信息。
fping -c 4 192.168.174.145
8. -f,--file=FILE
从文件中读取目标列表(- 表示标准输入)
从文件中读取目标列表。此选项只能由 root 用户使用。普通用户应通过 stdin 管道输入文件:
$ fping < targets_file
fping -f target.txt
9. -g, --generate addr/mask
生成目标列表(仅当未指定 -f 时),最多限制为 131070 个目标
根据提供的 IP 网络掩码或起始和结束 IP 生成目标列表。在命令行的目标部分指定网络掩码或开始/结束。如果给出了带有网络掩码的网络,则将排除网络和广播地址。例如,要 ping 网络 192.168.1.0/24,指定的命令行可能如下所示:
$ fping -g 192.168.1.0/24
或
$ fping -g 192.168.1.1 192.168.1.254
fping -g 192.168.174.0/24
10. -H, --ttl=N
设置 IP TTL 字段(存活跳数的时间)。
fping -H 10 -f target.txt
11. -i, --interval=MSEC
向任何目标发送 ping 数据包之间的最短时间(以毫秒为单位)(默认值为 10,最小值为 1)。
fping -i 10 -f target.txt
12. -I, --iface=IFACE
设置接口(需要 SO_BINDTODEVICE 支持)。
fping -I eth0 -f target.txt
13. -k, --fwmark=FWMARK (此参数新版本才有)
设置路由标记
fping -k 1 192.168.174.134
14. -l, --loop
无限循环向每个目标发送数据包。可以使用 Ctrl-C 中断;然后显示每个目标的响应统计信息。
fping -l -f target.txt
15. -m, --all
向目标主机的多个 IP 地址中的每一个发送 ping(建议使用选项“-A”)。
fping -m bing.com
16. -M, --dontfrag
在 IP 标头中设置“不分段”位(用于确定/测试 MTU)。
fping -M -f target.txt
17. -O, --tos=N
设置服务标志 (TOS) 的类型。N 可以是十进制或十六进制 (0xh) 格式。
fping -O 16 -f target.txt
18. -p, --period=MSEC
在循环或计数模式(-l、-c 或 -C)下,此参数设置 fping 在连续向单个目标发送数据包之间等待的时间(以毫秒为单位)。默认值为 1000,最小值为 10。
fping -p 1000 -f target.txt
19. -r, --retry=N
重试限制(默认 3)。这是尝试 ping 目标的次数,不包括第一次尝试。
fping -r 5 -f target.txt
20. -R, --random
不使用全零作为数据包数据,而是生成随机字节。用于破解链接数据压缩等。
fping -R -f target.txt
21. -S, --src=addr
设置源地址。
fping -S 192.168.174.134 -f target.txt
22. -t, --timeout=MSEC
初始目标超时(以毫秒为单位)。在默认的非循环模式下,默认超时为 500 毫秒,它表示 fping 等待其第一个请求的响应的时间量。连续超时乘以使用 -B 指定的退避因子。
在循环/计数模式下,默认超时会自动调整以匹配“period”值(但不超过 2000 毫秒)。如果您愿意,仍然可以使用此选项调整超时值,但请注意,设置大于“period”的值会产生不一致的结果,因为只能遵守最后一个 ping 的超时值。
还请注意,任何大于超时值的收到的回复都将被丢弃。
fping -t 600 -f target.txt
--check-source(新版本)
丢弃不是来自目标地址的回复
fping --check-source 192.168.174.145
--icmp-timestamp(新版本)
使用 ICMP 时间戳而不是 ICMP Echo
fping --icmp-timestamp 192.168.174.134
输出选项
23. -a, --alive
显示目标处于活动状态
fping -a -f target.txt
24. -A, --addr
按地址而不是 DNS 名称显示目标。与-d 结合使用,输出将同时为 ip 和(如果可用)主机名。
fping -A -d -f target.txt
25. -C, --vcount=N
与 -c 类似,但每个目标的统计信息以专为自动收集响应时间统计信息而设计的格式显示。例如:
$ fping -C 5 -q somehost
somehost : 91.7 37.0 29.2 - 36.8
显示五个请求中的每一个的响应时间(以毫秒为单位),其中“-”表示未收到第四个请求的响应。
fping -C 5 -f target.txt
26. -d, --rdns
使用 DNS 查找返回 ping 数据包的地址。这允许为 fping 提供 IP 地址列表作为输入并在输出中打印主机名。这类似于选项 -n/--name,但即使您将主机名作为目标(NAME->IP->NAME),也会强制进行反向 DNS 查找。
fping -d -f target.txt
27. -D, --timestamp
在循环或计数模式(-l、-c 或 -C)生成的输出行前面添加 Unix 时间戳。
fping -c 3 -D -f target.txt
--timestamp-format=FORMAT(新版本)
以给定格式显示时间戳(需要 -D):ctime|iso|rfc3339
fping -c 3 -D --timestamp-format=ctime 192.168.174.134
28. -e, --elapsed
显示返回数据包的已用时间
fping -c 2 -e -f target.txt
29. -n, --name
按名称显示目标(反向 DNS 查找目标 IP)
fping -c 2 -n -f target.txt
30. -N, --netdata
格式化 netdata 的输出(需要 -l -Q)。请参阅:<http://my-netdata.io/>
fping -l -N -f target.txt
31. -o, --outage
根据丢失的 ping 数量和使用的间隔计算“中断时间”(适用于网络收敛测试)。
fping -c 2 -o -f target.txt
32. -q, --quiet
安静。不显示每次探测的结果,只显示最终的摘要。也不显示 ICMP 错误消息。
fping -c 2 -q -f target.txt
33. -Q, --squiet=SECS
与 -q 类似,但每 n 秒显示一次摘要结果。
fping -c 2 -Q 4 -f target.txt
34. -s,--stats
打印最终统计数据
fping -c 2 -s -f target.txt
35. -u,--unreach
显示无法访问的目标
fping -u -f target.txt
36. -v,--version
显示版本
fping -v
37. -x, --reachable=N
给定一个主机列表,此模式检查可访问主机的数量是否 >= N,如果是则退出。
fping -x 3 -f target.txt
38. -X, --fast-reachable=N(新版本)
当找到 N 个主机时立即退出
fping -c 2 -X 5 -f /home/ubuntu/桌面/target.txt
--print-tos
显示收到的 TOS 值
fping -c 2 --print-tos -f /home/ubuntu/桌面/target.txt
--print-ttl
显示 IP TTL 值
fping -c 2 --print-ttl -f /home/ubuntu/桌面/target.txt
组合示例
在约 1 秒内向两台主机生成 20 个 ping(即每 50 毫秒向每台主机发送一个 ping),并在最后报告每个 ping RTT
fping --quiet --interval=1 --vcount=20 --period=50 127.0.0.1 127.0.0.2
fping6
向后兼容 4.0 以下版本的 fping 。fping6 使用方法同上。这里不再展开叙述。
fping6 -h
总结
fping是一款高效灵活的网络探测工具,通过丰富的参数选项满足多样化需求,适合大规模主机检测和性能测试,是网络管理员和安全测试人员不可或缺的利器。
在此特别强调,本教程仅在合法授权的情况下进行测试和研究,请勿用于其他用途。未经授权使用此类工具可能会侵犯他人隐私,触犯相关法律,任何因此引发的法律或利益纠纷与本人无关。
欢迎各位大佬,小白来找我交流。