一、为什么会有内网穿透?
在我们的日常开发与部署场景中,经常会遇到这样的情况:
我们的电脑(或服务器)在局域网中,使用的 IP 地址通常是 192.168.x.x、10.x.x.x、172.16.x.x 等内网地址。公网(如阿里云、腾讯云等云服务器)使用的是可被全世界访问的公网 IP。
当我们希望让互联网上的用户访问到我们在本地(内网)搭建的服务(例如网站web、数据库mysql、TCP接口程序、公司ERP系统、打印机等),如果没有公网 IP,直接使用 192.168.x.x 这类内网地址是无法在外网访问到的。其根本原因在于:私有地址(内网 IP)不会在公网的路由中进行传播。路由器(或运营商)通常会做 NAT(网络地址转换),把本地多台设备的内网 IP 映射到路由器的一个或几个公网 IP 上,外部无法直接“反向”找到你局域网里的那台设备。
为了解决这一问题,常见的做法有两种:
1. 部署到云服务器上
最直接的方式是将服务部署到云服务器上(如阿里云、华为云、腾讯云等),因为云服务器拥有公网 IP,这样外网就可以直接通过公网 IP 访问到你的服务了。
优点:访问速度通常更稳定,适合生产环境;公网带宽由云服务商提供;部署方式相对可控。
缺点:需要租用云服务器,产生一定的费用;需要进行额外的运维部署工作,需要相应的云服务器管理技术人员。
2. 使用内网穿透技术
如果我们希望本地电脑仍然是开发、运行服务的主力机器,又或者是本地保留数据且需要让他人访问本地服务(例如展示 Demo网站、共享FTP文件、SVN等),而又不想或无法购买云服务器时,就可以借助“内网穿透”技术来解决。
通过内网穿透服务提供的客户端与服务器端,可以将内网地址映射到一个公网可访问的域名或地址上,从而实现对内网服务的外网访问。
常见的内网穿透工具包括:Ngrok、FRP、NAT123等。
二、两种常见的访问方式
1. 部署到云服务器上
如果我们需要长期、稳定地在互联网上提供服务,最简单的方式就是购买云服务器(如华为云 ECS),并在上面部署我们的项目。部署步骤通常包括:
在云服务器上安装运行环境(Python、php、Nginx、MySQL 等)。
将本地开发完成的项目上传到云服务器。
在云服务器上启动服务,并确保安全组和防火墙已开放对应的端口(如 80、443、8000 等)。
通过云服务器的公网 IP 或域名进行访问。
这种方式能很好地解决外网访问的问题,但缺点是需要一定的服务器费用,同时也需要维护云端环境。
2. 内网穿透
内网穿透的核心思路是:
借助第三方拥有公网 IP 的服务器,来中转外网请求与本地服务之间的通信。
当你在本地运行穿透客户端后,本地客户端会主动与第三方服务器建立连接,外网请求再通过第三方服务器转发到你的本地服务。
3. 常用的内网穿透工具
Ngrok
早期比较流行的内网穿透工具,提供免费和付费版本。
配置相对简单,但官方服务器在国外,速度可能不够理想。
FRP
开源、免费,配置灵活,可自建服务端,常用于团队或企业内部穿透。
配置稍微复杂,但在国内社区中比较活跃,有很多教程可供参考。
NAT123
国内的一家较老牌服务商,提供内网穿透服务,有免费和付费隧道。
操作简单,国内速度较快,但免费隧道有一定限制。
三、内网穿透FRP使用示例
- 在公网服务器上部署 FRP 服务端
准备一台云服务器(拥有公网 IP)。下载并配置 FRP 服务端(frps),在 frps.ini 中设置监听端口等参数。
启动 FRP 服务端。
2. 在本地部署 FRP 客户端
下载并配置 FRP 客户端(frpc),在 frpc.ini 中配置好:公网服务器 IP(你的云服务器 IP)。需要穿透的本地服务端口(例如 8000 端口)。分配的域名或自定义域名。启动 FRP 客户端。本地客户端与远程服务器建立连接。
3. 访问验证
当外网用户通过域名或公网服务器的端口访问时,就会被转发到你的本地服务上。这样,就无需将你的项目直接部署到云服务器上,而是通过内网穿透,让别人也能访问到你本地运行的项目。
四、内网穿透nat123使用示例
- 下载安装
在目标内网本地计算机下载安装nat123客户端。不同系统平台对应使用不同版本的,包括windows、Linux、android等。 - 注册帐号登录
如无帐号的则需要先注册一个nat123帐号,然后登录客户端。注意不同网络环境使用时,需要分别注册登录不同帐号区分。 - 设置内网公网
登录客户端后,win界面“添加映射”或对应官网管理后台页面添加端口映射设置。选择合适的映射类型(如80http、443https、非80、同端口直连等),自定义对应内网和公网地址(自动生成的二级域名或自己注册的域名)。
添加设置好后保存,生成一个带有内网公网地址记录。如绑定用自己域名的需要注意,同时需要在自己注册域名解析管理网站添加对应的cname指向让自己域名生效,不然鼠标停留可见一直提示域名指向不对。 - 访问测试
在任意上网点,通过对应设置好生效的域名地址进行连接访问。如直接将自己电脑IIS提供他人访问。
五、总结
内网穿透解决了内网环境下无法直接暴露给外网访问的问题,为开发测试、临时共享等场景带来了极大的方便,适合数据本地运行网络场景。如数据不在本地保留的,可以直接在云服务器上部署服务也是一个可行的选择。
可以看出无论是部署到云服务器上,还是使用内网穿透,核心都是让外部访问能够绕过内网地址的限制,直接访问到本地服务或部署在公网服务器上的服务。
暂无评论内容