Files
nexus/wiki/sources/通过vps-内网反向代理实现域名访问内网穿透.md

90 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 流量,不经 CaddyCaddy 只处理 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`