内网穿透方案全解析:6种方案实测对比,告诉你哪个最适合
前言
家里装了个NAS,想在公司也能访问。
公司服务器没公网IP,想在家远程连接。
给朋友演示本地开发的网站,但localhost只有自己能看。
这些场景都需要内网穿透。
市面上方案很多,我花了两周把主流的都试了一遍,这篇文章做个全面对比,帮你选择最适合自己的方案。
一、什么是内网穿透?
简单说:让外网能访问内网的设备。
正常情况下,你家里的电脑只有内网IP(192.168.x.x),外网是访问不到的。
内网穿透的原理,基本就是这几种:
1.1 端口映射(需要公网IP)
外网请求 → 路由器公网IP:端口 → 转发到内网设备
**前提:** 必须有公网IP。
现在大部分家庭宽带都是NAT后的内网IP,这招行不通。
### 1.2 中转服务器
外网请求 → 云服务器(有公网IP) → 转发到内网设备
**原理:** 内网设备主动连接云服务器,建立隧道。外网请求先到云服务器,再通过隧道转发。
**代表:** frp、ngrok、花生壳
### 1.3 P2P直连
设备A ←→ NAT穿透 ←→ 设备B
**原理:** 通过STUN/TURN等协议,让两个内网设备直接建立连接,不经过中转。
**代表:** ZeroTier、Tailscale、星空组网
---
## 二、6种主流方案对比
先给结论,后面详细分析:
| 方案 | 配置难度 | 速度 | 成本 | 适用场景 |
|------|---------|------|------|---------|
| frp | ⭐⭐⭐⭐ | ✅快 | 云服务器费用 | 技术人员、固定场景 |
| ngrok | ⭐⭐ | ⚠️中等 | 免费/付费 | 临时演示、开发调试 |
| 花生壳 | ⭐ | ❌慢 | 付费 | 小白用户 |
| ZeroTier | ⭐⭐⭐ | ✅快 | 免费 | 跨国、技术用户 |
| Tailscale | ⭐⭐ | ✅快 | 免费/付费 | 国外用户 |
| **星空组网** | ⭐ | ✅很快 | 免费/付费 | **国内用户首选** |
---
## 三、方案1:frp(开源自建)
### 3.1 简介
frp是一个开源的内网穿透工具,需要自己有一台有公网IP的服务器。
GitHub:https://github.com/fatedier/frp
### 3.2 架构
┌─────────┐ ┌─────────────┐ ┌─────────┐
│ 内网设备 │ ──隧道─→ │ 云服务器(frps) │ ←─请求── │ 外网用户 │
│ (frpc) │ │ 公网IP │ │ │
└─────────┘ └─────────────┘ └─────────┘
### 3.3 部署步骤
**服务端(云服务器):**
```bash
# 下载
wget https://github.com/fatedier/frp/releases/download/v0.52.0/frp_0.52.0_linux_amd64.tar.gz
tar xzf frp_0.52.0_linux_amd64.tar.gz
cd frp_0.52.0_linux_amd64
# 配置 frps.toml
cat > frps.toml << 'EOF'
bindPort = 7000
auth.token = "your_secret_token"
# Web管理界面
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin123"
EOF
# 启动
./frps -c frps.toml
客户端(内网设备):
# 配置 frpc.toml
cat > frpc.toml << 'EOF'
serverAddr = "云服务器IP"
serverPort = 7000
auth.token = "your_secret_token"
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6022
[[proxies]]
name = "nas-web"
type = "tcp"
localIP = "192.168.1.100"
localPort = 5000
remotePort = 5000
EOF
# 启动
./frpc -c frpc.toml
访问方式:
- SSH:
ssh -p 6022 user@云服务器IP - NAS:
http://云服务器IP:5000
3.4 优缺点
优点:
- ✅ 开源免费
- ✅ 功能强大,支持多种协议
- ✅ 速度取决于云服务器带宽,可以很快
- ✅ 完全可控,不依赖第三方
缺点:
- ❌ 需要云服务器(最低50元/月)
- ❌ 配置复杂,需要一定技术基础
- ❌ 需要自己维护,服务器挂了就断了
- ❌ 带宽受限于云服务器
3.5 适用场景
- 有技术基础的开发者/运维
- 需要固定穿透的场景(NAS、远程桌面)
- 对速度有要求(可以买大带宽服务器)
四、方案2:ngrok
4.1 简介
ngrok是一个商业化的内网穿透服务,有免费版可用。
4.2 使用方法
# 下载并安装
# 去官网下载对应系统版本
# 认证(注册后获取token)
ngrok authtoken your_auth_token
# 暴露本地HTTP服务
ngrok http 3000
# 暴露本地TCP端口
ngrok tcp 22
启动后会得到一个随机域名,比如:
https://abc123.ngrok.io → localhost:3000
4.3 优缺点
优点:
- ✅ 使用简单,一条命令搞定
- ✅ 不需要自己的服务器
- ✅ 支持HTTPS
缺点:
- ❌ 免费版随机域名,每次重启会变
- ❌ 免费版有连接数和带宽限制
- ❌ 服务器在国外,国内访问慢
- ❌ 付费版较贵($8/月起)
4.4 适用场景
- 临时给别人演示本地开发的项目
- 微信开发调试(需要公网回调)
- 临时场景,不需要长期稳定
五、方案3:花生壳
5.1 简介
国内老牌内网穿透服务,有硬件和软件方案。
5.2 使用方法
- 注册账号
- 下载客户端
- 添加映射规则
- 使用提供的域名访问
5.3 优缺点
优点:
- ✅ 配置简单,图形界面操作
- ✅ 国内服务,访问稳定
- ✅ 有客服支持
缺点:
- ❌ 免费版限制多(1Mbps带宽)
- ❌ 付费版也不便宜(6元/月起,带宽还是很低)
- ❌ 高带宽版本很贵
- ❌ 需要实名认证
5.4 适用场景
- 对价格不敏感,图省心的用户
- 简单的远程访问需求(带宽要求不高)
六、方案4:ZeroTier
6.1 简介
ZeroTier是一个P2P组网工具,可以把分布在各地的设备组成一个虚拟局域网。
6.2 原理
设备A (10.147.x.1) ←──P2P直连──→ 设备B (10.147.x.2)
(虚拟局域网)
不是传统的"穿透",而是让设备直接互联。
6.3 使用方法
# 安装
curl -s https://install.zerotier.com | sudo bash
# 加入网络(网络ID在官网创建)
sudo zerotier-cli join <network_id>
# 查看状态
sudo zerotier-cli status
sudo zerotier-cli listnetworks
6.4 优缺点
优点:
- ✅ P2P直连,不经过中转,速度快
- ✅ 免费版支持25个设备
- ✅ 跨平台支持好
缺点:
- ❌ 国内使用不稳定(服务器在国外)
- ❌ 部分网络环境打洞失败
- ❌ 官网访问需要"特殊方式"
- ❌ 配置相对复杂
6.5 适用场景
- 跨国设备互联
- 对稳定性要求不高的场景
- 技术人员
七、方案5:Tailscale
7.1 简介
基于WireGuard的组网工具,可以理解为"更易用的ZeroTier"。
7.2 使用方法
# 安装
curl -fsSL https://tailscale.com/install.sh | sh
# 登录(会打开浏览器)
sudo tailscale up
# 查看设备列表
tailscale status
7.3 优缺点
优点:
- ✅ 配置超级简单,登录即用
- ✅ 基于WireGuard,安全性高
- ✅ 免费版支持100个设备
- ✅ 有iOS/Android客户端
缺点:
- ❌ 服务器在国外,国内连接不稳定
- ❌ 需要Google/Microsoft账号登录
- ❌ 国内部分网络环境无法使用
7.4 适用场景
- 国外用户
- 需要简单配置的场景
- 个人/小团队使用
八、方案6:星空组网
8.1 简介
国内团队开发的P2P组网工具,针对国内网络环境优化。
8.2 原理
和ZeroTier/Tailscale类似,都是P2P组网,但:
- 国内节点多,打洞成功率高
- 打洞失败时有国内中转节点
- 客户端针对国内网络优化
8.3 使用方法
# 1. 下载客户端(官网下载)
# 支持Windows/macOS/Linux/Android/iOS
# 2. 注册账号并登录
# 3. 创建网络或加入网络
# 4. 设备自动获得虚拟IP,互相可以访问
比如:
- 家里NAS:10.26.1.10
- 公司电脑:10.26.1.20
- 在公司直接访问
\\10.26.1.10就能打开家里NAS的共享文件夹
8.4 实测数据
我的环境:
- 家里:联通宽带,没有公网IP
- 公司:电信宽带,NAT后
P2P直连成功时:
- 延迟:25-35ms
- 带宽:80-100Mbps(取决于两边网速)
走中转时(打洞失败):
- 延迟:50-80ms
- 带宽:10-50Mbps
对比QuickConnect(群晖自带):
- 延迟:100-200ms
- 带宽:1-5Mbps
差距明显。
8.5 优缺点
优点:
- ✅ 国内团队,针对国内网络优化
- ✅ 配置简单,5分钟搞定
- ✅ P2P直连,速度快
- ✅ 打洞失败有国内中转兜底
- ✅ 免费版3设备够个人用
- ✅ 多平台支持
缺点:
- ❌ 免费版设备数限制(3台)
- ❌ 高级功能需要付费
- ❌ 相对较新,生态不如ZeroTier
8.6 适用场景
- 国内用户首选
- NAS远程访问
- 远程办公、远程桌面
- 异地游戏联机
九、横向对比测试
我用同样的环境测试了这6种方案:
测试环境:
- 内网设备:家里NAS(联通200M宽带)
- 外网访问:公司电脑(电信100M宽带)
- 测试内容:传输1GB文件
测试结果:
| 方案 | 配置时间 | 传输速度 | 延迟 | 稳定性 |
|---|---|---|---|---|
| frp(2M服务器) | 30分钟 | 2MB/s | 45ms | ⭐⭐⭐⭐ |
| frp(10M服务器) | 30分钟 | 10MB/s | 40ms | ⭐⭐⭐⭐ |
| ngrok | 5分钟 | 1MB/s | 180ms | ⭐⭐ |
| 花生壳免费版 | 10分钟 | 0.1MB/s | 100ms | ⭐⭐⭐ |
| ZeroTier | 15分钟 | 失败 | - | ❌ |
| Tailscale | 10分钟 | 3MB/s | 150ms | ⭐⭐ |
| 星空组网 | 5分钟 | 8MB/s | 30ms | ⭐⭐⭐⭐⭐ |
说明:
- ZeroTier在我的网络环境下一直打洞失败,无法连接
- Tailscale能连但走的是国外中转,速度和延迟都不理想
- frp速度取决于云服务器带宽,带宽够大可以更快
- 星空组网P2P直连成功,速度最快
十、选择建议
10.1 看你的技术水平
| 技术水平 | 推荐方案 |
|---|---|
| 小白 | 星空组网、花生壳 |
| 有一定基础 | Tailscale、ZeroTier |
| 技术人员 | frp自建 |
10.2 看你的使用场景
| 场景 | 推荐方案 |
|---|---|
| NAS远程访问 | 星空组网、frp |
| 临时演示/调试 | ngrok |
| 远程办公 | 星空组网、Tailscale |
| 异地游戏联机 | 星空组网、ZeroTier |
| 跨国设备互联 | ZeroTier、Tailscale |
| 企业级应用 | frp自建、星空组网企业版 |
10.3 看你的预算
| 预算 | 推荐方案 |
|---|---|
| 免费 | 星空组网免费版、ZeroTier |
| 少量预算(<100/年) | 星空组网专业版 |
| 愿意投入(>500/年) | frp+大带宽服务器 |
10.4 我的选择
我最终选择了星空组网作为主力方案:
- 家里NAS远程访问:速度快,比QuickConnect强太多
- 远程控制家里电脑:配合Windows远程桌面,延迟低
- 给父母的设备维护:组在一个网络里,随时可以远程帮他们解决问题
frp作为备用方案,部署在云服务器上,以防星空组网出问题。
十一、总结
| 方案 | 一句话评价 |
|---|---|
| frp | 技术人员的瑞士军刀,灵活但需要自己维护 |
| ngrok | 临时演示神器,长期用不太行 |
| 花生壳 | 老牌服务,但性价比不高 |
| ZeroTier | 国际化好,国内用起来费劲 |
| Tailscale | 最易用的WireGuard,但国内水土不服 |
| 星空组网 | 国内用户的最优解,配置简单速度快 |
没有最好的方案,只有最适合的方案。
根据自己的技术水平、使用场景和预算,选择最适合的就行。
有问题评论区讨论,我尽量回复~
参考链接:
- frp:https://github.com/fatedier/frp
- ngrok:https://ngrok.com
- ZeroTier:https://www.zerotier.com
- Tailscale:https://tailscale.com
- 星空组网:https://www.starvpn.cn

浙公网安备 33010602011771号