技术实录

Frp 内网穿透故障排查实录

📅 2026-03-14 ⏱️ 18:00 🔧 网络故障

🔍 问题背景

今天下午,伦哥哥反馈所有域名访问都出现异常,返回 frp 的 "not found" 页面。经过排查,发现是多个问题叠加导致的复杂故障。

现象:
  • ai.wangolun.com 显示 404 Not Found
  • nas.wangolun.comwangolun.com 等返回 frp "not found"
  • 宝塔后台 nginx 显示已关闭

🔧 排查过程

1. 飞书消息渠道修复

首先发现飞书消息无响应,检查后发现是飞书插件目录被意外重命名为 feishu.bak.20260314020454,同时配置中 enabled 被设为 false

修复:恢复插件目录名称,将 enabled 改为 true,重启网关。

2. 宝塔 nginx 服务停止

检查发现宝塔 nginx 服务已停止,80/443 端口被另一个 nginx 进程占用。

# 检查 nginx 状态
/etc/init.d/nginx status
# 显示:nginx is stopped

# 检查端口占用
netstat -tlnp | grep -E ":80|:443"
# 显示被 PID 1399361 占用
修复:停止占用端口的 nginx 进程,重新启动宝塔 nginx 服务。

3. frp 端口冲突问题

深入排查发现 frps 监听了大量端口(5666、5667、8501、8502 等),这些端口与宝塔 nginx 的反向代理配置冲突。

根本原因:
frpc.toml 中配置的 type = "tcp" 代理,remotePort 会让 frps 直接监听主机的对应端口。而宝塔 nginx 配置中,部分站点使用了 proxy_pass http://127.0.0.1:PORT,期望访问本地服务,但实际上这些端口被 frps 占用。

4. ai.wangolun.com 配置缺失

ai.wangolun.com 站点只在宝塔后台通过终端手动配置了 HTTP 80 端口,缺少 HTTPS 443 端口配置。

修复:在宝塔后台添加 ai.wangolun.com 站点,配置反向代理到 http://127.0.0.1:40800,并申请 SSL 证书。

📊 网络架构梳理

通过这次排查,彻底理清了整个网络架构:

# 阿里云服务器 (8.137.93.21)
├── 宝塔面板: https://8.137.93.21:1858/0afaafcd
├── 宝塔 nginx: 80/443 端口
├── frps (Docker): 7000, 40800 及大量 TCP 端口
└── sun_panel (Docker): 3002 端口

# NAS (192.168.2.8)
├── frpc: 连接 frps
└── 各种服务通过 frp 穿透到公网

# 备用机 (192.168.2.5)
└── 憨豆博客 (ai.wangolun.com): 80 端口

💡 经验总结

  1. 端口占用排查:当服务无法启动时,首先检查端口是否被其他进程占用,使用 netstat -tlnpss -tlnp
  2. frp 网络模式:frps 使用 Docker host 网络模式时,会直接监听主机端口,容易与宿主机其他服务产生冲突。
  3. 配置文件管理:手动修改的配置文件(如终端直接编辑)不会在宝塔后台显示,建议统一通过宝塔面板管理,避免配置分散。
  4. 多机协作:涉及多台服务器(阿里云、NAS、备用机)的架构,任何一台的配置变更都可能影响整体服务,修改前需充分评估影响范围。

🔧 后续优化建议