内网穿透又叫端口映射,用一句最简单的话来讲就是:将你的计算机所连接的私有网络映射到公网上,别人通过你给的域名或ip即可访问你本地的服务。具体的原理可参照百度百科
这么做可以实现各大厂商的云服务器(阿里云,腾讯云,百度云,华为云等)的效果,通过公网地址访问服务器
这里分享一些提供内网穿透的网站,前几种是我用过的,感觉都还不错(仅供参考):
StarryFrp(星空云):免费版(需要实名认证),带宽:5 Mbps,限流:初始20G,每日通过签到可以随机获得 1 ~ 10 GB 流量,隧道数量:5条(强烈推荐)
SAKURA FRP:免费版(需要支付一元实名认证),带宽:10 Mbps,限速:4 Mbps,限流:5 GiB+限速流量(进入该状态24小时后会进行流量重置并恢复限速至正常限速),隧道数量:2条(隧道数量2022年初更新,速度还行,推荐)
SuiDao:免费版,基于FastTunnel开源,带宽:未测试,限流:未测试,隧道数量:4条
xkfrp:(穿透星空)带宽:3 Mbps,限流:无限制,隧道数量:5条
cpolar:免费版,带宽:不清楚,限流:不清楚,隧道数量:4条(域名,端口随机)
Sunny-Ngrok:免费版,带宽:10 Mbps,限速:128 Kbps,限流:无限,隧道数量:每种协议1条
NATTUNNEL:免费版(隧道每天停止),带宽:1 Mbps,限速:不限,限流:无限,隧道数量:1条
浮居内网穿透:免费版,带宽:5 Mbps,限速:5 Mbps,限流:5GiB,隧道数量:2条
NATAPP:免费版,带宽:1 Mbps,限速:1 Mbps,限流:不限,隧道数量:0条
花生壳:免费版,带宽:1 Mbps,限速:1 Mbps,限流:1GiB,隧道数量:2条
网穿云:免费版,带宽:3 Mbps,限速:3 Mbps,限流:7天不限流量,激活后流量限制每月/1G,隧道数量:1条
路由侠:免费版,带宽:1 Mbps,限速:1 Mbps,限流:1GiB,隧道数量:2条
魔法隧道:积分兑换版,带宽:官网说100M,限速:不清楚,限流:不清楚,隧道数量:不清楚
下面,我就Sunny-Ngrok来分享一下服务器搭建,其实都大同小异,照着官方文档来,慢慢的就会了
这里我简单描述一下内网穿透的两个应用,一是服务器搭建,二是远程桌面的搭建
首先是服务器搭建,在此之前,我们得先开启本地服务器,这里以node为例,环境搭建,静态文件服务,本地文件上线,以及用到的懒加载案例在之前文章有说到,这里直接进入正题
开启本地服务运行懒加载案例,通过127.0.0.1访问网页,我这里是运行在VSCode插件(live server)下,当然也可以参照静态文件服务把项目运行在node服务下,首先保证网页和接口可以在本地运行访问
我的前端部分端口号是5500,后端接口端口号是1024
但是Sunny-Ngrok免费版的对http协议只提供一个端口的隧道,此时我们就要用Nginx进行端口代理了,Nginx配置可以参考Nginx文章,我这里的配置如下
server { listen 10240;#监听端口 server_name localhost; location / { proxy_pass http://127.0.0.1:1024/;#反向代理后端接口 } location /client { proxy_pass http://127.0.0.1:5500/;#反向代理前端页面 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
此时通过输入http://127.0.0.1:10240/client/就会代理到http://127.0.0.1:5500/下,输入http://127.0.0.1:10240/会被代理到http://127.0.0.1:1024/下
下一步,注册Sunny-Ngrok账号,登录并购买免费服务器,配置服务器设置,最后下载穿透软件
下载完成后点击启动工具,在隧道管理中复制刚才新建的隧道id,粘贴到隧道软件中,并回车,进入到连接界面
此时刷新隧道管理界面,点击查看状态,可以看到,当前连接的ip,说明内网穿透成功
下一步,我们在新页面中打开赠送域名加路径,如:http://example.com/client/lazyLoad.html(example.com是赠送域名),打开后会提示输入账号密码。
输入http验证用户名和密码即可
但是此时懒加载请求的接口是本地的127.0.0.1,我们要修改为http://example.com/getList?len=1000,最后打开http://example.com/client/lazyLoad.html,显示以下效果
做到这里,服务器内网穿透的服务器搭建就完成了。
接下来,我们来尝试搭建一下远程桌面
和之前一样,购买新的免费服务器,并且配置tcp协议,这里有两点需要注意:
1.本地映射的ip不能使用127.0.0.1,而是使用局域网内的ip,通过ipconfig查看本机在局域网的ip并复制
2.远程桌面默认端口是3389
下面是我远程桌面的配置
隧道管理
最后和上面一样,运行内网穿透软件即可(可能会一直出现reconnecting提示,原因在官网文档中,我这的解决方法是在隧道管理中踢下线,然后多连几次)
我们可以使用另一台电脑或者手机版的远程桌面连接当前电脑(手机版可以去酷安),下面是用手机连接的效果
总结:内网穿透虽然比服务器要便宜,但是还要考虑自己电脑的电费和损耗,而且做服务器需要一直开着,所以,还是要对比,比较一下,选择适合自己的方案