< 返回

    Linux 服务器网络基础与常见故障排查

    2026-02-08 20:56 作者:技术部 阅读量:4

    Linux 服务器的网络问题在生产环境中出现频率极高,且往往是“看起来没问题但就是连不上”的类型。网络故障的排查核心在于分层逐层验证,而不是盲目重启网络服务或改配置。

    现代 Linux(systemd + NetworkManager / systemd-networkd / ifcfg / netplan)网络栈主要基于内核的 netdevice + iproute2 工具族。本文按 OSI 模型的简化版(物理 → 链路 → 网络 → 传输 → 应用)组织内容,重点放在服务器最常见的 80% 场景。

    1. 网络分层排查框架(推荐的思考顺序)

     
     
    层级 关注点 核心命令 / 检查点 常见症状 成功标准
    1. 物理/链路 网卡是否 up、链路是否 up、有无 carrier ip link show、ethtool eth0 no carrier、link down STATE UP + carrier detected
    2. 接口配置 IP、掩码、网关、MTU 是否正确 ip addr show、ip route show IP 丢失、配置不对 看到正确的 inet / default via
    3. 本地网络 ARP 是否正常、能否 ping 同网段 ping 网关 IP、arp -n 同网段不通 ARP 表有对应 MAC
    4. 路由与转发 默认路由是否存在、策略路由是否干扰 ip route get 8.8.8.8、ip rule show 能 ping 网关但上不了外网 route get 显示正确 nexthop
    5. 防火墙 iptables/nftables/firewalld/ufw 是否阻断 iptables -L -n -v、nft list ruleset、firewall-cmd --list-all 能本地连但外部连不上 允许预期端口/流量
    6. DNS 域名解析是否正常 dig/nslookup/resolvectl query、cat /etc/resolv.conf ping IP 通但域名不通 能正确解析出 IP
    7. 传输层 TCP/UDP 连接建立、超时、重传 ss -ltnp、ss -antip、tcpdump 连接建立慢、SYN_SENT 堆积、RST ESTABLISHED 状态正常
    8. 应用层 服务监听端口、进程是否绑定正确 ss -ltnp、netstat -ltnp、lsof -i 外部 curl/telnet 失败但本地可以 LISTEN 在 0.0.0.0 或 ::
     

    2. 快速网络健康检查清单(一分钟诊断)

    执行以下命令组合,几乎能覆盖 70% 的网络问题:

    1. 接口状态ip -c link show(看是否有 UP 和 carrier)
    2. IP 与路由ip -c addrip -c route
    3. 默认网关连通性ping -c 4 -W 2 $(ip route show default | awk '{print $3}')
    4. 外网连通性ping -c 4 8.8.8.8 或 ping -c 4 1.1.1.1
    5. DNS 解析dig +short google.com 或 nslookup baidu.com 8.8.8.8
    6. 端口监听ss -ltnp | grep :80 或 :443
    7. 当前连接ss -antip | grep ESTAB | wc -l(连接数是否异常高)

    如果以上任意一步失败,从该层开始深入。

    3. 常见故障场景与标准排查路径

    场景 A:服务器完全失联(SSH 连不上)

    1. 物理层:机房/云厂商控制台 → 网卡是否 up?是否有 carrier?
    2. 控制台登录 → ip link set eth0 up
    3. 检查是否有 DHCP client 运行(systemctl status systemd-networkd-dispatcher 或 dhclient)
    4. 手动加 IP(临时):ip addr add 192.168.1.100/24 dev eth0
    5. 加默认路由:ip route add default via 192.168.1.1

    场景 B:能 ping 网关但上不了外网

    1. 确认默认路由:ip route get 8.8.8.8
    2. 检查防火墙:iptables -L -n | grep DROP 或 firewall-cmd --list-all
    3. 检查 NAT/转发(如果做 NAT):sysctl net.ipv4.ip_forward
    4. 检查 MTU 不一致:ping -M do -s 1472 8.8.8.8(若不通逐步减小)

    场景 C:DNS 解析失败或极慢

    1. 查看配置:cat /etc/resolv.conf(注意 systemd-resolved 会覆盖它)
    2. 测试上游:dig @8.8.8.8 google.com
    3. 检查本地缓存:systemd-resolve --statistics 或 resolvectl status
    4. 常见问题:resolv.conf 被 NetworkManager 覆盖、search 域导致解析慢

    场景 D:服务启动了但外部访问不到

    1. 确认监听地址:ss -ltnp | grep :80(必须是 0.0.0.0 或 ::)
    2. 本地 curl 测试:curl -v http://localhost、curl -v http://127.0.0.1
    3. 检查 SELinux/AppArmor:ausearch -m avc -ts recent、aa-status
    4. 检查防火墙:ufw status、firewall-cmd --list-all、iptables -L -n
    5. 检查端口冲突:ss -ltn | grep :80

    场景 E:连接数异常高 / TIME_WAIT 堆积

    1. 查看统计:ss -s
    2. TIME_WAIT 过多:sysctl net.ipv4.tcp_fin_timeout、net.ipv4.tcp_tw_reuse
    3. SYN 队列溢出:netstat -s | grep -i listen 或 ss -ltn state syn-recv
    4. 调优:增大 somaxconn、tcp_max_syn_backlog

    4. 网络抓包与高级诊断工具

    • tcpdump(最通用) 抓取特定端口:tcpdump -i eth0 port 80 -nn 抓取 SYN:tcpdump 'tcp[tcpflags] & tcp-syn != 0'
    • ss(比 netstat 快得多) ss -o state established(显示 timer 信息) ss -K dst 1.2.3.4(杀掉特定连接)
    • mtr(结合 ping + traceroute) 实时路径延迟与丢包:mtr 8.8.8.8
    • nload / iftop / iptraf(流量监控)

    5. 现代 Linux 网络管理工具对比(2026 年现状)

     
     
    管理方式 配置文件位置 重启网络命令 云厂商默认推荐 特点
    NetworkManager /etc/NetworkManager/ nmcli con reload / nmcli con up AWS Lightsail、Azure 图形化友好、动态性强
    systemd-networkd /etc/systemd/network/ networkctl reload / systemctl restart systemd-networkd Ubuntu Server 20.04+、Fedora 轻量、无额外依赖
    ifcfg(传统 RHEL) /etc/sysconfig/network-scripts/ nmcli 或 ifup/ifdown 老 Rocky/Alma 部分镜像 正在逐步被淘汰
    netplan /etc/netplan/ netplan apply Ubuntu Desktop/Server 声明式 YAML 配置
     

    总结:网络故障排查口诀

    “从下往上,一层不通就别往上查”

    1. 链路 up 了吗?(ip link / ethtool)
    2. IP 配置对了?(ip addr / ip route)
    3. 网关 ping 通?(ping 默认网关)
    4. 外网 IP ping 通?(8.8.8.8)
    5. 域名解析正常?(dig)
    6. 服务端口在监听?(ss -ltnp)
    7. 防火墙放行了吗?(iptables/firewalld/ufw)
    8. 有没有抓包确认?(tcpdump)

    建立这个逐层验证的习惯后,90% 的网络问题都能在 10–30 分钟内定位到具体原因,而不是反复重启网络服务或盲目修改配置。

     

    后续可以深入的方向:eBPF 网络观测(bpftrace、cilium)、nftables 取代 iptables、SR-IOV/VFIO 虚拟化网络、QUIC/HTTP3 时代的新特性等。

    联系我们
    返回顶部