linux下如何追查网络问题
linux下如何追查网络问题详细介绍
在 Linux 下追查网络问题需要结合系统工具和网络协议知识,以下是分步骤的排查方法和常用工具:
一、基础网络连通性检查
- 测试主机可达性
ping:检查目标主机是否可达,基础连通性测试。bash目标IP或域名源IP 目标IP
fping:批量测试多个 IP 的连通性(需安装)。
- 检查本地网络配置
- IP 地址 / 子网掩码:bash
addr show 网卡名网卡名
- 默认网关:bash
route showroute
- DNS 配置:bash
/etc/resolv.confsystemd-resolve
- IP 地址 / 子网掩码:bash
二、网络连接与端口状态
- 查看活跃连接和监听端口
ss(推荐,高效现代工具):bashssss
netstat(传统工具,部分系统需安装):bash
- 端口可用性测试
nc(netcat):测试端口是否开放(TCP/UDP)。bash目标IP 端口号目标IP 端口号
telnet:仅用于 TCP 端口,输出更友好(需安装)。
三、路由与 DNS 问题排查
- 追踪路由路径
traceroute(ICMP)/tracepath:显示数据包经过的路由节点。bash目标域名或IPmtr(推荐,实时监控节点稳定性):bash--no-dns 目标IP
- DNS 解析问题
nslookup/dig:测试域名解析。bash域名域名 @DNS服务器
+trace 域名
- 检查本地解析文件:bash
/etc/hosts
四、网络流量与性能分析
- 实时流量监控
- 接口级流量:bash
iftop 网卡名nload 网卡名
- 进程级流量:bash
nethogs 网卡名
- 接口级流量:bash
- 吞吐量与延迟测试
speedtest-cli:测试互联网带宽(需安装,pip install speedtest-cli)。bashspeedtest-cli 服务器IDiperf3:局域网内测试带宽(需在服务端和客户端同时运行)。bash
五、抓包与协议分析
- 数据包捕获
tcpdump(命令行抓包):bashtcpdump 网卡名tcpdump 文件名.pcap 过滤条件
tshark:Wireshark 的命令行版本,支持复杂过滤。
- 深度分析
- 将
tcpdump保存的.pcap文件导入 Wireshark,通过过滤规则(如tcp.port == 80、icmp、dns)分析协议交互、丢包、重传等问题。 - 常见过滤场景:
- 查找特定 IP 的流量:
ip.addr == 192.168.1.1 - 查找 TCP 重传包:
tcp.flags.res == 1或tcp.analysis.retransmission
- 查找特定 IP 的流量:
- 将
六、系统与防火墙配置
- 检查网络接口状态
- 启用 / 禁用接口:bash
网卡名 up/down - 错误统计:bash
show 网卡名网卡名
- 启用 / 禁用接口:bash
- 防火墙规则
iptables(传统防火墙):bashiptablesiptables INPUT
ufw(简化版,Ubuntu 等系统默认):bashufw statusfirewalld(RedHat 系):bashfirewall-cmd --list-all
- 系统日志
- 网络相关日志:bash
journalctl network.servicejournalctl wpa_supplicant.service
/var/log/syslog
- 网络相关日志:bash
七、高级场景处理
- 多网卡 / 负载均衡
- 检查
bonding或team配置(如/etc/sysconfig/network-scripts/ifcfg-bond0)。 - 确认路由策略(
ip rule)是否正确指定源 IP 或出口接口。
- 检查
- 容器 / 虚拟机网络
- Docker 容器:bash
容器名 目标IPinspect 容器名 IP
- K8s 集群:检查 Service/Ingress 配置、网络插件(如 Calico、Flannel)日志。
- Docker 容器:bash
- MTU 问题
- 当出现大数据包分片或丢包时,测试 MTU:bash
目标IP
- 当出现大数据包分片或丢包时,测试 MTU:bash
排查流程总结
- 基础连通性:先用
ping、nslookup确认是否能通域名 / IP。 - 配置检查:IP、网关、DNS 是否正确,防火墙是否放行。
- 路由追踪:
traceroute/mtr定位丢包节点(本地、中间路由、目标端)。 - 流量分析:
ss/netstat看连接状态,iftop/nethogs找异常流量。 - 深度抓包:
tcpdump结合 Wireshark 分析协议细节(如 SYN 丢包、ACK 延迟)。 - 硬件 / 驱动:
ethtool检查驱动 **:ethtool检查网卡状态,dmesg看内核报错。
根据具体问题(如无法上网、连接超时、带宽不足),选择针对性工具逐步缩小范围,优先从本地配置和简单工具入手,再深入到协议层分析。