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)→ 防火墙拦了。
🛠️ 扩展:如果未放行,执行以下命令开放端口
| 防火墙工具 | 放行命令(永久生效) |
|---|---|
| firewalld | sudo firewall-cmd --permanent --add-port=80/tcpsudo firewall-cmd --permanent --add-port=443/tcpsudo firewall-cmd --reload |
| iptables | sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT#但iptables规则重启会丢失,需要保存(service iptables save)。 |
| ufw | sudo 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 80或listen 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 |
| 返回 502 | PHP-FPM 挂了 | systemctl restart php-fpm |
| 返回 404 | 网站根目录不对 | 检查root路径是否存在 |
| 浏览器能访问,手机不能 | 云安全组或网络策略 | 检查安全组规则 |
linux查看网络服务核心命令速览(排障常用)
1.查看类命令:
| 操作 | 命令 |
|---|---|
| 查看IP地址 | ip a或ip -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.排障工具选择指南
| 问题现象 | 首选工具 | 备选工具 |
|---|---|---|
| 服务器没IP | ip a | nmcli dev status |
| 外网不通 | ip route+ping | traceroute |
| 端口不通 | ss -tlnp | telnet/nc |
| 服务返回异常 | curl -v | tcpdump |
| 网络延迟高 | ping | mtr |
| 怀疑丢包 | mtr | tcpdump |
| 防火墙拦截 | firewall-cmd --list-all | tcpdump |