
1. 当服务器突然断网基础连通性排查三板斧凌晨三点运维工程师小王的手机突然响起刺耳的警报声——监控系统显示生产环境的Web服务器无法访问外网。这种突发状况就像半夜家里的电路跳闸需要快速定位问题根源。以下是每个Linux运维人员都应该掌握的急救三板斧第一斧用ping验证基础连通性# 先检查本地网卡是否正常相当于检查自家电路总闸 ping 127.0.0.1 -c 3 # 再ping网关地址检查楼道电表 ping 192.168.1.1 -c 3 # 最后测试外网连通性检查小区变电站 ping 8.8.8.8 -c 3如果本地回环测试失败可能是TCP/IP协议栈出了问题网关不通则要检查本地网络配置外网不通但网关通可能是NAT或防火墙问题。我遇到过最诡异的情况是服务器能ping通网关但无法上网最后发现是有人误删了默认路由。第二斧ifconfig/ip addr查看网卡状态ip addr show eth0 # 重点检查三项 # 1. 是否有正确的IP地址好比检查水表是否安装 # 2. 网卡状态是否为UP相当于水阀是否打开 # 3. 是否有异常的错误计数类似水表异常读数某次故障排查时发现RX errors计数不断增长最终确认是机房网线接口氧化导致的物理层故障。ethtool工具可以获取更详细的网卡信息ethtool eth0 | grep -E Speed|Duplex|Link第三斧路由表检查route -n # 或使用现代命令 ip route show曾经有台服务器突然无法访问特定网段就是因为路由表中缺少了关键的路由条目。就像快递员找不到去某小区的路线包裹自然无法送达。2. 网络卡顿元凶追踪路由分析与流量监控当应用响应缓慢时问题可能出在网络链路的任何一个环节。这时候需要像侦探一样层层排查2.1 用traceroute/mtr绘制网络路径图# 基本用法相当于绘制快递运输路线图 traceroute www.baidu.com # 更强大的实时监控工具 mtr --report www.baidu.commtr工具结合了ping和traceroute的功能能直观显示每一跳的丢包率。有次我们发现到某云服务的延迟突然增加用mtr定位到是运营商中间某个节点拥塞及时切换了线路。2.2 用iftop揪出带宽大胃王iftop -nNP -i eth0 # -n 不解析域名显示更快 # -P 显示端口号定位具体应用 # -N 不解析端口服务名这个界面会实时显示网络连接和流量排名就像查看家里每个电器的用电量。曾经用这个工具发现过异常的加密流量最终定位到被入侵的服务器。2.3 高级技巧TCP连接状态分析ss -ntp # 等效于老旧的netstat -ntp # 显示所有TCP连接及关联进程重点关注大量的TIME_WAIT状态可能是连接未正确关闭SYN_SENT堆积目标不可达或防火墙拦截ESTABLISHED连接数异常可能是连接泄漏3. 深度协议分析tcpdump实战技巧当常规手段无法定位问题时就需要祭出抓包神器tcpdump了。这就像给网络流量安装监控摄像头3.1 基础抓包命令tcpdump -i eth0 -w /tmp/dump.pcap # -i 指定网卡 # -w 保存到文件建议always # 按CtrlC停止抓包3.2 智能过滤技巧# 只抓取HTTP流量 tcpdump -i eth0 tcp port 80 # 抓取特定IP的交互 tcpdump -i eth0 host 192.168.1.100 # 组合条件 tcpdump -i eth0 src 192.168.1.100 and dst port 33063.3 经典故障案例分析案例一某次MySQL连接时快时慢通过抓包发现TCP窗口大小频繁调整最终确认是网卡驱动bug。案例二HTTP请求偶尔超时抓包显示服务端没有及时返回SYNACK原来是应用线程池被耗尽。案例三DNS解析随机失败抓包发现UDP响应被中间网络设备丢弃改用TCP协议后解决。4. 端口与服务排查看不见的守门人网络连通但服务不可用可能是端口层面的问题4.1 快速端口检测# telnet基本检测检查门是否开着 telnet 192.168.1.100 80 # 更专业的nc命令 nc -zv 192.168.1.100 1-10244.2 服务监听检查ss -ltnp # 显示所有监听端口及对应进程 # -l 只显示监听状态 # -t TCP协议 # -n 不解析服务名 # -p 显示进程信息曾遇到Nginx无法访问的情况ss命令显示端口确实在监听最后发现是SELinux策略阻止了连接。4.3 防火墙规则检查iptables -L -n -v # 查看所有规则及匹配计数 nft list ruleset # 新式防火墙配置记住防火墙规则是有顺序的就像大楼的多道安检门数据包可能在任意一道门被拦下。5. DNS问题排查网络世界的导航系统域名解析问题往往最隐蔽也最让人头疼5.1 基础诊断工具nslookup www.baidu.com dig www.baidu.com trace # trace显示完整解析过程5.2 常见问题处理解析超时检查DNS服务器配置解析错误检查hosts文件或DNS劫持解析慢更换公共DNS如8.8.8.85.3 高级技巧DNS缓存检查# 查看systemd-resolved缓存 systemd-resolve --statistics # 清空DNS缓存 systemd-resolve --flush-caches6. 性能调优从被动排查到主动预防6.1 网络性能基准测试# 测试带宽 iperf3 -c 192.168.1.100 # 测试延迟 ping -f -c 1000 192.168.1.16.2 内核参数调优# 查看当前配置 sysctl -a | grep net.ipv4 # 临时修改 sysctl -w net.ipv4.tcp_tw_reuse1 # 永久生效写入/etc/sysctl.conf6.3 日常监控建议# 使用sar记录历史数据 sar -n DEV 1 60 /tmp/network.log # 关键指标 # rxpck/s接收包速率 # txpck/s发送包速率 # rxkB/s接收吞吐量 # txkB/s发送吞吐量在实际运维中我养成了保存典型故障案例和对应命令的习惯。当遇到新问题时先回忆是否有类似场景再根据症状选择合适的工具层层深入。网络问题排查就像破案既需要系统的方法论也需要丰富的实战经验。