linux网络稳定性需分层检测:物理层(ip link、ethtool)、协议层(ip route)、连接状态(ss -s)、路由dns(traceroute、dig)、内核统计(/proc/net/dev/snmp),配合长期监控可提前识别 90% 问题。

Linux 网络状态检测不是只靠 ping 或ifconfig看看就行,真正影响系统稳定性的往往是连接 堆积、端口 耗尽、路由 异常、DNS 卡顿这些“静默故障”。下面从排查逻辑、关键命令、典型场景三方面讲清楚怎么系统性地检测和加固。
看网络 接口 是否真实在线
很多问题表面是“连不上”,其实是网卡没启、IP 没配、链路中断。不能只信 ip a 显示 UP,得验证物理层和协议层都通。
-
ip link show eth0看 state 是否为UP,同时关注red”>NO-CARRIER(说明网线没插或交换机断连) -
ethtool eth0查看 Link detected: yes/no、Speed、Duplex,确认物理协商正常 -
ip route get 1.1.1.1检查默认路由是否能解析出出口设备和网关,避免“有 IP 但无路由”
查连接状态与资源瓶颈
服务突然拒绝新连接?可能是 TIME_Wai T 太多、本地 端口 被占满、或连接数超限。这类问题在高 并发 服务(nginx/mysql/redis)中极易引发雪崩。
-
ss -s快速统计:total established、TIME-WAIT 数量、内存中 socket 占用(注意 mem: 行) -
ss -tuln | wc -l查看监听端口总数,配合netstat -ant | grep :80 | wc -l看 ESTABLISHED 连接数 -
cat /proc/sys/net/ipv4/ip_local_port_range确认可用临时端口范围(默认 32768–65535,仅约 3.2 万),高并发需调大 -
cat /proc/sys/net/ipv4/tcp_tw_reuse应设为 1(允许 TIME_WAIT socket 重用),配合tcp_fin_timeout调小(如 30 秒)
跟踪数据包路径与延迟异常
DNS 解析慢、跨网段丢包、中间 防火墙 拦截——单靠 ping 发现不了。得用分层追踪定位卡点。
-
ping -c4 www.baidu.com看基础连通性与平均延迟;若通但应用慢,继续往下查 -
traceroute -n www.baidu.com或更稳定的mtr -rwc 10 www.baidu.com,识别哪一跳开始延迟飙升或丢包(常见于运营商出口或云厂商安全组) -
dig +short google.com @114.114.114.114测试 DNS 解析速度与结果一致性;对比systemd-resolve --status看当前 DNS 配置是否合理 -
tcpdump -i eth0 port 53 -c 10抓 DNS 包,确认是否有超时重传或响应异常
监控长期趋势防突发崩溃
单次检查只能抓瞬态问题。稳定性靠的是持续观测 + 阈值告警,比如连接数突增、RX/TX 错误持续上升、ARP 缓存溢出等。
- 用
/proc/net/dev解析网卡收发包统计:重点关注 rx_errors、tx_dropped 是否非零且增长 - 用
/proc/net/snmp查看 TCP 指标:TcpExt: TCPAbortOnMemory表示因内存不足强制断连,是严重信号 - 简单脚本每分钟记录
ss -s | grep "TCP:"和awk '{print $2}' /proc/net/dev,生成趋势日志便于回溯 - 推荐轻量 工具 :
iftop -P tcp看实时流量分布,netstat -s | grep -i "retransmit|drop"查协议 栈异常
基本上就这些。检测本身不复杂,但容易忽略分层验证和长期指标。把接口、连接、路由、DNS、内核统计这五层串起来看,90% 的网络稳定性问题都能提前识别或快速定位。