背景
同学最近搞了个NAS(Network Attached Storage:网络附属存储),简单地来说就是个小服务器。小白入门NAS—快速搭建私有云教程系列(一) - 知乎
大致组网图如下:
这样地话,我们利用路由器组了个局域网,将家里地终端设备都可以将数据备份到NAS服务器上。
但是如果你在外面,想要获取备份在NAS服务器上地数据怎么办?了解到地解决方案有两种:
1- 购买公有IP,将NAS服务器IP设置为公有IP
2- 进行内网穿透。
1- 什么是内网穿透
我们在家办理了宽带,接上光猫就可以访问到csdn等外网网站,但是这并不等于我们家电脑的IP使用了公网IP,我们只是连接到了运行商公网服务器上,我们自己的电脑IP仍然是小网IP。
当我们要访问CSDN网站,我们将请求发到了运营商的服务器上,它会帮我们把请求发到CSDN公网的服务器上。CSDN响应后,会把获得的数据返回给运行商服务器,服务器然后将结果返回给我们自己的电脑。
我们的电脑始终处在小网内,通过运营商公网服务器将请求转发出去,所以我们可以访问外网。但是由于我们的电脑是小网IP,对除运营商外的公网服务器不可见,所以CSDN公网的服务器无法主动访问到我们的电脑。
那如果我们想要自己的电脑被外网访问怎么办?就得借助于内网穿透,简单的来说就是端口转发。
就是将访问公网的xxx端口内容转发到内网机器上。
具体工作原理:
1- 租赁一个公网服务器。比如腾讯云、阿里云服务器。在上面部署服务端程序并运行。
2- 自己小网电脑里部署客户端程序,并运行。
3- 客户端程序运行后,会给租赁的公网服务器发送报文,尝试和其上运行的服务端程序建立连接。小网电脑和租赁的公网服务器建立socket链接后,租赁的公网服务器就保存了小网电脑的句柄fd。我们接下来就是利用这个fd,将访问租赁的公网服务器指定端口的报文转发给这个fd。
4- 手机端访问租赁服务器的xxx端口。租赁的公网服务器监听到有人访问xxx端口,将对应的报文直接转发给fd句柄所在的机器。经过运营商服务器转发后到达我们的电脑。我们电脑上的客户端程序接收对应的报文结果。
这样就借助租赁的公网服务器,从外网访问到了我们的小网电脑。这就是端口转发。
端口转发的核心是,需要在小网电脑上和租赁的公网服务器上运行对应的服务端、客户端程序,如果没有服务端这个程序就不会进行报文的转发;如果没有客户端程序,我们电脑也不会接收外网的数据。
所以平时上网不要随便下载不明的软件,万一恶意软件中携带了类似的客户端程序,就会窃取我们电脑上的个人数据,造成隐私泄露。
所以在将私有云做内网穿透时候,需要做好端口管理和其他的安全处理,否则很容易把数据泄露出去。。。
2- 具体实现
可以使用开源的解决方案:frp,自行百度如何部署frp
3- 参考文献
FRP搭建内网穿透(亲测有效)_Jane_jian的博客-CSDN博客_frp内网穿透