常用网络诊断工具(什么网络诊断)

日常开发或者运维过程中,经常会涉及一些需要进行网络诊断的场景,这里介绍一些常用的诊断工具。

ping

ping是最常用的网络诊断工具,除了判断联通和延时,还可以判断传输的MTU(MTU是网络可以发送的最大报文大小)是否正确。

[root@i-xxxxxxx ~]# ping 114.114.114.114
PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.
64 bytes from 114.114.114.114: icmp_seq=1 ttl=86 time=9.11 ms
64 bytes from 114.114.114.114: icmp_seq=2 ttl=78 time=8.90 ms
64 bytes from 114.114.114.114: icmp_seq=3 ttl=85 time=9.31 ms
64 bytes from 114.114.114.114: icmp_seq=4 ttl=79 time=9.01 ms
64 bytes from 114.114.114.114: icmp_seq=5 ttl=82 time=9.25 ms
^C
--- 114.114.114.114 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 8.908/9.122/9.313/0.171 ms

telnet

telnet就是查看某个端口是否可访问。

# 查看zookeeper的2181端口是否可以访问,如下为可访问
[root@i-xxxxxxx ~]# telnet 10.73.14.141 2181
Trying 10.73.14.141...
Connected to 10.73.14.141.
Escape character is '^]'.

tcpdump

这是最常用的抓包工具,用于查看网络流量信息。

基本使用

# -i <网卡名> -n 输出ip地址,不反向解析成域名  -e 输出mac地址 -l 实时输出到stdout, 默认是缓存一批才输出 -c 抓包数量,避免流量大时无法退出tcpdump
# tcpdump -i bond0 -nel -c 2
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on bond0, link-type EN10MB (Ethernet), capture size 262144 bytes
# 这条是vxlan报文,第一行是外层的udp头
11:42:04.254403 00:f6:63:f9:06:c1 > 68:91:d0:61:d2:c1, ethertype IPv4 (0x0800), length 116: 172.31.22.11.57384 > 172.31.20.16.4789: VXLAN, flags [I] (0x08), vni 14148281
# 第一个报文的内层的报文
52:54:22:a3:b9:e7 > b2:f4:d7:18:ff:0a, ethertype IPv4 (0x0800), length 66: 10.73.15.51.8001 > 172.31.20.23.51774: Flags [F.], seq 2711081592, ack 4166116694, win 235, options [nop,nop,TS val 1021239437 ecr 985499688], length 0
# 第二个报文,是tcp的流量
11:42:04.254425 68:91:d0:61:d2:c1 > 00:f6:63:f9:06:c1, ethertype IPv4 (0x0800), length 254: 172.31.20.16.22 > 172.31.105.145.60303: Flags [P.], seq 2910664665:2910664853, ack 2435946367, win 39, options [nop,nop,TS val 2780377579 ecr 1245621143], length 188
2 packets captured
11 packets received by filter
0 packets dropped by kernel

netstat

当需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询

[root@i-xxxxxxx ~]# netstat -ntlp   //查看当前所有tcp端口·
[root@i-xxxxxxx ~]# netstat -ntulp |grep 80   //查看所有80端口使用情况·
[root@i-xxxxxxx ~]# netstat -an | grep 3306   //查看所有3306端口使用情况·
[root@i-xxxxxxx ~]# netstat -nlp |grep LISTEN   //查看当前所有监听端口·

netstat  -lntup  
说明: l:listening   n:num   t:tcp  u:udp  p:process
netstat -ltunp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      840/rsync           
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5022/nginx: master  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1159/sshd           
--------------

lsof

可以使用lsof检查端口占用

#检查端口占用情况,可以使用下面几个命令
lsof -i:9090
ss -naltp |grep 9090
netstat -anltu |grep 9090

nc

判断tcp端口是否监听

# 判断10.73.14.141的22端口是否监听
[root@i-xxxxxxx ~]# nc -zv 10.73.14.141 22
Connection to 10.73.14.141 22 port [tcp/ssh] succeeded!
# 判断10.73.14.141的23端口是否监听
[root@i-xxxxxxx ~]# nc -zv 10.73.14.141 23
nc: connect to 10.73.14.141 port 23 (tcp) failed: Connection refused

还可以测试带宽:

# nc命令有个-l参数可以用来监听指定端口,因此我们要完成上面的功能,就只需要简单的从/dev/zero或者其他虚拟设备读入数据:
# server端:
nc -l -p 3333 < /dev/zero
 
# client 端:
# 然后另外一台电脑使用nc来连接到这个端口
# 收到的数据都转到 null
nc 192.168.0.11 3333 > /dev/null
 
#
然后再开一个终端,使用iftop -i bond0看带宽:
                         204Mb                      407Mb                     611Mb                      814Mb                0.99Gb
└─────────────────────────┴──────────────────────────┴─────────────────────────┴──────────────────────────┴──────────────────────────
tr02n06.ccd.pitrix.com                       => tr02n11.ccd.pitrix.com                        4.98Gb  4.91Gb  3.43Gb
                                                     <=                  

防火墙

linux6版本的增加防火墙
iptables -A INPUT -p tcp --dport 5534 -j ACCEPT 
vi /etc/sysconfig/iptables
开启: chkconfig iptables on    关闭: chkconfig iptables off
开启: service iptables start   关闭: service iptables stop

linux7版本的增加防火墙
firewall-cmd --zone=public --add-port=5672/tcp --permanent   # 开放5672端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent  #关闭5672端口
firewall-cmd --zone=public --list-ports  查看端口
firewall-cmd --reload 
systemctl stop firewalld.service           
systemctl disable firewalld.service  

如有不对,欢迎指正,相互学习,共同进步。

相关文章

性能测试工具Locust(性能测试工具有哪些)

一、写在前面官网: https://www.locust.io/官方使用文档:https://docs.locust.io/en/latest/大并发量测试时,建议在linux系统下进行。二、Locu...

Nginx Proxy Manager 2.12.4发布!HTTPS更简单!

Nginx Proxy Manager 2.12 重大更新:从 API 到 DNS 的全面提升 你的网站管家突然变聪明了!Nginx Proxy Manager刚发布了2.12版本,这次升级修了两个关...

Apache性能测试工具ab简单使用-5分钟快速掌握

ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试,比如nginx、tomcat、IIS等。一、ab的原理a...

Linux使用ab工具命令对Web网站服务器进行压力测试

ab是apachebench命令的缩写,它是apache自带的Web性能测试工具。ab工具非常实用,它可以去创建多个并发访问线程,模拟多个访问客户端同时对某一网站URL地址进行访问,这样我们就可以用来...

如何对ESB平台进行性能测试(es 性能测试数据)

ESB平台作为公司的核心产品之一,在主数据治理、数据中台、企业中台等方案都发挥着非常重要的作用,无论是数据处理、接口处理都需要ESB平台的参与与实现,所以对于ESB产品而言,保证ESB平台功能的完备性...