--- title: "通过VPS+内网反向代理实现域名访问内网穿透" type: source tags: [vps, caddy, frp, reverse-proxy, troubleshooting, cloudflare, 内网穿透] date: 2026-04-14 --- ## Source File - [[raw/Home Office/通过VPS+内网反向代理实现域名访问内网穿透.md]] ## Summary (用中文描述) - 核心主题:通过 VPS + frp + Caddy 实现内网服务的公网域名访问(内网穿透) - 问题域:家庭网络内网服务(NAS、Ubuntu 服务器)无法直接被公网访问的问题 - 方法/机制:frp 反向隧道(frps 服务端 + frpc 客户端)+ Caddy 反向代理 + Let's Encrypt 自动 HTTPS - 结论/价值:建立完整的内网服务公网访问架构,支持 NAS n8n Grafana 等多服务通过独立子域名访问 ## Key Claims (用中文描述) - frp 专为内网穿透设计,支持 NAT 穿透、自动重连、Web 管理面板(可选) - VPS 上的 Caddy 反向代理到 frps 映射端口(127.0.0.1:xxxxx),提供 HTTPS 访问 - SSH 穿透与 HTTP 不同,SSH 是纯 TCP 流量不经过 Caddy,只用 frps + frpc 配置即可 - frps 监听 7000 端口,dashboard 可选监听 7500 端口 ## Key Quotes > "frp 优点:专为内网穿透设计,支持 NAT、自动重连、Web 管理面板(可选)。推荐当你有多台设备和多端口时使用。" — frp 核心优势说明 > "SSH 穿透与 HTTP 不同,它是纯 TCP 流量,不经 Caddy(Caddy 只处理 HTTP/HTTPS),所以:Caddy 不参与 SSH 的代理,只用 frps + frpc 配置即可完成。" — SSH 与 HTTP 穿透的关键区别 ## Key Concepts - [[内网穿透]]:通过公网 VPS 建立反向隧道,使内网服务可被公网访问的技术 - [[反向代理]]:VPS 上的 Caddy 将公网请求代理到 frp 映射的本地端口 - [[TCP 隧道]]:frp 建立的 TCP 端口映射隧道,连接内网服务与公网 VPS - [[Let's Encrypt]]:Caddy 自动申请的免费 SSL 证书提供商 ## Key Entities - [[frp]]:内网穿透工具,包含 frps(服务端)和 frpc(客户端)两个组件 - [[Caddy]]:Go 语言编写的自动 HTTPS 反向代理服务器 - [[阿里云 DNS]]:域名 ishenwei.online 的 DNS 解析服务提供商 - [[VPS]]:公网服务器(192.227.222.142),运行 frps 和 Caddy 作为反向代理中转站 ## Connections - [[内网穿透]] ← uses ← [[frp]] - [[反向代理]] ← uses ← [[Caddy]] - [[反向代理]] ← depends_on ← [[TCP 隧道]] - [[VPS]] ← hosts ← [[frp]] - [[VPS]] ← hosts ← [[Caddy]] - [[群晖 NAS]] ← accessed_via ← [[内网穿透]] ## Domain Mapping (本方案配置) | 域名 | 内网服务 | 映射端口 | |------|---------|---------| | nas.ishenwei.online | NAS Web UI | 192.168.3.17:5000 → VPS:15000 | | n8n.ishenwei.online | Ubuntu n8n | 192.168.3.47:5678 → VPS:15678 | | transmission.ishenwei.online | Ubuntu Transmission | 192.168.3.47:9091 → VPS:19091 | | grafana.ishenwei.online | Ubuntu Grafana | 192.168.3.47:3000 → VPS:13000 | | ubuntu1.ishenwei.online:60022 | Ubuntu SSH | 192.168.3.47:22 → VPS:60022 | ## Architecture Diagram ``` Internet │ ▼ ┌─────────────────────────────────────┐ │ VPS (192.227.222.142) │ │ - frps (监听 7000) │ │ - Caddy (80/443 TLS) │ │ ├─ nas.ishenwei.online → 127.0.0.1:15000 │ ├─ n8n.ishenwei.online → 127.0.0.1:15678 │ └─ transmission.ishenwei.online → 127.0.0.1:19091 └─────────────────────────────────────┘ ▲ ▲ │ frp tunnel │ frp tunnel ┌────────────┐ ┌────────────┐ │ NAS (192.168.3.17) │ │ Ubuntu (192.168.3.47) │ │ frpc.ini │ │ frpc.ini │ │ 映射5000→15000 │ │ 映射5678→15678 │ └────────────┘ └────────────┘ ``` ## Contradictions - 无 ## Troubleshooting Summary 1. 确认 frps 是否监听端口:`ss -lntup | grep 7000` 2. 确认进程读取的配置:`ps -ef | grep frps` 3. 确认防火墙放行:`sudo ufw status` 4. 确认没有 Caddy/Nginx 占用端口 5. 确认 token 一致性:`journalctl -u frps -n 100` 6. telnet 诊断:`telnet 192.227.222.142 7000` 7. 重启服务:`systemctl restart frps && systemctl restart frpc`