Centos7 网络工具

一、paping测试某个端口连通及丢包率

使用场景:测试某个端口是否存在延迟,如100个包有1个包有延迟的情况

paping支持的参数

参数含义
-p --port N 指定被测试服务的TCP 端口(必须)
–nocolor 屏蔽颜色输出
-t --timeout 指定超时时长,单位毫秒 默认值 1000
-c --count N 指定测试次数

当需要将结果输出到文件,建议使用 --nocolor参数,方便后期处理。

1、下载

wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/paping/paping_1.5.5_x86-64_linux.tar.gz

2、解压

tar zxvf paping_1.5.5_x86-64_linux.tar.gz

3、使用

./paping -p 16880 -c 30 111.204.157.42

二、Speedtest 进行网速测试

1、下载

wget https://raw.github.com/sivel/speedtest-cli/master/speedtest.py
chmod a+rx speedtest.py
mv speedtest.py /usr/local/bin/speedtest
chown root:root /usr/local/bin/speedtest

2、运行 speedtest 检测

speedtest

3、执行下面的命令,分享测试结果并生成结果图片的连接

speedtest --share

三、tcmdump

  • 参数复制代码
-A 只使用 ASCII 打印报文的全部数据,不要和 -X 一起使用,获取 http 可以用 tcpdump-nSA port80

-b 在数据链路层上选择协议,包括 ip, arp, rarp, ipx 等

-c 指定要抓取包的数量

-D 列出操作系统所有可以用于抓包的接口

-i 指定监听的网卡, -i any 显示所有网卡

-n 表示不解析主机名,直接用 IP 显示,默认是用 hostname 显示

-nn 表示不解析主机名和端口,直接用端口号显示,默认显示是端口号对应的服务名

-p 关闭接口的混杂模式

-P 指定抓取的包是流入的包还是流出的,可以指定参数 in, out, inout 等,默认是 inout

-q 快速打印输出,即只输出少量的协议相关信息

-s len 设置要抓取数据包长度为 len,默认只会截取前 96bytes 的内容, -s0 的话,会截取全部内容。

-S 将 TCP 的序列号以绝对值形式输出,而不是相对值

-t 不要打印时间戳

-v:产生详细的输出. 比如包的TTL,id标识,数据包长度,以及IP包的一些选项。同时它还会打开一些附加的包完整性检测,比如对IP或ICMP包头部的校验和。

-vv:产生比-v更详细的输出. 比如NFS回应包中的附加域将会被打印, SMB数据包也会被完全解码。(摘自网络,目前我还未使用过)

-vvv:产生比-vv更详细的输出。比如 telent 时所使用的SB, SE 选项将会被打印, 如果telnet同时使用的是图形界面,其相应的图形选项将会以16进制的方式打印出来(摘自网络,目前我还未使用过)
-x:以16进制的形式打印每个包的头部数据(但不包括数据链路层的头部) -xx:以16进制的形式打印每个包的头部数据(包括数据链路层的头部) -X 同时用 hex 和 ascii 显示报文内容 -XX 同 -X,但同时显示以太网头部

-w 参数后接一个以 .pcap 后缀命令的文件名,就可以将 tcpdump 抓到的数据保存到文件中

-r 参数后接一个以 .pcap 后缀命令的文件名,就可以读取

 

tcpdump 输出的内容虽然多,却很规律。

这里以我随便抓取的一个 tcp 包为例来看一下

21:26:49.013621 IP 172.20.20.1.15605 > 172.20.20.2.5920: Flags [P.], seq 49:97, ack 106048, win 4723, length 48

从上面的输出来看,可以总结出:

  1. 第一列:时分秒毫秒 21:26:49.013621
  2. 第二列:网络协议 IP
  3. 第三列:发送方的ip地址+端口号,其中172.20.20.1是 ip,而15605 是端口号
  4. 第四列:箭头 >, 表示数据流向
  5. 第五列:接收方的ip地址+端口号,其中 172.20.20.2 是 ip,而5920 是端口号
  6. 第六列:冒号
  7. 第七列:数据包内容,包括Flags 标识符,seq 号,ack 号,win 窗口,数据长度 length,其中 [P.] 表示 PUSH 标志位为 1,更多标识符见下面

Flags 标识符

使用 tcpdump 抓包后,会遇到的 TCP 报文 Flags,有以下几种:

  • [S] : SYN(开始连接)
  • [P] : PSH(推送数据)含义:通知接收端应立即将数据推送到应用层,而无需等待缓冲区满。用途:确保数据能及时到达应用程序。典型应用:即时通讯、流媒体等需要快速响应的应用场景。
  • [F] : FIN (结束连接)
  • [R] : RST(重置连接)含义:用于强制断开TCP连接或拒绝连接。用途:当接收方检测到无效或意外的连接请求时,会返回一个带RST标志的数据包。典型应用:防火墙或主机拒绝不必要的连接请求。
  • [.] : 没有 Flag (意思是除上面四种类型外的其他情况,有可能是 ACK 也有可能是 URG)

ACK(确认标志)
含义:确认号字段有效,用于确认已接收的数据段。
用途:TCP是可靠传输协议,ACK标志是其实现可靠性的核心机制。
典型应用:在TCP三次握手和正常数据传输中频繁使用。

ack位的值一般等于上一次对方发来数据包的seq值,seq位的值一般等于上一次对方发来数据包的ack值

1、抓取端口是80的包

tcpdump -nnvA -i any -s 0  host 192.168.1.159 and port 80

 2、抓取 9856或9857或9855 端口的 HTTP 有效数据包,排除 TCP 连接建立过程的数据包(SYN / FIN / ACK)

tcpdump -nnvA -i any  -s 0  '(port 9856 or port 9857 or port 9855)' and '(((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

 3、读取tmp.pcap文件并过滤

 tcpdump -nnvAr tmp.pcap | grep 0013

 

四、nc命令

nc是netcat的简写,是一个功能强大的网络工具,有着网络界的瑞士军刀美誉。可以检测udp和tcp端口是不是通的

-g<网关> 设置路由器跃程通信网关,最多可设置8个。
-G<指向器数目> 设置来源路由指向器,其数值为4的倍数。
-h 在线帮助。
-i<延迟秒数> 设置时间间隔,以便传送信息及扫描通信端口。
-l 使用监听模式,管控传入的资料。
-n 直接使用IP地址,而不通过域名服务器。
-o<输出文件> 指定文件名称,把往来传输的数据以16进制字码倾倒成该文件保存。
-p<通信端口> 设置本地主机使用的通信端口。
-r 乱数指定本地与远端主机的通信端口。
-s<来源位址> 设置本地主机送出数据包的IP地址。
-u 使用UDP传输协议。
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。

1、检测tcp端口

nc -vz 192.168.1.154 89

2、检测udp端口

nc -uvz 192.168.1.146 80

 

四、tcping命令

使用场景:测试某个端口是否存在延迟,如100个包有1个包有延迟的情况

1、下载

wget https://github.com/cloverstd/tcping/releases/download/v0.1.1/tcping-linux-amd64-v0.1.1.tar.gz

2、解压

tar -zxvf tcping-linux-amd64-v0.1.1.tar.gz

3、运行

./tcping -c 100 subotiz-db01-proxysql 6032

-c 多少个请求

-T 超时时间

image

 

posted @ 2023-05-05 14:18  苦逼yw  阅读(220)  评论(0)    收藏  举报