Auto-sync: 2026-04-26 20:02

This commit is contained in:
2026-04-26 20:02:45 +08:00
parent d42bc16120
commit b7d9d0f5d1
54 changed files with 3196 additions and 3021 deletions

View File

@@ -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 环境下天然可行
### 典型架构
```
公网用户
公网 VPSfrps / 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