Debian 网络诊断实用流程
一 快速分层定位流程
二 常用命令与示例
| 目标 | 命令示例 | 关注点 |
|---|---|---|
| 查看接口与地址 | ip addr show;ip link | 接口状态UP/DOWN、inet地址、MAC |
| 查看路由与默认网关 | ip route;route -n | default via是否正确、目标网段路由 |
| 连通性测试 | ping -c 4 8.8.8.8;ping -c 4 example.com | 丢包率、时延抖动 |
| 路径追踪 | traceroute example.com;mtr --report example.com | 首跳/中间跳丢包与时延尖峰 |
| DNS 解析 | nslookup example.com;nslookup example.com 8.8.8.8;dig +short example.com A | 解析是否成功、是否命中预期DNS |
| 监听端口与服务 | ss -ltnp;netstat -tulpen | 进程、协议、端口是否在监听 |
| 实时流量与占用 | sudo iftop;sudo nethogs eth0 | 占用带宽的进程与连接 |
| 抓包分析 | sudo tcpdump -i eth0 -nn host 1.2.3.4 and port 443 | SYN/ACK、重传、ICMP/ARP 异常 |
| 链路速率与双工 | sudo ethtool eth0 | Speed/Duplex、协商是否一致 |
| 系统日志 | dmesg | grep -i eth;journalctl -u networking;cat /var/log/syslog |
三 典型场景与处理建议
四 一键诊断脚本示例
#!/usr/bin/env bash
set -e
echo "=== $(date) ==="
echo "1) 接口与地址"
ip -4 -br addr
echo
echo "2) 路由与默认网关"
ip route | grep -E '^default|^0\.0\.0\.0'
echo
echo "3) 连通性与 DNS"
ping -c 4 8.8.8.8 && echo " -> 8.8.8.8 OK" || echo " -> 8.8.8.8 FAILED"
ping -c 4 1.1.1.1 && echo " -> 1.1.1.1 OK" || echo " -> 1.1.1.1 FAILED"
nslookup example.com && echo " -> DNS OK" || echo " -> DNS FAILED"
echo
echo "4) 监听端口"
ss -ltnp | head -n 20
echo
echo "5) 链路速率与双工"
ethtool eth0 2>/dev/null | grep -E 'Speed|Duplex|Link detected' || echo " -> ethtool not available or no eth0"
echo
echo "6) 最近网络相关日志"
dmesg | tail -n 50 | grep -i -E 'eth|wlan|net|link' || true
journalctl -u networking -n 50 --no-pager || true
tail -n 50 /var/log/syslog | grep -i -E 'dhcp|network|resolv' || true