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参数非常多,需要自己扩展了解
查看网卡基本信息
网卡速率等信息
查看网卡驱动
查看网卡的错误包(丢包分析)
- 首先是根据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
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
复制代码
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显示
指定监控网卡 - # 不加i参数表示监控所有网卡
- iftop
- # 指定网卡
- iftop -i eth0
- # 指定网卡且不解析dns
- iftop -n -i eth0
复制代码
ss命令常见方法 - ss -ntpl
- # -n参数:看到的时端口而不是服务名称
- # -t参数:只列出TCP
- # -l参数: 列出当前正在监听的套接字,而不是列出所有套接字
复制代码
端口查找
lsof
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 |