Auto-sync: 2026-04-26 20:02
This commit is contained in:
@@ -1,122 +1,54 @@
|
||||
---
|
||||
title: "内网穿透"
|
||||
type: concept
|
||||
aliases: [NAT穿透, 内网访问, 穿透技术]
|
||||
tags: [network, tunneling, infrastructure]
|
||||
---
|
||||
|
||||
# 内网穿透
|
||||
|
||||
## Definition
|
||||
**内网穿透**(NAT Traversal / Reverse Proxy Tunneling)是一种使位于私有网络(内网)中的设备能够被公网访问的技术。家用网络设备通常位于 NAT(网络地址转换)后面,无法直接接收公网连接,内网穿透通过在公网服务器建立反向隧道来解决这一问题。
|
||||
|
||||
## Core Principle
|
||||
|
||||
传统正向代理:客户端 → 公网代理服务器 → 目标服务器
|
||||
内网穿透(反向隧道):公网服务器 → 反向隧道 → 内网客户端
|
||||
|
||||
```
|
||||
Internet
|
||||
│
|
||||
│ ← 发起连接(公网)
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ VPS (公网) │
|
||||
│ frps/Caddy │
|
||||
└───────┬───────┘
|
||||
│ ← 反向隧道建立
|
||||
▼
|
||||
┌───────────────┐
|
||||
│ 内网机器 (frpc) │
|
||||
│ 192.168.x.x │
|
||||
└───────────────┘
|
||||
```
|
||||
|
||||
## Common Tools
|
||||
|
||||
| 工具 | 协议 | 特点 | 适用场景 |
|
||||
|------|------|------|---------|
|
||||
| **frp** | TCP/UDP/HTTP | 高性能、支持 Dashboard | 多服务穿透 |
|
||||
| **ngrok** | TCP/HTTP | 简单易用、托管服务 | 临时测试 |
|
||||
| **natapp** | TCP/HTTP | 国内服务 | 国内访问 |
|
||||
| **花生壳** | TCP/HTTP | 老牌、商业化 | 企业用户 |
|
||||
| **ZeroTier** | VPN | 虚拟局域网 | 远程办公 |
|
||||
|
||||
## frp 实现方案
|
||||
|
||||
### 架构组件
|
||||
1. **frps (Server)**:部署在公网 VPS,监听端口(默认 7000)
|
||||
2. **frpc (Client)**:部署在内网机器,主动连接 frps
|
||||
|
||||
### 典型配置流程
|
||||
1. VPS 安装 frps,配置 systemd 服务
|
||||
2. 内网机器安装 frpc,配置连接参数
|
||||
3. frpc 配置端口映射(local_port → remote_port)
|
||||
4. Caddy/Nginx 在 VPS 做反向代理
|
||||
|
||||
### 映射示例
|
||||
```ini
|
||||
# frpc.ini
|
||||
[nas]
|
||||
type = tcp
|
||||
local_ip = 127.0.0.1
|
||||
local_port = 5000
|
||||
remote_port = 15000
|
||||
```
|
||||
|
||||
### 完整访问链路
|
||||
```
|
||||
用户浏览器 → https://nas.domain.com
|
||||
↓
|
||||
阿里云 DNS → VPS 公网 IP
|
||||
↓
|
||||
Caddy (443) → reverse_proxy 127.0.0.1:15000
|
||||
↓
|
||||
frps 在 VPS :15000 监听
|
||||
↓
|
||||
frp 隧道
|
||||
↓
|
||||
frpc 在内网 :5000 监听
|
||||
↓
|
||||
NAS Web UI
|
||||
```
|
||||
|
||||
## Security Considerations
|
||||
|
||||
### 认证保护
|
||||
- frps 配置 `token` 与 frpc 匹配
|
||||
- Caddy 可添加 HTTP Basic Auth
|
||||
- 使用非标准端口避免扫描
|
||||
|
||||
### 访问控制
|
||||
```bash
|
||||
# UFW 防火墙限制来源 IP
|
||||
sudo ufw allow from <your_home_ip> to any port 60022 proto tcp
|
||||
```
|
||||
|
||||
### SSH 安全
|
||||
```bash
|
||||
# 使用公钥认证,禁用密码
|
||||
# 编辑 /etc/ssh/sshd_config
|
||||
PasswordAuthentication no
|
||||
PubkeyAuthentication yes
|
||||
```
|
||||
|
||||
## Trade-offs
|
||||
|
||||
| 优势 | 劣势 |
|
||||
|------|------|
|
||||
| 无需公网 IP | 依赖 VPS 稳定性 |
|
||||
| 支持任意 TCP/UDP 服务 | 增加延迟 |
|
||||
| 可绑定独立域名 | 需要维护 frps/frpc |
|
||||
| 成本低(月付几美元 VPS) | 安全配置复杂 |
|
||||
|
||||
## Related Concepts
|
||||
- [[frp]] — 实现内网穿透的工具
|
||||
- [[反向代理]] — 内网穿透的上层组件
|
||||
- [[TCP 隧道]] — 内网穿透的底层机制
|
||||
- [[VPS]] — 内网穿透的公网中转站
|
||||
- [[Let's Encrypt]] — 自动 HTTPS 证书
|
||||
|
||||
## References
|
||||
- frp 官方文档: https://gofrp.org/docs/
|
||||
---
|
||||
title: "内网穿透"
|
||||
type: concept
|
||||
tags: [networking, vpn, tunnel, self-hosted]
|
||||
last_updated: 2026-04-03
|
||||
---
|
||||
|
||||
## Aliases
|
||||
- Intranet Penetration
|
||||
- NAT穿透
|
||||
- 内网穿透
|
||||
- Reverse Tunnel
|
||||
|
||||
## Definition
|
||||
内网穿透(Intranet Penetration)是一种网络技术,通过在公网服务器与内网设备之间建立反向隧道,使处于 NAT 或防火墙后的内网服务可以被公网访问。核心原理:内网设备主动连接公网服务器的指定端口建立持久隧道,公网请求到达服务器后被转发至隧道,从而绕过 NAT/防火墙限制。
|
||||
|
||||
## Key Mechanism
|
||||
|
||||
### 反向隧道 vs 正向隧道
|
||||
- **正向隧道(Forward Tunnel)**:公网 → 内网(需要公网可达内网,NAT 环境下不可行)
|
||||
- **反向隧道(Reverse Tunnel)**:内网 → 公网(内网设备主动连接公网,NAT 环境下天然可行)
|
||||
|
||||
### 典型架构
|
||||
```
|
||||
公网用户
|
||||
↓
|
||||
公网 VPS(frps / ngrok server)
|
||||
↓ 反向隧道
|
||||
内网设备(frpc / ngrok client)
|
||||
↓
|
||||
本地服务(127.0.0.1:xxxx)
|
||||
```
|
||||
|
||||
## Common Tools
|
||||
- **frp**:开源方案,frps(服务端)+ frpc(客户端),支持 TCP/UDP/HTTP/WEBSOCKET 等多种协议
|
||||
- **ngrok**:商业托管方案,开源免费版有端口限制,无需公网服务器
|
||||
- **Cloudflare Tunnel**:Zero Trust 方案,配合 Cloudflare 账号使用
|
||||
- **SSH 反向隧道**:利用 SSH `-R` 参数建立临时反向隧道,适合临时访问
|
||||
|
||||
## frp 方案详解
|
||||
详见 [[frp]]
|
||||
|
||||
## 在本 Wiki 中的应用
|
||||
- [[通过VPS+内网反向代理实现域名访问内网穿透]]:完整实践指南,frps + Caddy + 阿里云 DNS
|
||||
- [[ubuntu-安装-frp-0-65-0-x86-64-操作笔记]]:Ubuntu 客户端安装配置
|
||||
- [[mac-mini-安装-frp-0-65-0-arm64-操作笔记]]:Mac Mini ARM64 安装配置
|
||||
|
||||
## Related Concepts
|
||||
- [[反向代理]]:在内网穿透上层提供 HTTPS 访问(Caddy 反向代理到 frp 映射端口)
|
||||
- [[TCP隧道]]:frp 建立的底层传输通道
|
||||
- [[VPS]]:内网穿透的公网中转站
|
||||
|
||||
## References
|
||||
- frp GitHub: https://github.com/fatedier/frp
|
||||
|
||||
Reference in New Issue
Block a user