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_WaiT太多、本地端口被占满、或连接数超限。这类问题在高并发服务(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%的网络稳定性问题都能提前识别或快速定位。