温馨提示×

Debian Context里如何进行网络诊断

小樊
43
2025-11-26 19:02:34
栏目: 智能运维

Debian 网络诊断实用流程

一 快速分层定位流程

  • 物理与链路层:确认网线/无线连接、交换机端口指示灯、链路速率与双工。
  • 接口与地址层:查看网卡是否UP并获取IP;检查默认网关路由表是否正确。
  • 连通性与路由:对网关与公网地址执行ping;用traceroute/mtr定位在哪一跳开始丢包或时延异常。
  • DNS解析:用nslookup/dig验证域名解析是否返回正确记录与TTL
  • 端口与服务:用ss -ltnpnetstat -tulpen确认服务是否在监听;必要时用curl/telnet/nmap测试连通。
  • 防火墙与安全组:核对iptables/nftables规则与云平台安全组是否放行相关端口。
  • 抓包取证:用tcpdump在问题点抓包,观察握手、重传、ICMP/ARP 异常。

二 常用命令与示例

目标 命令示例 关注点
查看接口与地址 ip addr show;ip link 接口状态UP/DOWNinet地址、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

三 典型场景与处理建议

  • 无法上网但接口有IP:检查默认网关路由表;确认能ping通网关;若仅外网不通,测试DNS(nslookup/dig),必要时更换为8.8.8.8/1.1.1.1;排查iptables/nftables与云安全组是否放行。
  • 高延迟或抖动:用mtr长时间采样定位问题跳;检查ethtool协商速率/双工;排查上游拥塞与链路质量;必要时优化TCP参数(如窗口、重传相关)并监控系统负载。
  • DNS 解析慢或失败:对比默认DNS8.8.8.8/1.1.1.1解析时延;检查**/etc/resolv.conf是否被覆盖;确认域名的A/CNAME/MX**记录正确。
  • 端口不通或服务不可达:用ss -ltnp确认服务监听;用curl/telnet/nmap从本机与外网测试连通;核对防火墙/安全组策略与监听地址(127.0.0.1 vs 0.0.0.0)。
  • SSH 登录慢:在**/etc/ssh/sshd_config设置UseDNS no并重启sshd**,可缓解反向解析导致的延迟。

四 一键诊断脚本示例

#!/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
  • 使用方法:保存为netcheck.sh,执行:chmod +x netcheck.sh && sudo ./netcheck.sh
  • 提示:按需替换eth0与要测试的域名;若使用NetworkManagersystemd-networkd,可相应查看其服务日志。

0