2515 字
13 分钟
内网穿透相关内容

一、方案总览#

类别代表方案核心特点适用场景
本地直连虚拟服务器 + DDNS直连速度快,需公网IP有公网IP的家庭/企业网络
服务器转发Ngrok、localtunnel、FRP无需公网IP,经第三方转发无公网IP的临时或长期服务暴露
P2P组网皎月连、Tailscale、ZeroTier点对点直连,组建虚拟局域网多设备互联、远程办公、内网资源访问

二、三种内网穿透方式概述#

① 本地直接内网穿透#

  • 需要公网IP
  • 数据转发在:主机端 ↔ 接收端
  • 网速要求主要在主机端
  • 连接主机端不需要验证身份

② 服务器转发内网穿透#

  • 需要主机端安装软件
  • 数据转发在:主机端 → 服务器 → 接收端
  • 网速要求主要在服务端
  • 连接主机端不需要验证身份

③ P2P内网穿透#

  • 需要主机端和连接端都安装软件
  • 数据转发在:主机端 ↔ 接收端(点对点直连)
  • 网速要求在两端的网络
  • 连接主机端需要验证身份

三、本地直接内网穿透#

方式一:虚拟服务器(端口映射)#

原理:在路由器上开放端口,将公网请求直接转发至内网主机。

配置步骤

  1. 路由器开启虚拟服务器,设置转发端口与内网IP
  2. 获取公网IP地址
  3. 启用虚拟服务器,连接端通过 公网IP:端口 直接访问主机
  4. 此时其他设备其他用户就可以通过你的公网IP连接到主机端,并使用主机端开放的端口了

参考文档

准备工作:一台路由器 + 向运营商申请公网IP

优点缺点
✅ 可自定义开放端口❌ 需固定公网IP地址
✅ 无使用限制❌ 直接使用公网IP不太安全
✅ 可暴露多个端口❌ 需向运营商申请公网IP

方式二:虚拟服务器 + DDNS(动态域名)#

原理:在方式一基础上增加DDNS,将动态公网IP绑定到固定域名,即使公网IP变化,域名始终指向当前IP。

配置步骤

  1. 路由器开启虚拟服务器,设置端口转发
  2. 路由器开启DDNS,设置域名并启用
  3. 获取本地公网IP地址
  4. 启用虚拟服务器,连接端通过 域名:端口 访问主机
  5. 此时其他设备其他用户就可以通过你创建的域名连接到主机端,并使用主机端开放的端口了

参考文档

准备工作:一台路由器 + 向运营商申请公网IP

优点缺点
✅ 可自定义开放端口❌ 仍需向运营商申请公网IP
✅ 可使用自定义域名,便于记忆
✅ 无使用限制
✅ 可暴露多个端口

四、服务器转发内网穿透#

方式一:Ngrok#

官网
GitHub

简介:老牌内网穿透工具,提供全球公共代理服务。

配置步骤

  1. 主机端下载 Ngrok客户端
  2. 进入官网 → 注册/登录账号 → 创建域名 和 获取Token
  3. 主机端执行 ngrok config add-authtoken <token> 认证账号
  4. 执行 ngrok http <端口号> 启动服务,此时数据会通过Ngrok的公益服务器进行转发
  5. 此时其他设备其他用户就可以通过你创建的域名连接到主机端,并使用主机端开放的端口了

准备工作:下载Ngrok客户端 + 注册Ngrok账号 + 获取域名和Token

优点缺点
✅ 可自定义开放端口❌ 通过Ngrok服务器转发数据,流量转发一般
✅ 可自定义域名❌ 免费版有使用限制(连接数/流量)
✅ 可暴露多个端口

方式二:localtunnel#

官网
GitHub

简介:轻量级工具,一键生成公网域名,无需注册。

