内网穿透方案全解析:6种方案实测对比,告诉你哪个最适合

内容分享2天前发布
0 0 0

前言

家里装了个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 <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在公司直接访问
\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/frpngrok:https://ngrok.comZeroTier:https://www.zerotier.comTailscale:https://tailscale.com星空组网:https://www.starvpn.cn



© 版权声明

相关文章

暂无评论

none
暂无评论...