网络还能怎么玩(四):内网穿透

网络还能怎么玩(四):内网穿透
吴阴天我们将通过接下来的两个章节实现外网访问我们的内网服务。
内网穿透
一种可以让互联网设备访问到我们局域网设备的方式。
为什么需要内网穿透?
由于我们国内的运营商在为我们安装宽带之后,并没有为我们分配公网ip(指ipv4),因此我们局域网内的设备是无法直接在互联网上被找到的,也就是说我们部署的服务在我们家以外的地方是无法访问的。
当然这不是运营商的问题,ipv4的数量本身就不足以分配给每一个人。虽然现在ipv6在逐渐普及,但ipv4仍然作为主流的网络地址。
VPS与frp
虽然外界找不到我们的局域网设备,但我们的局域网设备是可以主动与有公网ip地址的设备建立连接的。
那么,只要我们把请求发送给有公网ip的设备,让它转发给已经与之相连的局域网设备,我们就可以间接访问到我们的局域网设备。
所以,我们现在还需要两样东西:
- 一台拥有公网ip的主机(VPS)。
- 局域网设备与该主机相连的方式。
VPS
由于我们只要求公网主机进行转发,不需要它做其他事情。因此公网主机不需要具有很强的性能,但需要有足够的带宽。
多少算足够呢?
在Nas服务器的应用场景中,4K视频播放应该是最需要大带宽支持的一个场景。
[!文心一言] 4K视频需要多大的带宽?
如果4K视频没有经过压缩,完全无压缩一秒钟需要3840×2160×10×3×60约为1.74GB的数据,即传输一秒钟无压缩4K视频需要约14Gbps的带宽。但实际上一部电影等视频产生的数据量非常巨大,完全无压缩难以实现。而在线播放4K视频时,其下载速度约为1.5M/s ~ 5M/s,对应的带宽约为12 ~ 40Mbps。这是因为4K内容在传输过程中通常会经过压缩,H.265标准的压缩比为350~1000。
就是说我们至少需要12Mbps的带宽,才能满足我们大部分的服务的外网访问需求。
这里我选用的是阿里云香港服务器,三大运营商均可直连,最低配置2核1G版本即可。
也许不是能找到的最便宜的VPS,但一定是最稳定的(阿里云打钱!)。
选用香港的服务器有几个好处:
- 不用备案。备案过程非常繁琐且用途受限制。
- 香港服务器普遍带宽很大,以我们的用途来说性价比很高。
- 便宜,便宜,还是便宜。
延迟方面,杭州移动直接ping本站平均延迟38ms,在公司用电信ping在28ms左右。
frp
公网主机配置
以linux服务器实例为例:
1 | sudo mkdir app // 创建一个工作区,保证服务器干净 |
文件内容如下:
1 | // 键入i进行编辑 |
接下来运行如下代码就可启动服务端了:
1 | ./frps -c ./frps.toml |
但此时,我们如果关闭终端窗口的话,frp服务也会停止,因此,我们需要做一个服务持久化,让服务器每次开机的时候都自动运行frp服务。
服务持久化
常用的systemctl已经有很多教程了,我当初参考的是这一篇还有另外一篇。
而今天,我要介绍一个更加简单无脑的程序:screen。
首先安装它:
1 | // CentOs |
然后打开一个窗口,运行我们刚才启动frp服务的命令:
1 | screen // 会跳进一个新窗口 |
到这里,公网主机的配置就完成了。
局域网主机配置
与公网主机的流程一样,下载同样的包,解压,只是这次配置和运行的是frpc.toml文件。
但我们并不需要这样的流程,因为我们在上一届已经创建了一个软路由虚拟机,可以很简单的完成局域网配置。
访问我们的软路由后台,直接下载一个frp客户端:
先配置与服务器的连接:
然后配置我们想要访问的内网服务,暂时我们只有Nas面板一个服务,那就来为他配置一个外网访问方式。
比如说,我们Nas面板的内网地址为100.100.1.1:80,那么我们就可以这样配置:
添加后保存并应用,我们就将内网的地址映射到了主机的8080端口,访问 主机ip:8080 就可以见到Nas的面板了。