Linux Web服务网络排障基础指南:五层排查法 + 查看网络服务核心命令速查

📅 2026/7/29 3:49:55 👁️ 阅读次数 📝 编程学习
Linux Web服务网络排障基础指南:五层排查法 + 查看网络服务核心命令速查

Linux Web服务网络排障基础指南:五层排查法 + 查看网络服务核心命令速查


网站连不上,是运维最常遇到的问题之一。按“从下往上”的层次来排查,也就是:网络层 → 端口/防火墙 → 服务层 → 应用层 → 客户端/浏览器

假设物理链路没有出问题,以下是一套可以直接照着操作的排障流程。


第1层:网络层(能不能通?)

先确认你的服务器本身能不能被访问到,还是压根就连不上。

本地测试:

# 看 IP 有没有配好ipaddr show# 看网关通不通ping192.168.50.254-c3

外部测试:
在你自己的电脑上(不是服务器上):

ping192.168.50.149

⚠️ 重要:需要确保你的电脑和服务器在同一个局域网/安全组允许 ICMP 协议。

如果 ping 不通:

  • 服务器没开机或 IP 配错了
  • 服务器防火墙(iptables/firewalld)禁了 ICMP(允许的话可以临时关掉试试)
  • 虚拟机网卡模式不对(如 NAT/桥接配置错误)
  • 云服务器安全组没放行 ICMP

如果 ping 通→ 网络层没问题,继续往下看。


第2层:端口/防火墙(端口开放了吗?)

网站能 ping 通,不代表端口通。这一步检查80(HTTP)443(HTTPS)是否开放。

本地检查端口是否在监听:

ss-tulnp|grep-E':80|:443'

如果没有输出 →服务没启动(跳到第3层)。
如果输出显示LISTEN→ 服务启动了,但还要看防火墙。

本地检查防火墙是否放行:

  • firewalld(Rocky/CentOS 默认)

    firewall-cmd --list-all|grep-E'80|443'
  • iptables

    iptables-L-n|grep-E'80|443'
  • ufw(Ubuntu 默认)

    ufw status|grep-E'80|443'

外部测试端口:
在你自己的电脑上:

# 检查 80 端口telnet192.168.50.14980# 或用 ncnc-zv192.168.50.14980

如果连接被拒绝(Connection refused)→ 服务没启动;超时(Timeout)→ 防火墙拦了。

🛠️ 扩展:如果未放行,执行以下命令开放端口
防火墙工具放行命令(永久生效)
firewalldsudo firewall-cmd --permanent --add-port=80/tcpsudo firewall-cmd --permanent --add-port=443/tcpsudo firewall-cmd --reload
iptablessudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT#但iptables规则重启会丢失,需要保存(service iptables save)。
ufwsudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw reload

云服务器特别注意:
除了服务器内部防火墙,云平台的安全组也要检查,比如阿里云/腾讯云/华为云的控制台里,有没有放行 80/443 端口。


第3层:服务层(Web 服务启动了吗?)

检查 Web 服务(Nginx/Apache/Tomcat)是否正常运行。

systemctl status nginx systemctl status httpd systemctl status tomcat

如果服务是inactive (dead)failed,尝试启动并看报错:

sudosystemctl start nginx journalctl-unginx-n20# 看最近20条日志

检查服务配置:

nginx-t# Nginx 检查配置语法apachectl configtest# Apache 检查配置

如果服务运行中但端口不在监听,很可能是配置错误导致启动失败(systemctl status会显示失败),或者绑定到了127.0.0.1而不是0.0.0.0(只允许本机访问)。检查配置文件里的listen 80listen 0.0.0.0:80


第4层:应用层(网站程序正常吗?)

在服务器本地访问网站,绕过外部网络问题。

