阿里云ECS搭建frp服务器实现黑群晖 Nas 内网穿透

1.前言

实现内网穿透的过程是折腾NAS中最麻烦的一部分,这里单独拿出来作为一个记录。

首先,讲一下我的配置,猫盘刷黑群晖DS119j系统,由于猫盘是arm架构,所以无法使用docker,只能实现一些基础功能。

其次,想可以在外地也访问家中的猫盘黑群晖系统,有两种方案:

1.从运营商申请固定IP,直接与NAS映射。

2.购买云服务器,赠送公网IP,通过frp实现内网穿透。

方案1最为简单,但是运营商说由于转为公网IP,电信公司会监控家中网络,我听着有些犹豫,所以就放弃了。
方案2比较折腾,但我恰好有一个阿里云服务器,所以就来折腾这个。

2.具体实施

内网穿透有很多种方案,我这里使用的是常见的frp方案。我们首先大致了解一下他的原理:

frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。 内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。 用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。 

首先,下载frp的文件https://github.com/fatedier/frp/releases,现在最新的是0.35.1版本。这里一定要注意,由于frp的文件中包含服务器端和客户端,所以要根据自己的具体机器架构选择版本,云服务器是X86架构,装了ubuntu系统,所以选择下载frp_0.35.1_linux_amd64.tar.gz。而我的NAS机器是arm架构,并且似乎不支持64位,所以选择下载frp_0.35.1_linux_arm.tar.gz
接下来进行配置,首先是对于服务器端。

3.服务器端

打开filezilla,在root下新建一个文件夹frp,并将frp_0.35.1_linux_amd64.tar.gz解压出来文件夹中的两个文件上传进该文件夹:

frps frps.ini 

修改其中的frps.ini,改为:

[common]  bind_port = 7000  vhost_http_port = 8000  token = key   dashboard_port = 7500 dashboard_user = chen dashboard_pwd = chen 

接着找到阿里云服务器防火墙配置,将7000和8000端口设置为开放,不然会无法访问。

保存,打开PUTTY连接到云服务器。然后将frps复制到/usr/bin/目录下,使得他可以被执行:

sudo cp frps /usr/bin/ 

接下来执行frps,并使其工作在后台,这样putty关闭后服务一样能启动:

cd frp/ nohup frpc -c frpc.ini & 

万一要更新配置文件,可以杀死这个进程再启动:

ps -aux|grep frp| grep -v grep kill -9 xxx  

此时服务器端已经配置完成。

4.客户端

登录黑群晖,打开File Station套件,在里面的共享目录下,新建一个文件夹,文件夹名称为frp。
打开解压出来的frp_0.35.1_linux_arm.tar.gz目录,准备将里面的frpc、frpc.ini两个文件上传到刚才创建的frp文件夹中。
上传之前修改frpc.ini的内容为:

[common] server_addr = xxx  server_port = 7000  token = key  [dsm] type = tcp local_ip = 127.0.0.1 local_port = 5001 remote_port = 443 

然后进行上传。
接下来进入黑群晖,打开控制面板-任务计划,新增-触发的任务-用户定义的脚本,常规选项卡里的任务名称填写frp,事件选择开机,任务设置选项卡里的运行命令-用户定义的脚本框里输入:

/volume1/NASshare/frp/frpc -c /volume1/NASshare/frp/frpc.ini 

请注意:/volume1/NASshare/frp/frpc这是我的frpc的路径,你要改成自己的,请用File Station进入找到这个文件,右键属性可以看到路径,并自己替换一下。
勾选刚才添加的frp计划任务,点菜单中的保存。然后右键frp计划任务-运行。
然后再点击这个任务,找到动作-运行结果。如果没有看到结束时间证明客户端在运行。

接着,访问https://xxx(xxx是你云服务器的公网IP),弹出来这个网页不被信任,选择继续访问,就可以访问到你的NAS了。

以上,我们就实现了外地访问家中NAS的功能了。

上一篇
下一篇