一、方案总览
| 类别 | 代表方案 | 核心特点 | 适用场景 |
|---|---|---|---|
| 本地直连 | 虚拟服务器 + DDNS | 直连速度快,需公网IP | 有公网IP的家庭/企业网络 |
| 服务器转发 | Ngrok、localtunnel、FRP | 无需公网IP,经第三方转发 | 无公网IP的临时或长期服务暴露 |
| P2P组网 | 皎月连、Tailscale、ZeroTier | 点对点直连,组建虚拟局域网 | 多设备互联、远程办公、内网资源访问 |
二、三种内网穿透方式概述
① 本地直接内网穿透
- 需要公网IP
- 数据转发在:主机端 ↔ 接收端
- 网速要求主要在主机端
- 连接主机端不需要验证身份
② 服务器转发内网穿透
- 需要主机端安装软件
- 数据转发在:主机端 → 服务器 → 接收端
- 网速要求主要在服务端
- 连接主机端不需要验证身份
③ P2P内网穿透
- 需要主机端和连接端都安装软件
- 数据转发在:主机端 ↔ 接收端(点对点直连)
- 网速要求在两端的网络
- 连接主机端需要验证身份
三、本地直接内网穿透
方式一:虚拟服务器(端口映射)
原理:在路由器上开放端口,将公网请求直接转发至内网主机。
配置步骤:
- 路由器开启虚拟服务器,设置转发端口与内网IP
- 获取公网IP地址
- 启用虚拟服务器,连接端通过
公网IP:端口直接访问主机 - 此时其他设备其他用户就可以通过你的公网IP连接到主机端,并使用主机端开放的端口了
参考文档:
准备工作:一台路由器 + 向运营商申请公网IP
| 优点 | 缺点 |
|---|---|
| ✅ 可自定义开放端口 | ❌ 需固定公网IP地址 |
| ✅ 无使用限制 | ❌ 直接使用公网IP不太安全 |
| ✅ 可暴露多个端口 | ❌ 需向运营商申请公网IP |
方式二:虚拟服务器 + DDNS(动态域名)
原理:在方式一基础上增加DDNS,将动态公网IP绑定到固定域名,即使公网IP变化,域名始终指向当前IP。
配置步骤:
- 路由器开启虚拟服务器,设置端口转发
- 路由器开启DDNS,设置域名并启用
- 获取本地公网IP地址
- 启用虚拟服务器,连接端通过
域名:端口访问主机 - 此时其他设备其他用户就可以通过你创建的域名连接到主机端,并使用主机端开放的端口了
参考文档:
准备工作:一台路由器 + 向运营商申请公网IP
| 优点 | 缺点 |
|---|---|
| ✅ 可自定义开放端口 | ❌ 仍需向运营商申请公网IP |
| ✅ 可使用自定义域名,便于记忆 | |
| ✅ 无使用限制 | |
| ✅ 可暴露多个端口 |
四、服务器转发内网穿透
方式一:Ngrok
简介:老牌内网穿透工具,提供全球公共代理服务。
配置步骤:
- 主机端下载 Ngrok客户端
- 进入官网 → 注册/登录账号 → 创建域名 和 获取Token
- 主机端执行
ngrok config add-authtoken <token>认证账号 - 执行
ngrok http <端口号>启动服务,此时数据会通过Ngrok的公益服务器进行转发 - 此时其他设备其他用户就可以通过你创建的域名连接到主机端,并使用主机端开放的端口了
准备工作:下载Ngrok客户端 + 注册Ngrok账号 + 获取域名和Token
| 优点 | 缺点 |
|---|---|
| ✅ 可自定义开放端口 | ❌ 通过Ngrok服务器转发数据,流量转发一般 |
| ✅ 可自定义域名 | ❌ 免费版有使用限制(连接数/流量) |
| ✅ 可暴露多个端口 |
方式二:localtunnel
简介:轻量级工具,一键生成公网域名,无需注册。
配置步骤:
- 主机端下载安装 Node.js
- 主机端使用npm安装localtunnel:
npm install -g localtunnel - 执行
lt --port <端口号>启动,随机生成一个公共域名(如https://xxx.loca.lt),此时数据会通过lt的公益服务器进行转发 - 此时其他设备其他用户就可以通过这个公共域名连接到主机端,并使用主机端开放的端口了
准备工作:下载Node.js + npm安装localtunnel
| 优点 | 缺点 |
|---|---|
| ✅ 可自定义开放端口 | ❌ 通过localtunnel官方服务器转发数据,流量转发一般 |
| ✅ 可自定义域名 | ❌ 只能暴露单一端口 |
| ✅ 服务器有验证身份功能 | |
| ✅ 免费无使用限制 |
方式三:FRP(Fast Reverse Proxy)
简介:高性能反向代理工具,需自备公网服务器,是目前最灵活的自建方案。
配置步骤:
- 下载 FRP压缩包(GitHub地址)
- 解压下载的FRP压缩包
- 将
frpc复制到内网服务所在的机器上(主机端) - 将
frps复制到拥有公网IP地址的服务器上,并将它们放在任意目录 - 配置服务端(frps.ini)和客户端(frpc.ini),内网机器启动frp,可更改域名映射到公网IP上并开放端口,此时数据会通过自备的服务器进行转发
- 此时其他设备其他用户就可以通过这个公网IP/域名连接到主机端,并使用主机端开放的端口了
准备工作:下载FRP压缩包 + 拥有一台有公网IP的服务器
| 优点 | 缺点 |
|---|---|
| ✅ 可自定义开放端口 | ❌ 需要自己购买公网服务器 |
| ✅ 可自定义域名 | ❌ 服务器只能用作中转数据,无其他作用 |
| ✅ 通过指定服务器转发,流量转发较快 | |
| ✅ 无使用限制 | |
| ✅ 可暴露多个端口 |
五、P2P内网穿透
方式一:皎月连(Natpierce)
简介:国产P2P组网方案,支持电脑和安卓设备,不同账号可通过密钥连接,数据直连不经中转。
配置步骤:
主机端配置:
- 主机端下载皎月连客户端 → 开始配置 → 登陆账号
- 打开组网模式 → 设置连接密码 → 设置页面访问密码
- 记住识别码和局域网IP → 开启服务
手机端/其他设备配置: 4. 手机端下载皎月连APP,打开APP 5. 手机端配置 → 登录账号 → 选择在线主机 → 刷新主机信息 → 点击连接 6. 此时其他设备其他用户就可以像手机一样配置,使用他们自己的账号和识别码加连接密码连接到这个主机端了 7. 使用局域网IP访问主机端的所有端口(可以自定义开放端口)
准备工作:主机端下载皎月连客户端 + 手机端下载皎月连APP + 注册皎月连账号
| 优点 | 缺点 |
|---|---|
| ✅ 不同账号可通过密钥来连接 | ❌ 只能国内通信 |
| ✅ 连接设备没有上限 | |
| ✅ 可自定义设置多少台设备连接到同一个网络 | |
| ✅ 可自定义开放端口 | |
| ✅ 可不同设备间通信 | |
| ✅ 数据传输在主机端和连接端(P2P直连) | |
| ✅ 可暴露多个端口 |
方式二:Tailscale
简介:基于WireGuard的P2P组网方案,配置极简,全球可用,支持100台设备同时连接同一个网络。
配置步骤:
主机端配置:
- 主机端下载 Tailscale客户端(双击安装,注意电脑端安装不能自定义路径)
- 双击托盘图标 → 进入到网站 → 登录账号 → 点击Connect
- 右键托盘图标查看局域网IP
手机端/其他设备配置: 4. 手机端下载Tailscale APP,打开APP 5. 手机端配置 → 登录账号 → 点击Connect 6. 此时其他设备其他用户可以像手机一样配置,但只能使用你的账号登录来连接到这个主机 7. 使用局域网IP访问主机端的所有端口
准备工作:主机端下载Tailscale客户端 + 手机端下载Tailscale APP + 注册Tailscale账号
| 优点 | 缺点 |
|---|---|
| ✅ 支持100台设备同时连接同一个网络 | ❌ 只能个人使用,其他人需使用你的账号 |
| ✅ 全球可通信 | ❌ 只能开放全部端口,无法精细控制 |
| ✅ 可不同设备间通信 | ❌ 电脑端安装不能自定义路径 |
方式三:ZeroTier
简介:强大的虚拟局域网工具,支持不同账号通过密钥加入同一网络,全球可用。
配置步骤:
管理后台配置:
- 进入官网 → 登录账号 → Create A Network → 点击进入 → 勾选Private(私有网络)
主机端配置: 2. 主机端下载 ZeroTier客户端 3. 右键托盘图标 → Join New Network → 输入虚拟局域网ID(Network ID) 4. 查看主机端被分配的虚拟局域网IP
手机端/其他设备配置: 5. 手机端下载ZeroTier APP,打开APP 6. 手机端配置 → 点击Add Network → 输入虚拟局域网ID → 打开右侧开关 7. 此时其他设备其他用户就可以像手机一样配置,使用他们自己的账号和局域网ID连接到这个主机端了 8. 使用局域网IP访问主机端的所有端口
准备工作:主机端下载ZeroTier客户端 + 手机端下载ZeroTier APP + 注册ZeroTier账号
| 优点 | 缺点 |
|---|---|
| ✅ 不同账号可通过密钥(Network ID)来连接 | ❌ 免费版只能25台设备同时连接同一个网络 |
| ✅ 全球可通信 | ❌ 只能开放全部端口,无法精细控制 |
| ✅ 可不同设备间通信 |
