ping是常见的测试命令,关于它的一些扩展有不少今天就来说说吧
1. ping
在检查主机是否在线的工具中 ping 可能是最著名的程序了,该工具向目标主机发送 ICMP 协议(Internet Control Message Protocol) 的echo request 数据包。如果目标主机在线且允许接受ping 请求,那么目标主机将回复 ICMP echo reply 数据包。
在kali linux 里面,默认情况下在按 CTRL + C 之前,ping 指令会一直运行下去。
ping 里面有很多指令最常用的有以下几个:
(1) ping -c count : 发送 echo request 数据包的总量 如下
发送 10 次 每次包的大小默认是 56 ,最后会显示多少个包被成功接回,多少个丢失以及总时间、最大、最小、平均时间。
(2) ping -I interface address : 设置源地址或者网络接口,该参数可以是 IP 地址(如 ping -I 192.168.1.1)或者网卡设备的名称(如 eth0) 如果要 ping IPv6 链路本地地址,就必须指定这个选项。
(3) ping -s packet size 发送指定大小的数据包 如
指定 ping 8次, 每次的数据包大小 99 字节。
2. arping
arping 是在局域网中使用ARP(Addess Resolution Protocol)请求判断目标主机是否在线的工具。你可以用 IP 地址或者 MAC 地址 作为它的测试目标。
因为 arping 程序工作于 OSI 模型中的第二层,ARP 协议的数据包无法通过路由器和网关,所以它只能检测本地局域网络中的主机。
(1)判断某局域网主机是否在线 如图
该目标主机在线 。如果这个IP 存在该主机将其 Mac 地址通过 ARP 协议传回
(2) 判断 某个地址是否被占用,如果某天你想换一个 IP 地址 192.168.6.5,换之前先判断这个地址是否被其他主机占用。
如下命令
arping -D -I eth0 10.29.6.80 -c 2
键入 echo $? 返回值是1 表示此地址已经被占用, 返回 0 表示未被占用。
3. fping
与 ping 相比 fping 可以同时向多个主机发送 ping(ICMP echo )请求,你可以在命令里面指定主机,也可以在某个文件里面指定多个目标主机。
默认情况下 fping 通过主机回复判断主机是否在线。返回 alive 则表示在线,返回UNreachable 表明不可访问。
(1) fping ip ip ip ip... :如下
第一个在线,第二个和第三个不在线。
(2)如果不想指定 IP 可以指定目标主机列表,对整个网段进行检测。命令如下:
fping -g 10.29.5.0/24
-g 是参数 g 是 generate 的缩写。
alive 表示在线,UNreachable 表示不在线。
可以看出数据是相当的多,在线的主机都会优先显示,不在线的都在后面显示。
如果要改变探测次数,可以加上 -r 参数 (默认是 3 次)
(3) 查看多个目标统计结果如下
这个阅读起来非常方便,小伙伴们都可以试试。
4.hping3
hping3 程序是命令行下的网络数据包生成和分析工具。在 TCP/IP 测试和安全测试里,例如端口扫描、防火墙规则测试、网络性能测试时,都能使用这个程序生成自定义的网络数据包,从而进行相应测试。
在不指定任何参数下,直接运行 hping3 将向 TCP 的0号 端口发送空数据。如果改变通信协议参考下面参数
-0 --raw-ip 发送原始数据包
-1 --ICMP 发送ICMP数据包
-2 --udp 发送UDP数据包
-8 --scan 进入扫描模式
-9 --liste 进入监听模式
如果不指定通信协议默认是 TCP 协议
-M --setseq set TCP sequence number
-L --setack set TCP ack
-F --fin set FIN flag
-S --syn set SYN flag
-R --rst set RST flag
-P --push set PUSH flag
-A --ack set ACK flag
-U --urg set URG flag
-X --xmas set X unused flag (0x40)
-Y --ymas set Y unused flag (0x80)
(1)向某一个目标主机发送 ICMP 请求 就要用 -1 (ICMP 协议参数) 和 -c (发送次数参数)
hping3 -1 10.29.5.4 -c 10 如下
一共发送10次 ICMP 请求,如上 目标主机在线,它回复了ICMP echo 请求。
捕获数据流量进行验证如下
可见目标主机的确发送了ICMP echo 回复数据包。
PS : 各种协议和参数的使用参考以上,可以自己试试其他协议。
(2)用hping3 检验防火墙规则 : UDP 检验
参数说明 -2 表示upd协议 -c 是次数 ,-S 是SYN 标识 -p 22 端口号 22 ,-s 基本源端口
上述信息表明 目标主机接收了我们发送到 22 端口的带有SYN标识的 UDP 包,但是目标主机的在UDP 协议下不可达,不接受22端口的UDP数据包。
ICMP 检验:
上述信息表明 目标主机接收了ICMP包。你也可以自己加参数。
TCP 检测
上述信息表明 目标主机接收了我们发送到 22 端口的带有SYN标识的 TCP 包。
以上只是几个简单的功能,小伙伴可以查看 hping3的其他命令你进行摸索。
5.nping
nping 用户允许发送多种协议(TCP、UDP、ICMP、ARP)的数据包你也可以设置协议的端口如 TCP 的源端口和目的端口。nping 可以探测多个主机的多个端口。还可以像 ping 程序一样发送ICMP echo 请求。nping也可以对网络进行压力测试 、ARP 中毒、DOS 攻击。
kali Linux中,nping是Nmap的一部分。具体参数如下
--tcp-connect 基础的--tcp-connect 功能
--tcp TCP模式
--upd UDP模式
--icmp ICMP模式
--arp ARP模式
--tr traceroute模式(仅与TCP/ICMP/UDP 模式兼容)
向多个目标发送请求 nping -c 4 10.29.5.4-10
在这段ip中 只有 10.29.5.4 对我们主机响应,其他主机都没有
在不响应的情况下,我们可以向这些主机开放的TCP端口发送 TCP SYN 包检验它是否在线
如下 随便挑一个 ip 进行测试
nping --tcp -c 4 -p 22 10.29.5.6
一般的常规端口有 21、222、23、25、80、443、8443.可以从这些端口入手。
由此可见 这个目标主机不在线。
好了以上5个关于 ping 的工具就到这里了,多加练习就可以掌握。未探测的部分还有很多,继续加油!