网络问题是 linux 运维和开发中最高频的故障来源。掌握常用的网络调试命令,能快速定位连通性、dns、端口、路由和性能问题。本文系统整理 linux 网络调试的核心工具与实战技巧。
一、连通性测试
1.1 ping 测试主机可达性
# 基本连通性测试 ping -c 4 baidu.com # 指定源地址测试 ping -i eth0 8.8.8.8 # 禁止反查 dns(加速) ping -n 10.0.0.1
ping 使用 icmp 协议。注意:很多服务器会屏蔽 icmp,ping 不通不代表网络不通。
1.2 追踪路由 traceroute
# 追踪到达目标经过的路由节点 traceroute baidu.com # 使用 tcp 方式(探测被防火墙过滤的中间节点) traceroute -t -p 443 baidu.com
可用 mtr 提供持续可达性统计,更适合长期诊断:
mtr -n --report baidu.com
二、端口与连接排查
2.1 端口连通性测试
# tcp 连接测试(最可靠,可测防火墙) nc -zv 10.0.0.1 443 # 发送 http 请求探测 curl -v https://example.com # 测试 udp nc -zv -u 10.0.0.1 53
2.2 查看本机监听端口
# 查看所有监听端口 ss -tlnp # 查看已建立的连接 ss -tnp # 传统 netstat 方式 netstat -tlnp
ss 是 netstat 的现代替代品,性能更好、信息更全。
2.3 检查服务是否存活
# 查看端口对应的进程 lsof -i :8080 # 查看进程监听的端口 ss -tlnp | grep nginx
三、dns 解析问题
# 使用系统解析器查询 nslookup example.com # 指定 dns 服务器 nslookup example.com 8.8.8.8 # 更强大的查询工具 dig example.com dig @114.114.114.114 example.com +short # 查看本地 dns 配置 cat /etc/resolv.conf
常见 dns 故障排查思路:
- 先
dig指定公共 dns(如 8.8.8.8),判断是本地 dns 还是公共 dns 问题 ping域名与pingip 对比,判断是否为域名解析失败- 修改
/etc/resolv.conf后需重启systemd-resolved或networkmanager
四、抓包分析
4.1 tcpdump 抓包
# 抓取指定网卡所有包 tcpdump -i eth0 # 抓取指定端口 tcpdump -i eth0 port 80 # 抓取特定主机通信 tcpdump -i eth0 host 10.0.0.1 # 抓取并保存到文件 tcpdump -i eth0 -w /tmp/capture.pcap host 10.0.0.1 and port 443 # 读取抓包文件 tcpdump -r /tmp/capture.pcap
4.2 常用抓包过滤器
# 按协议过滤 tcpdump -i eth0 icmp tcpdump -i eth0 tcp tcpdump -i eth0 udp # 按端口组合 tcpdump -i eth0 'tcp port 80 or tcp port 443' # 抓 syn 包(排查连接建立问题) tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'
五、路由与网关
# 查看路由表 ip route show route -n # 添加默认网关 ip route add default via 192.168.1.1 # 添加静态路由 ip route add 10.10.0.0/16 via 192.168.1.1 # 删除路由 ip route del 10.10.0.0/16
路由排查思路:
- 默认网关是否存在且可达
- 目标网段是否有正确路由
ip route get <目标ip>查看实际走哪条路由
六、网卡与 ip 配置
# 查看所有网卡信息 ip addr show ip link show # 查看网卡速率/状态 ethtool eth0 # 启用/禁用网卡 ip link set eth0 up ip link set eth0 down # 查看网卡错误统计 ifconfig eth0 ip -s link show eth0
网卡丢包排查看 ip -s link 的 rx/tx errors 与 drops 字段。
七、性能与带宽测试
# 测试 tcp 带宽 iperf3 -s # 服务端 iperf3 -c 10.0.0.1 # 客户端 # 测试 udp 带宽 iperf3 -u -b 100m -c 10.0.0.1 # 查看系统连接统计 ss -s
八、实战排查流程
场景:网站无法访问
ping域名 → 判断 dns 是否解析dig域名 → 确认解析结果nc -zv <ip> 443→ 判断端口连通性traceroute→ 定位卡在哪个节点ss -tlnp→ 确认本机服务是否监听tcpdump抓包 → 分析具体包交互iptables -l→ 检查防火墙规则ip route→ 检查路由是否正确
总结
linux 网络调试的关键是分层排查:从物理链路 → 网卡配置 → ip/路由 → 端口/服务 → dns → 应用层,逐层缩小范围。熟练掌握 ping、ss、traceroute、dig、tcpdump、ip 这六个核心命令,就能解决绝大多数网络问题。建议将这些命令整理成自己的排查清单,遇到故障时按顺序执行,效率会极大提升。
到此这篇关于linux中网络调试常用命令的使用完全指南的文章就介绍到这了,更多相关linux网络调试内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论