温馨提示×

Debian进程网络连接问题怎么排查

小樊
38
2025-12-14 15:58:36
栏目: 智能运维

Debian 进程网络连接排查手册

一、快速定位目标进程与连接

  • 确认进程是否在运行并获取 PIDps -ef | grep <进程名>pidof <进程名>
  • 查看该进程打开了哪些网络套接字:
    • 简洁列表:ss -lptun | grep <PID>
    • 详细信息:lsof -Pan -p <PID> -iTCP -sTCP:ESTABLISHED
  • 检查监听端口与进程映射:ss -lntp | column -tnetstat -tulpen | column -t(若未安装,执行 apt-get install -y iproute2 lsof net-tools)。
  • 若进程是容器/虚拟化内的服务,优先进入对应 namespace 排查(例如 nsenter 或容器内的 ss/lsof)。

二、从系统到进程的四步连通性验证

  • 接口与地址:确认网卡处于 UP 且有有效 IP
    • ip addr showifconfig -a
    • 若接口 DOWNip link set <iface> up
  • 路由与网关:确保存在默认路由。
    • ip route showroute -n
    • 缺省路由可临时添加:ip route add default via <网关IP> dev <iface>
  • 外部连通性:先 IP域名
    • ping -c 4 8.8.8.8(ICMP 可能被禁,不代表业务端口不可用)
    • ping -c 4 www.example.com(若失败,多为 DNS 问题)
  • DNS 解析:cat /etc/resolv.conf;必要时临时写入 nameserver 8.8.8.8 测试(注意某些系统会动态覆盖该文件,需做持久化)。
  • 服务端口可达性:对目标 IP:端口 做直连验证。
    • nc -vz <IP> <端口>telnet <IP> <端口>
    • 路径追踪:traceroute <IP>(Debian 上可能需要 apt-get install -y traceroute)。

三、定位“卡在哪儿”的关键工具

  • 抓包定位应用层是否发出/收到数据:
    • 本机进程:tcpdump -ni any -s0 -w /tmp/app.pcap 'tcp port <端口>'
    • 仅看某进程:ss -lptun | grep <PID> 获取 源IP:源端口,然后在 tcpdump 中过滤 src host <源IP> and src port <源端口>
    • 服务端抓包(若可控):tcpdump -ni <iface> -s0 'tcp port <端口>'
  • 查看内核与驱动层线索:
    • 接口错误/丢包:ifconfig <iface>ip -s link show <iface>(关注 errors/dropped
    • 网卡协商与速率:ethtool <iface>(关注 Speed/Duplex/Auto-negotiation
  • 路由与邻居表:
    • 路由:ip route get <目标IP> from <源IP>
    • ARP:ip neigh show
  • 防火墙与策略路由:
    • sudo ufw status(UFW)或 sudo iptables -S(iptables)
    • 容器/云环境注意 安全组/NACL 与主机防火墙叠加效应。

四、常见症状与对应处理

症状 快速判断 处理要点
进程端口未监听 `ss -lntp grep <端口>` 无输出
能 ping 通网关与 8.8.8.8,域名访问失败 nslookup/dig 失败 修正 /etc/resolv.confnameserver;检查 resolvconf/NetworkManager 是否覆盖;做 DNS 连通性测试
连接超时或拒绝 nc/telnet 到目标 IP:端口 失败 服务端进程/端口是否存活;本机/对端 iptables 与云安全组是否放行;抓包确认是否发出 SYN 以及是否收到 SYN-ACK/RST
偶发丢包/高延迟 ifconfig/ip -s link 显示 dropped/errors 检查 双工/速率 协商、网线/交换机端口、链路质量;必要时更换网线/端口或固定速率
本机监听正常但外部访问不了 ss -lntp 可见监听,外部不通 云主机安全组/本机防火墙未放行;服务仅绑定 127.0.0.1;路由/NAT/端口转发配置问题
应用报 UnknownHostException 域名解析失败 更换 DNS、检查 /etc/resolv.conf 是否被覆盖、验证域名拼写与 DNS 记录
应用报 ConnectException/超时 连接被拒绝或长时间无响应 nc/telnet 复现;检查目标进程与端口、对端防火墙、网络路径(traceroute)、必要时抓包分析握手过程
以上症状与处理要点可结合系统命令与日志快速验证与修复,涉及 DNS、路由、防火墙、抓包 等关键环节。

五、网络配置与服务状态核查

  • 网络管理服务状态:
    • sudo systemctl status NetworkManager(或 networking
    • 未运行则启动:sudo systemctl start NetworkManager && sudo systemctl enable NetworkManager
  • 接口与地址配置:
    • 查看:ip addr show
    • 启用接口:ip link set <iface> up
    • 重新获取 DHCPsudo dhclient <iface>
  • 路由与网关:
    • 查看:ip route show
    • 临时添加默认网关:ip route add default via <网关IP> dev <iface>
  • DNS 配置:
    • 查看:cat /etc/resolv.conf
    • 临时写入:echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf(注意持久化方式)
  • 日志与内核消息:
    • 系统日志:journalctl -u NetworkManager -btail -f /var/log/syslog
    • 内核/驱动:dmesg | grep -i <iface>

0