前言
家里装了个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是一个商业化的内网穿透服务,有免费版可用。
官网:https://ngrok.com
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 简介
国内老牌内网穿透服务,有硬件和软件方案。
官网:https://hsk.oray.com
5.2 使用方法
注册账号
下载客户端
添加映射规则
使用提供的域名访问
5.3 优缺点
优点:
✅ 配置简单,图形界面操作
✅ 国内服务,访问稳定
✅ 有客服支持
缺点:
❌ 免费版限制多(1Mbps带宽)
❌ 付费版也不便宜(6元/月起,带宽还是很低)
❌ 高带宽版本很贵
❌ 需要实名认证
5.4 适用场景
对价格不敏感,图省心的用户
简单的远程访问需求(带宽要求不高)
六、方案4:ZeroTier
6.1 简介
ZeroTier是一个P2P组网工具,可以把分布在各地的设备组成一个虚拟局域网。
官网:https://www.zerotier.com
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
# 查看状态
sudo zerotier-cli status
sudo zerotier-cli listnetworks
6.4 优缺点
优点:
✅ P2P直连,不经过中转,速度快
✅ 免费版支持25个设备
✅ 跨平台支持好
缺点:
❌ 国内使用不稳定(服务器在国外)
❌ 部分网络环境打洞失败
❌ 官网访问需要"特殊方式"
❌ 配置相对复杂
6.5 适用场景
跨国设备互联
对稳定性要求不高的场景
技术人员
七、方案5:Tailscale
7.1 简介
基于WireGuard的组网工具,可以理解为"更易用的ZeroTier"。
官网:https://tailscale.com
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组网工具,针对国内网络环境优化。
官网:https://www.starvpn.cn
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