Linux网络故障排查
Linux网络故障排查命令
经常使用 tcpdump、gdb、 strace等系统工具分析较复杂问题
ping
# 路由追踪
traceroute
# mtr命令查看在哪里丢包,相当于ping和traceroute命令的组合
mtr
# 实时查看网络质量
mtr baidu.com
# 显示mtr报告
mtr -r 114.114.114.114
# tcpdump抓包排查网络故障
tcpdump
# ss命令和netstat参数一样,格式不一样
ss
netstat

查看网卡信息
例如: 要查看你的网卡的速率
ethtool参数非常多,需要自己扩展了解
查看网卡基本信息
网卡速率等信息
# 查看网卡基本信息
ethtool eth0

查看网卡驱动
# 查看网卡驱动
ethtool -i eth0

查看网卡的错误包(丢包分析)
- 首先是根据ifconfig确认有丢包的情况
- 然后确认丢包类型
# 确认丢包类型
## -S 选项用于显示指定网络接口的统计信息
ethtool -S eth0 | grep errors

- 然后再根据丢包类型继续往下分析
ping
https://blog.csdn.net/omaidb/article/details/116096205
# 发送指定数量的包
## -c 指定发送包 数量
## ping10次就会停止
ping aliyun.com -c 10
# 指定网卡ping
## -i 指定网卡
ping -i eth0 aliyun.com
# 指定包大小,判断时延更准确
## -s 指定包大小
ping -s 512 aliyun.com
traceroute
https://www.linuxcool.com/traceroute
https://wangchujiang.com/linux-command/c/traceroute.html
# 验证端到端 TCP 路径
## -T tcpsync
## -p 指定端口
traceroute -T -p 3007 172.18.234.130
Centos7安装traceroute
# 安装traceroute
yum install traceroute -y
不解析域名traceroute -n
不解析ip的域名,速度会更快
# -n 不解析域名
traceroute -n aliyun.com
指定网卡接口traceroute -i
# -i 指定网卡接口
traceroute -n -i eth0 aliyun.com
tracepath
路径探测跟踪。
tracepath命令用于跟踪数据包在网络中的路径,类似于traceroute命令。它可以帮助你确定从源主机到目标主机之间的网络路径,以及在该路径上的每个跃点的延迟。
常用的tracepath命令选项:
-n:禁用反向DNS查找,以避免解析IP地址为主机名。
-b:使用较大的数据包进行跟踪。
-p <端口号>:指定跟踪所使用的端口号。
-q <跃点数>:设置要跟踪的跃点数。
-m <跃点数>:设置最大跃点数,超过该跃点数将停止跟踪。
# 查看每条路径的延迟

nexttrace
项目地址:https://github.com/nxtrace/Ntrace-core

nslookup
https://blog.csdn.net/omaidb/article/details/128832938
telnet端口测试
telnet建立三次握手不发数据
# telnet ip或域名 端口号
telnet aliyun.com 80
[cesu-c8 root ~]# telnet aliyun.com 80
Trying 106.11.172.9...
Connected to aliyun.com.
Escape character is '^]'.
tcping测试tcp端口
https://blog.csdn.net/omaidb/article/details/120120730
BestTrace路由分析:
BestTrace查看VPS的去程和回程
安装BestTrace包
# 下载BestTrace包
wget https://cdn.ipip.net/17mon/besttrace4linux.zip
# 只解压指定文件besttrace
## “指定解压的文件名”
## -d 解压到指定目录
unzip besttrace4linux.zip "besttrace" -d /usr/local/bin/
# 赋予执行权限
chmod a+x /usr/local/bin/besttrace
# 查看是否安装成功
which besttrace
<br.>
besttrace基本用法
# 必须以root运行
## 追踪ip或域名
besttrace 114.114.114.114

iftop(查看网卡流量状态)
需要
epel源
# 启用epel
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 安装iftop
yum install iftop -y
查看哪个连接占用流量最多
# 查看eth0哪个连接网络流量最多
iftop -P

不解析域名,所有的网络连接都以ip显示
# 不解析域名
iftop -n

指定监控网卡
# 不加i参数表示监控所有网卡
iftop
# 指定网卡
iftop -i eth0
# 指定网卡且不解析dns
iftop -n -i eth0
ss命令常见方法
ss -ntpl
# -n参数:看到的时端口而不是服务名称
# -t参数:只列出TCP
# -l参数: 列出当前正在监听的套接字,而不是列出所有套接字

端口查找
lsof
#
lsof -i:22

lsof -i udp:514

netstat
https://blog.csdn.net/omaidb/article/details/120617942

查询端口使用情况
# netstat -ano
## -a或--all:显示所有连线中的Socket
## -n 直接使用IP地址,不通过域名服务器
## -o或--timers:显示计时器
netstat -ano | grep 3306
# -tunlp(最常用)
## -t 显示TCP传输协议的连线状况
## -u 显示UDP传输协议的连线状况
## -n 直接使用IP地址,不通过域名服务器
## -l 仅列出在监听的服务状态
## -p 显示正在使用Socket的程序识别码和程序名称
netstat -tunlp | grep 1080
# 只列出监听中的连接
## -t 显示TCP传输协议的连线状况
## -n 直接使用IP地址,不通过域名服务器
## -l 仅列出在监听的服务状态
netstat -tnl |grep 端口

sar命令统计网卡流量
使用sar每1秒统计一次网络接口的活动状况,连续显示5次。
显示结果主要字段说明
IFACE:网络接口名称。
rxpck/s、txpck/s:每秒收或发的数据包数量。
rxkB/s、txkB/s:每秒收或发的字节数,以kB/s为单位。
rxcmp/s、txcmp/s:每秒收或发的压缩过的数据包数量。
rxmcst/s:每秒收到的多播数据包。
sar示例
# sar -n DEV 间隔时间(s) 统计次数
sar -n DEV 1 5

strace 跟踪进程中的系统调用
https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/strace.html

88

被折叠的 条评论
为什么被折叠?



