内网穿透工具
本文介绍了内网穿透(NAT Traversal)的概念及其在开发中的典型应用场景:跨网演示项目、远程直连内网服务器、微信公众号本地开发调试等。文章汇总了当时常见的内网穿透工具,包括 ngrok 体系(ngrok.io、wendal.cn)、frp、nat123 等,并对各工具的特点和适用场景进行了对比说明。
什么是内网穿透?
内网穿透,也就是通过 NAT 穿透(NAT Traversal: 网络地址转换),在局域网内网与外网之间建立连接通信。
如果你对内网穿透的概念还不是很清楚,不知道它能用来做什么,这里举几个常见的开发场景:
- 跨网演示项目:在公司里项目开发都部署在内网,你想在家或见客户时演示该项目。
- 远程直连公司服务器:在家想直接连接公司的内网数据库或服务器进行调试(还用开两台电脑,用 TeamViewer 远程桌面连接吗?不用!)。
- 微信公众号/小程序本地开发:微信回调地址强制要求配置备案域名,利用内网穿透可以将外网请求直接转发到我们本地电脑的应用接口中,方便断点调试。
只要清楚了它的适用场景,使用起来就会非常有方向感。
内网穿透工具合集
时效性提示 (2017年存档):以下列表摘自我当年学习微信开发时 GitHub 项目 Wechat-Group 提供的推荐工具。随着时间推移,部分站点的链接或收费策略可能已发生改变,请自行甄别。
- ngrok 体系
- http://ngrok.io 或 http://ngrok.com (最经典的开源鼻祖)
- http://wendal.cn (Nutz 社区提供的 ngrok 服务)
- http://www.ngrok.cc
- http://ngrok.2bdata.com
- 国内常用穿透服务
- http://natapp.cn (本文测试使用的工具)
- http://qydev.com
- http://www.nat123.com
- http://www.mofasuidao.cn
- http://hsk.oray.com (花生壳,以前免费,后来收 8 块钱认证费,认证后送两个端口映射)
- http://www.pubyun.com (以前的 3322.org,有免费版和收费版)
- 路由器自带:现在 TP-Link 等部分路由器固件也集成了类似 DDNS 的服务。
实践记录:NATAPP
综合对比后,我选择了 NATAPP 进行测试。 官网地址:https://natapp.cn
原理介绍
NATAPP 实际是把外网域名与客户端地址做了一个桥梁。 当用户访问外网地址时,NATAPP 服务端会通过隧道将请求转发到客户端(也就是我们自己的机器)上,从而实现内网穿透。且传输数据经过加密,安全性有一定的保障。
所以,看出来了吧,我们需要去他们网站上购买隧道和域名!
购买与配置
步骤较为简单:
- 注册账号。
- 购买隧道并设置域名:购买后在控制台复制你的
authtoken。 - 下载客户端:根据你的系统下载对应的可执行文件。
- 配置文件:下载
config.ini文件至客户端同目录下,将里面的authtoken修改为你自己的。 - 启动服务:直接运行 NATAPP 客户端即可。
购买完成后的后台面板如图所示:

避坑提示 1:隧道协议选择 在购买隧道时候,有一个选项是隧道协议,一旦购买,不可更改:
- Web: 普通型 HTTP(S) 隧道穿透,用于搭建网站、微信开发等穿透到本地 Web 服务。
- TCP: 端口转发,应用于 SSH、数据库直连、远程桌面、游戏联机等。
- UDP: 端口转发,应用于特定游戏联机、远程开机(WOL)等。
避坑提示 2:微信开发的域名限制 如果你要做微信相关的开发,虽然在步骤 2 中隧道会送你一个临时三级域名(如
xxx.natapp.cc),但是由于被滥用,这种三级域名通常已被微信官方屏蔽,无法用于微信接口配置。解决办法?说白了,还要花钱。我们还需要再购买一个它的二级域名或绑定自主域名。不过这里的二级域名很便宜而且也是经过备案的。 注:我买了一个月的 VIP 隧道和一年的二级域名,共计才花了 20 元,用来做本地开发调试非常划算。