NAS的内网穿透--frp
NAS的基本功能目前已经搭建OK:
- Emby Server
- NextCloud
- Samba
- SSH
这些功能有了以后,家庭多媒体以及资料存储的功能就有了;除了在局域网内部访问以外,从外网访问也是NAS的基本需求,目前主要的内网穿透方式有:
- 花生壳(DDNS)
- 花生棒
- ngrok
- frp
DDNS需要家里的宽带分配有公网IP,在目前来看,有公网IP的概率太低,网络上有很多交你如何与运营商客服沟通,分得公网IP的方法,个人还是觉得太麻烦,放弃。
花生棒的话,也是有考虑,不过看到买了硬件,还有流量问题,还是算了。
ngrok和frp基本算是同一类方式,之前看到同事搭建的ngrok不太稳,自己还是动手尝试一下frp好了(公司有在使用的AWS EC2,正好用来搭建frps)。
frp的github地址
frp的使用非常简单,文档也是非常清晰,整个搭建过程比较容易。
为了能够在公司访问家里的NAS,需要借助有公网IP的服务器(我是使用AWS EC2),通过服务器的撮合来连接公司电脑与NAS的连接
下载frp
frp下载地址
目前最新版本是v0.21.0
下载后解压,对应的服务器(frps)和客户端(frpc)程序都在一起。
下面来说明一下每个部分的配置和使用。
服务器端设置
服务器端的配置文件有两个: frps_full.ini, frps.ini
这两个配置文件任选一个就好了(根据名字可以区分出一个包含了完整的配置,一个是基本的配置),为了很简单的搭建起frp环境,我采用了frps.ini
运行服务器的方式为
frps -c frps.ini # 使用-c来指定对应的配置文件
为了让frps作为一个服务在后台运行(且开机自动启动),我会使用supervisor来做对应的管理,对应的使用方法在另外一篇中再说明。
NAS客户端设置
刚开始最基础的部分,我需要让SSH和emby server的默认服务(port 8096)可以在外网可以访问,对应设置frpc.ini
# frpc.ini
[common]
server_addr = x.x.x.x # AWS EC2 Elastic IP
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 9988
[emby]
type = http
local_ip = 127.0.0.1
local_port = 8086
remote_port = 8096
运行frpc
frpc -c frpc.ini
对应也是一样,为了让frpc作为一个服务来运行,使用supervisor来做管理
访问端
当服务器和NAS客户端都设置好以后,就可以远程用公司PC来访问NAS了,对应的SSH和Emby连接方式如下:
1. Emby 访问
使用浏览器访问,地址为
http:// x.x.x.x:8096
x.x.x.x为AWS EC2 Elastic IP, 8096为
frpc.ini中指定的remote_port。
2. SSH连接
使用SSH客户端(推荐XShell)进行连接,与emby一样,对应的地址为服务器地址,port为frpc.ini中指定的remote port( 9988).
总结
到这里,NAS的外网访问就已经OK了,实测emby看《国土安全》还是蛮流畅的,打开耗时稍微长一点,打开以后基本无缓冲。
不过这样流量应该都要走服务器转发,EC2我看说有15G流量限制,这个要小心,我要一直留意EC2账单才行。