网络测试诊断工具

  • 测试网络连通性
    • ping
  • 显示正确的路由表
    • ip route
    • route
  • 跟踪路由
    • traceroute
    • tracepath
    • mtr
  • 确定名称服务器使用
    • nslookup
    • host
    • dig
  • 抓包工具
    • tcpdump
    • wireshark
  • 安全扫描工具
    • nmap
    • netcat :网络界的瑞士军刀,即nc
  • 流量控制工具
    • tc

1、fping

fping是一个程序,用于将ICMP探测发送到网络主机,类似于ping

相对于ping多个主机时性能要高得多。 fping完全不同于ping,可以在命令行上定义任意数量的主机,或者指定包含要ping的IP地址或主机列表的文件, 常在shell 脚本中使用。

#CentOS 中由EPEL源提供
[root@centos79 ~]# yum -y install fping

[root@centos79 ~]# fping 39.101.72.1
39.101.72.1 is alive

#禁止被PING通
[root@web01 ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

[root@centos79 ~]# fping 39.101.72.1
39.101.72.1 is unreachable

[root@centos79 ~]# fping 39.101.72.1 192.168.1.1
192.168.1.1 is alive
39.101.72.1 is unreachable

#-g 选项可以指定网段或地址范围
[root@centos79 ~]# fping -g 192.168.1.0/24
192.168.1.1 is alive
192.168.1.2 is alive
ICMP Host Unreachable from 192.168.1.10 for ICMP Echo sent to 192.168.1.3
ICMP Host Unreachable from 192.168.1.10 for ICMP Echo sent to 192.168.1.4
ICMP Host Unreachable from 192.168.1.10 for ICMP Echo sent to 192.168.1.5
ICMP Host Unreachable from 192.168.1.10 for ICMP Echo sent to 192.168.1.6
ICMP Host Unreachable from 192.168.1.10 for ICMP Echo sent to 192.168.1.7
ICMP Host Unreachable from 192.168.1.10 for ICMP Echo sent to 192.168.1.8
......

[root@centos79 ~]# fping -g 192.168.124.125 192.168.124.130
192.168.124.126 is alive
192.168.124.127 is alive
192.168.124.130 is alive
ICMP Host Unreachable from 192.168.124.115 for ICMP Echo sent to 192.168.124.125
ICMP Host Unreachable from 192.168.124.115 for ICMP Echo sent to 192.168.124.129
ICMP Host Unreachable from 192.168.124.115 for ICMP Echo sent to 192.168.124.128
192.168.124.125 is unreachable
192.168.124.128 is unreachable
192.168.124.129 is unreachable

2、tcpdump

网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。

tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]

参数说明:
-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 显示链路层信息,默认不显示链路层
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络接口> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小。默认只截取前96个字节,使用-s0可以截取所有报文内容
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。
#查看网卡
[root@centos79 ~]# tcpdump -D
1.eth0
2.bluetooth0 (Bluetooth adapter number 0)
3.nflog (Linux netfilter log (NFLOG) interface)
4.nfqueue (Linux netfilter queue (NFQUEUE) interface)
5.usbmon1 (USB bus number 1)
6.usbmon2 (USB bus number 2)
7.any (Pseudo-device that captures on all interfaces)
8.lo [Loopback]

#不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。
tcpdump

#监听特定网卡
tcpdump -i eth0

#监听特定主机,监听主机192.168.1.1 的通信包,注意:出、入的包都会被监听。
tcpdump host 192.168.1.1

#特定来源、目标地址的通信
#特定来源
tcpdump src host hostname
#特定目标地址
tcpdump dst host hostname
#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
tcpdump host hostname

#特定端口
tcpdump port 3000

#监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包
tcpdump tcp

#来源主机+端口+TCP,监听来自主机192.168.1.1在端口22上的TCP数据包
tcpdump tcp port 22 and src host 192.168.1.1

#监听特定主机之间的通信
tcpdump ip host 192.168.1.2 and 192.168.1.1

#192.168.1.1和除了192.168.1.2之外的主机之间的通信
tcpdump ip host 192.168.1.1 and ! 192.168.1.2

#限制抓包的数量,如下,抓到1000个包后,自动退出
tcpdump -c 1000

#保存到本地,tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,才会将输出写到本地磁盘,可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)
tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap

#详细示例
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24
-w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 :设置为0表示使用默认值262144字节抓取每个包,以便与tcpdump的旧版本兼容
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
(8)-w ./target.cap : 保存成cap文件,方便用wireshark分析

3、nc

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具

nc的作用

  • 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
  • 端口的扫描,nc可以作为client发起TCP或UDP连接
  • 机器之间传输文件
  • 机器之间网络测速
nc [-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
-g<网关>           设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目>      设置来源路由指向器,其数值为4的倍数。
-h                 在线帮助。
-i<延迟秒数>        设置时间间隔,以便传送信息及扫描通信端口。
-l                 使用监听模式,管控传入的资料。
-n                 直接使用IP地址,而不通过域名服务器。
-o<输出文件>        指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口>        设置本地主机使用的通信端口。
-r                  乱数指定本地与远端主机的通信端口。
-s<来源位址>         设置本地主机送出数据包的IP地址。
-u                  使用UDP传输协议。
-v                  显示指令执行过程。
-w<超时秒数>         设置等待连线的时间。
-z                  表示zero,表示扫描时不发送任何数据,只在扫描通信端口时使用。
#范例
[root@centos79 ~]# yum -y install nc

#探测TCP协议
[root@centos79 ~]# nc -zv 39.101.72.1 22
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 39.101.72.1:22.
Ncat: 0 bytes sent, 0 bytes received in 0.05 seconds.
[root@centos79 ~]# nc -zv 39.101.72.1 80
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 39.101.72.1:80.
Ncat: 0 bytes sent, 0 bytes received in 0.04 seconds.

#探测UDP协议
nc -zv -u <IP> <PORT>

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享