服务器网络问题排查指令工具
traceroute--检测经过网关
traceroute是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。traceroute的原理是试图以最小的TTL(存活时间)发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。发送数据包的大小默认为38个字节。
yum install traceroute
traceroute www.badiu.com
说明: 记录按序列号从1开始,每个序号表示一跳,每一条代表一个网关,我们看到每行有三个时间,单位是 ms ,即数据包到达此跳路由或主机再返回你的主机所需要的时间。 traceroute默认每次发送3个数据包,所以显示三个往返时间。 这里的 * 号代表 路由器禁止了ICMP数据包返回或者是防火墙的过滤。 traceroute程序本身就被用来发现网络故障,如果从某跳开始所有的时间都成了星号,即超时,
则网络故障很有可能就出现在了这一跳
linux路由配置
route -n #查看路由信息 route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0 #添加路由,目标192.168.1.0/24,下一跳192.168.1.1,出口eth0 ip route replace 10.171.216.0/21 via 10.171.223.247 dev eth0 #更改10.171.216.0/21的路由 ip route del 192.168.2.0/24 #删除到达192.168.2.0/24的路由规则 route add -net 192.168.10.0 netmask 255.255.255.0 reject #添加拒绝路由,转发到 192.168.10.0/24 的数据包都会被丢
nc(netcat)--测试网络联通性
nc的作用
(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
(2)端口的扫描,nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
(4)机器之间网络测速
默认是tcp协议,-u 指定udp协议。
yum install nc
在线聊天
服务端: nc -l -p 10000 #默认tcp ,-u指定udp 客户端: nc 192.168.78.128 10000
端口扫描
nc -z -v -n 192.168.78.128 22 -z 表示为zero,意思是扫描时不发送任何数据包 -v 即为详细输出 -n 不使用dns反向查询ip地址域名 -u udp端口
文件拷贝
发送端(A): nc -l 10000 < test.txt 接收端(B): nc -l 192.168.78.128 10000 > test.txt 当主机B连接到主机A时,就会接收到A发来的文件内容,并保存的文件test.txt
反之也是如此 (接收端)A: nc -l 10000 > test.txt (发送端)B: nc -n 192.168.78.128 10000 < test.txt
tcpdump
## 仅显示源端口是 tcp:8888 或目标端口是 udp:9999 的包,并保存,-i选择网卡 tcpdump -i any 'tcp src port 8888 or udp dst port 9999' -w /opt/保存.cap
Iperf --测试网络性能
Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。
安装iperf
yum install iperf 或者 # wget http://downloads.es.net/pub/iperf/iperf-3.0.6.tar.gz # tar zxvf iperf-3.0.6.tar.gz # cd iperf-3.0.6 # ./configure # make # make install
开启服务端
iperf3 -s
开启客户端--测试tcp
iperf3 -c 192.168.1.12 #ip为服务端地址,最简单测试 iperf3 -c 192.168.1.12 -t 20 -i 5 #-i输出状态间隔5秒一次,-t总共执行时间为20秒(默认10秒)
iperf3 -c 192.168.1.12 -i 5 -n 100M #-n发送100M数据,-n和-t互斥
iperf3 -c 192.168.1.12 -i 5 -F webdata.tar.gz -P 2 #-F选择特定文件传输,-P开启2个线程
ID:测试流 ID。 Interval:测试的时间间隔。 Transfer:在测试过程中传输的数据量。 Bandwidth:带宽,也就是网络吞吐量,此处显示的是每秒传输的数据量,用 bit/s 或者 byte/s 表示。 Retr:重传次数,即在测试过程中由于网络原因发生重传的数据包数量。 [5]和sender/receiver:表示中间的测试流编号以及此次测试结果来自于发送端还是接收端。 综上,该结果输出表示在测试时间间隔为 20.04 秒的情况下,使用 iperf3 工具进行网络测试,发送端传输了 11.1GB 的数据,带宽为 4.76 Gbit/s,发生了 269 次重传;
接收端接收到了同样大小的数据,带宽同样为 4.76 Gbit/s。
开启客户端--测试udp
由于UDP协议是一个非面向连接的轻量级传输协议,并且不提供可靠的数据传输服务,因此对UDP应用的关注点不是传输数据有多快,而是它的丢包率和延时指标。
iperf3 -c 192.168.1.12 -u -b 100M -f M -i 3
#-u指定udp协议,
-b是udp使用的带宽,和-u结合使用,默认是1Mbit/sec
#-f M :指定测试结束后的结果以 MB/s 的形式返回
ID:测试流 ID。 Interval:测试的时间间隔。 Transfer:在测试过程中传输的数据量。 Bandwidth:带宽,也就是网络吞吐量,此处显示的是每秒传输的数据量,用 bit/s 或者 byte/s 表示。 Jitter:抖动,指的是网络数据包到达接收端时的时间抖动,在测试过程中,数据包到达时间与平均到达时间之间的差异。jitter高代表延迟高 Lost/Total Datagrams:表示在测试过程中发生了多少个数据包丢失,以及发送的总数据包数。 综上,该结果输出表示在测试时间间隔为 10.04 秒的情况下,使用 iperf3 工具进行网络测试,发送端传输了 118 MB 的数据,带宽为 98.7 Mbit/s,抖动为 0.015 ms,
发生了 860 个数据包丢失,总共发送了 15115 个数据包,丢包率为 5.7%。其中,丢包率较高可能表明网络存在拥塞或其他异常情况
nsenter-切换容器网络
nsenter命令是一个可以在指定进程的命令空间下运行指定程序的命令,最典型的用途就是进入容器的网络命令空间。
- 切换宿主机网络为docker容器网络
1.获取容器pid docker inspect --format {{.State.Pid}} 容器名或者容器id 12345 2.使用 nsenter 命令进入该容器的网络命令空间 nsenter -n -t 12345 执行完之后已是容器网络,exit退出
- 切换主机网络为k8s容器网络
先获取容器的 ID,后续步骤与上面docker版一致。
但是一些环境不适用,应该和k8s网络有关。
#获取容器id kubectl get pod pod名 -n web -o yaml|grep containerID
sar --服务器监控
https://blog.csdn.net/weixin_67510296/article/details/125207042?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168768713416800182125931%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168768713416800182125931&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-125207042-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=sar&spm=1018.2226.3001.4187
vmstat--CPU、内存、磁盘和网络四个方面性能评估
https://www.modb.pro/db/135920
iostat--输出磁盘IO 和 CPU的统计信息
https://www.modb.pro/doc/92616
pidstat--监控进程具体情况
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南