前言
家里装了个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:NAS:
ssh -p 6022 user@云服务器IP
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 <network_id>
# 查看状态
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在公司直接访问 就能打开家里NAS的共享文件夹
\10.26.1.10
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/frpngrok:https://ngrok.comZeroTier:https://www.zerotier.comTailscale:https://tailscale.com星空组网:https://www.starvpn.cn


