内网穿透方案全解析: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是一个商业化的内网穿透服务,有免费版可用。

官网: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 使用方法

  1. 注册账号
  2. 下载客户端
  3. 添加映射规则
  4. 使用提供的域名访问

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 我的选择

我最终选择了星空组网作为主力方案:

  1. 家里NAS远程访问:速度快,比QuickConnect强太多
  2. 远程控制家里电脑:配合Windows远程桌面,延迟低
  3. 给父母的设备维护:组在一个网络里,随时可以远程帮他们解决问题

frp作为备用方案,部署在云服务器上,以防星空组网出问题。


十一、总结

方案 一句话评价
frp 技术人员的瑞士军刀,灵活但需要自己维护
ngrok 临时演示神器,长期用不太行
花生壳 老牌服务,但性价比不高
ZeroTier 国际化好,国内用起来费劲
Tailscale 最易用的WireGuard,但国内水土不服
星空组网 国内用户的最优解,配置简单速度快

没有最好的方案,只有最适合的方案。

根据自己的技术水平、使用场景和预算,选择最适合的就行。

有问题评论区讨论,我尽量回复~


参考链接:


posted @ 2025-12-02 15:08  花宝宝  阅读(0)  评论(0)    收藏  举报