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从上面的输出来看,可以总结出:
- 第一列:时分秒毫秒 21:26:49.013621
- 第二列:网络协议 IP
- 第三列:发送方的ip地址+端口号,其中172.20.20.1是 ip,而15605 是端口号
- 第四列:箭头 >, 表示数据流向
- 第五列:接收方的ip地址+端口号,其中 172.20.20.2 是 ip,而5920 是端口号
- 第六列:冒号
- 第七列:数据包内容,包括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 超时时间

 
                    
                     
                    
                 
                    
                

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号