配置步骤

  1. 主机端下载安装 Node.js
  2. 主机端使用npm安装localtunnel:npm install -g localtunnel
  3. 执行 lt --port <端口号> 启动,随机生成一个公共域名(如 https://xxx.loca.lt),此时数据会通过lt的公益服务器进行转发
  4. 此时其他设备其他用户就可以通过这个公共域名连接到主机端,并使用主机端开放的端口了

准备工作:下载Node.js + npm安装localtunnel

优点缺点
✅ 可自定义开放端口❌ 通过localtunnel官方服务器转发数据,流量转发一般
✅ 可自定义域名❌ 只能暴露单一端口
✅ 服务器有验证身份功能
✅ 免费无使用限制

方式三:FRP(Fast Reverse Proxy)#

官网
GitHub

简介:高性能反向代理工具,需自备公网服务器,是目前最灵活的自建方案。

配置步骤

  1. 下载 FRP压缩包GitHub地址
  2. 解压下载的FRP压缩包
  3. frpc 复制到内网服务所在的机器上(主机端)
  4. frps 复制到拥有公网IP地址的服务器上,并将它们放在任意目录
  5. 配置服务端(frps.ini)和客户端(frpc.ini),内网机器启动frp,可更改域名映射到公网IP上并开放端口,此时数据会通过自备的服务器进行转发
  6. 此时其他设备其他用户就可以通过这个公网IP/域名连接到主机端,并使用主机端开放的端口了

准备工作:下载FRP压缩包 + 拥有一台有公网IP的服务器

优点缺点
✅ 可自定义开放端口❌ 需要自己购买公网服务器
✅ 可自定义域名❌ 服务器只能用作中转数据,无其他作用
✅ 通过指定服务器转发,流量转发较快
✅ 无使用限制
✅ 可暴露多个端口

五、P2P内网穿透#

方式一:皎月连(Natpierce)#

官网

简介:国产P2P组网方案,支持电脑和安卓设备,不同账号可通过密钥连接,数据直连不经中转。

配置步骤

主机端配置

  1. 主机端下载皎月连客户端 → 开始配置 → 登陆账号
  2. 打开组网模式 → 设置连接密码 → 设置页面访问密码
  3. 记住识别码和局域网IP → 开启服务

手机端/其他设备配置: 4. 手机端下载皎月连APP,打开APP 5. 手机端配置 → 登录账号 → 选择在线主机 → 刷新主机信息 → 点击连接 6. 此时其他设备其他用户就可以像手机一样配置,使用他们自己的账号和识别码加连接密码连接到这个主机端了 7. 使用局域网IP访问主机端的所有端口(可以自定义开放端口)

准备工作:主机端下载皎月连客户端 + 手机端下载皎月连APP + 注册皎月连账号

优点缺点
✅ 不同账号可通过密钥来连接❌ 只能国内通信
✅ 连接设备没有上限
✅ 可自定义设置多少台设备连接到同一个网络
✅ 可自定义开放端口
✅ 可不同设备间通信
✅ 数据传输在主机端和连接端(P2P直连)
✅ 可暴露多个端口

方式二:Tailscale#

官网
下载地址

简介:基于WireGuard的P2P组网方案,配置极简,全球可用,支持100台设备同时连接同一个网络。

配置步骤

主机端配置

  1. 主机端下载 Tailscale客户端(双击安装,注意电脑端安装不能自定义路径)
  2. 双击托盘图标 → 进入到网站 → 登录账号 → 点击Connect
  3. 右键托盘图标查看局域网IP

手机端/其他设备配置: 4. 手机端下载Tailscale APP,打开APP 5. 手机端配置 → 登录账号 → 点击Connect 6. 此时其他设备其他用户可以像手机一样配置,但只能使用你的账号登录来连接到这个主机 7. 使用局域网IP访问主机端的所有端口

准备工作:主机端下载Tailscale客户端 + 手机端下载Tailscale APP + 注册Tailscale账号

优点缺点
✅ 支持100台设备同时连接同一个网络❌ 只能个人使用,其他人需使用你的账号
✅ 全球可通信❌ 只能开放全部端口,无法精细控制
✅ 可不同设备间通信❌ 电脑端安装不能自定义路径

方式三:ZeroTier#

官网
下载地址

简介:强大的虚拟局域网工具,支持不同账号通过密钥加入同一网络,全球可用。

配置步骤

管理后台配置

  1. 进入官网 → 登录账号 → 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台设备同时连接同一个网络
✅ 全球可通信❌ 只能开放全部端口,无法精细控制
✅ 可不同设备间通信
内网穿透相关内容
https://fuwari.vercel.app/posts/杂项/aboutintranetpenetration/内网穿透相关内容/
作者
Ctory-Nily
发布于
2024-08-10
许可协议
CC BY-NC-SA 4.0