排查网络问题,本质上是一个由表及里、逐层排除的过程。比较稳妥的思路是:先点到点(ping) -> 再到端口(telnet) -> 再看路径(traceroute)。同时结合 服务端自查(netstat、curl),逐步缩小问题范围。如果问题指向中间网络,再深入到防火墙策略和路由规则。
一、 客户端/终端侧排查
第一步排查始于问题发生点,无论是开发人员的本地环境、用户的PC,还是发起API调用的另一台服务器,都可以视作“客户端”。
1. ping
最基础也最常用的命令,用于检查网络连接的基本可达性。它通过ICMP协议发送回声请求,测试目标主机是否在线以及网络延迟。
ping 114.114.114.114看到类似 time=...ms TTL=... 的返回,说明至少在网络层面上,你的设备和目标服务器之间是连通的。如果超时(Timeout),则说明网络不通,或者对方禁用了ICMP协议(部分服务器会出于安全考虑关闭ping响应)。
2. ipconfig / ifconfig
用于查看本地网络配置。在采取任何行动前,先确认自己的网络配置是否正确。
Windows: ipconfig
Linux/macOS: ifconfig 或 ip addr
主要关注点是本机IP地址、子网掩码和默认网关。有时候问题仅仅是本地IP配置错误或DHCP没有获取到正确地址。
3. traceroute / tracert
如果 ping 不通,或者延迟很高,可以用这个命令来探测数据包从源到目的地所经过的路由路径。
Windows: tracert
Linux: traceroute
tracert www.example.com它会列出数据包经过的每一个路由器(“跳”)。如果在某一跳开始出现 * * * 或高延迟,问题很可能就出在那个节点或其后的链路上。这对于判断问题是出在内部网络、运营商网络还是目标网络非常有帮助。
4. telnet / nc
ping 只能确认网络层(IP层)的可达性,但服务通常运行在传输层(TCP/UDP)的特定端口上。telnet 或 netcat(nc) 可以用来检查某个IP的特定端口是否开放和监听。
# 检查目标服务器的8080端口是否开放
telnet 192.168.1.100 8080如果屏幕变黑或显示连接成功信息,说明端口是开放的,应用正在监听。
如果提示“Connection refused”,说明服务器拒绝了连接,可能是服务未启动或防火墙拦截。
如果长时间无响应,说明请求在中间某个环节被丢弃了,很可能是网络设备(如防火墙)拦截了。
二、 服务端侧排查
如果客户端到服务器的路由是通的,但服务依旧不可用(例如 telnet 端口不通),焦点就要转移到服务器本身。
1. netstat / ss
用于检查服务器自身的网络连接和监听状态。ss 是 netstat 的一个更快、更现代的替代品。
# 查看所有监听的TCP端口
netstat -tulnp
# 或者使用ss,并过滤特定端口(如8080)
ss -tuln | grep 8080这个命令可以快速确认服务是否已成功启动并在预期的端口上进行监听。如果没有找到对应的端口,那问题就是应用本身没有启动成功。
2. curl / wget
在服务器本地测试服务是否正常。这可以排除外部网络因素,验证应用本身的功能。
# 从服务器本地访问自己的web服务
curl http://127.0.0.1:8080/health如果本地访问正常,但远程访问失败,那么问题几乎可以锁定在服务器的防火墙、安全组策略或上游网络设备上。
3. tcpdump
这是一个强大的网络抓包工具,是网络问题排查的“大杀器”。当其他方法都无法定位问题时,可以用它来捕获流经网卡的原始数据包,分析最底层的通信细节。
# 抓取80端口的TCP流量
tcpdump -i eth0 tcp port 80 -nn通过分析抓包结果,可以清晰地看到TCP三次握手是否成功、数据传输是否完整、是否有异常的RST包等。
4. 查看日志
最后但同样重要的一点,检查应用日志、中间件日志(如Nginx、Tomcat)和系统日志(/var/log/messages 或 journalctl)。很多时候,连接问题会在日志中留下明确的错误信息。
三、 网络设备/网关侧
当终端和服务端自查都正常,问题很可能出在中间的链路上,比如公司的防火墙、路由器、交换机,或者云平台的安全组。这个层面通常需要网络管理员或有相应权限的运维人员介入。
1. 访问控制/防火墙规则
检查防火墙(无论是硬件防火墙、iptables,还是云厂商的安全组/NACL)的策略。这是最常见的“中间”问题。
核心检查点: 是否允许来自源IP(或IP段)的流量访问目标IP的特定端口和协议(TCP/UDP)。规则遵循“最小权限”原则,默认拒绝所有未明确允许的流量。
2. 路由规则
在复杂的网络环境中,路由器需要知道如何将数据包转发到正确的目的地。
核心检查点: 检查路由表。确认是否存在到达目标网段的正确路由,是否存在路由黑洞或错误的下一跳。在路由器或交换机上,通常使用 show ip route 或 display ip routing-table 等命令查看。
评论区