只显示响应头:这步主要看状态码和响应头,不下载网页内容。curl-Ihttp://localhost:80 或者看完整通信过程(详细排障): 这步能看完整的请求和响应过程,包括 DNS、TCP 连接、发送的请求头等。curl-vhttp://localhostcurl-vhttp://127.0.0.1

如果返回正常 HTML(比如返回200)→ 服务没问题,问题可能在

防火墙/安全组。
如果返回 404→ 网站根目录路径不对或文件不存在。
如果返回 502/504→ 后端(如 PHP-FPM、Tomcat)挂了。
如果连接被拒绝→ 端口没监听(回到第3层)。


第5层:客户端/浏览器(看看具体报错)

浏览器里输入http://你的IP,看返回的错误代码:

状态码含义排查方向
连接超时请求没到达服务器防火墙/安全组/网络问题
连接被拒绝端口没开放或服务没启动检查服务状态和防火墙
404 Not Found路径不存在检查网站根目录和路由配置
403 Forbidden权限不足检查目录权限或 Nginx 配置
502 Bad Gateway后端服务不可用检查 PHP-FPM/Tomcat 是否运行
504 Gateway Timeout后端响应超时后端服务负载高或卡住了
500 Internal Server Error程序代码报错查看应用日志(如 PHP 错误日志)

扩展:不同状态码代表了什么:
状态码含义排障方向(一句话)
连接超时请求没到达服务器查防火墙/安全组/网络
连接被拒绝端口没开放或服务没启动ss -tulnp查端口,systemctl status查服务
403权限不足ls -la查目录权限,检查 Nginx deny 规则,SELinux
404资源不存在检查root/alias路径,文件是否真的存在
405请求方法不允许检查 Nginxlimit_except,后端路由配置
413请求体过大Nginxclient_max_body_size改大
429请求太频繁检查 Nginxlimit_req限流配置
500服务器内部错误查应用日志(PHP 错误、Tomcat catalina.out)
502网关错误(后端挂了)systemctl status php-fpm,后端服务是否运行
503服务不可用服务过载或正在维护,检查连接数
504网关超时(后端太慢)Nginxproxy_read_timeout改大,优化慢查询
304缓存命中✅ 正常,不用管

🛠️ 快速检查清单

用下面一组命令快速确认:

# 1. 本机 IPipaddr show|grepinet# 2. 服务状态systemctl status nginx# 3. 端口监听ss-tulnp|grep':80'# 4. 防火墙firewall-cmd --list-all# 或 iptables -L -n# 5. 本地访问测试curl-Ihttp://localhost# 6. 日志tail-20/var/log/nginx/error.log

📌 常见问题快速定位

现象最可能的原因快速解决
本机curl localhost通,外网不通防火墙/安全组放行 80/443
服务状态failed配置语法错误nginx -t检查配置
端口没监听服务没启动systemctl start nginx
返回 502PHP-FPM 挂了systemctl restart php-fpm
返回 404网站根目录不对检查root路径是否存在
浏览器能访问,手机不能云安全组或网络策略检查安全组规则

linux查看网络服务核心命令速览(排障常用)

1.查看类命令:
操作命令
查看IP地址ip aip -4 -br addr
查看路由表ip route show
查看ARP缓存ip neigh show
查看监听端口ss -tlnp
查看已建立连接ss -tan state established
查看连接统计ss -s
查看防火墙规则firewall-cmd --list-all
2.操作类命令
操作命令
测试连通性ping -c 4 目标IP
追踪路由traceroute -I 目标IP
动态路径分析mtr -r 目标IP
测试HTTP服务curl -I http://localhost
抓包分析tcpdump -i ens160 -nn port 80
3.排障工具选择指南
问题现象首选工具备选工具
服务器没IPip anmcli dev status
外网不通ip route+pingtraceroute
端口不通ss -tlnptelnet/nc
服务返回异常curl -vtcpdump
网络延迟高pingmtr
怀疑丢包mtrtcpdump
防火墙拦截firewall-cmd --list-alltcpdump