利用 frp 实现外网访问黑群晖 NAS

in cn •  7 years ago 

frp是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。  也就是说,利用frp,在家里搭建的黑群晖,即便没有公网IP,也能在任何有互联网的地方访问到。

黑群晖:要知道什么是黑群晖,先要知道群晖就是网络存储设备的一个品牌,说白了就是一台低功耗主机挂一个或多个大容量硬盘,卖那么贵的价格不过是有一个用linux修改的专用系统和一系列配套服务。那么,自己DIY一台主机装个破解版的群晖系统就是黑群晖啦。

不过要实现这一目标,先得有一个具备公网IP的VPS或云主机,虽说还是离不开公网IP,但这总比找宽带运营商要个公网IP简单多了。  
这个方法的缺点也显而易见,访问速度在一定程度上受限于VPS的性能(当然,还要受限于你的宽带速度,局域网速度,黑群晖性能等等)。比如我用Linode那个5美元/月的VPS做frp,访问自己的黑群晖就额外具备修身养性、培养耐心的功效。如果能换个阿里云或者腾讯云之类的国内主机,速度想必会快不少。  
反正,能用钱解决的问题都不是问题,问题是我没钱,解决有无问题才最最重要的。

frp服务器端的配置:
1.根据自己主机的操作系统下载对应的frp版本,我Linode的VPS用的是Centos7,所以下载的是linux_amd64。截至我发文止,frp的最新版是0.13.0,可以到https://github.com/fatedier/frp/releases查看frp的最新版本,如有更新版本,把下面代码中的版本号(蓝字部分)改成最新的版本号就行了。新手不熟悉操作,直接复制粘贴我的代码用0.13.0版frp也没啥问题。
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz

2.使用tar指令解压tar.gz文件
tar -zxvf frp_0.13.0_linux_amd64.tar.gz

3.进入 frp 目录
cd frp_0.13.0_linux_amd64

4.删除不必要的客户端文件
rm -f frpc frpc_full.ini frpc.ini

5.配置服务器端文件
vi frps.ini

说起来真是不好意思,执行vi frps.ini命令后,完全不知道如何下手。  
好在VPS装了宝塔面板,可以直接找出frps.ini这个文件进行编辑……

[common]  
bind_port = 7000  
vhost_http_port = 8080  
dashboard_port = 7500  
dashboard_user = admin  
dashboard_pwd = 123456  
max_pool_count = 5  
authentication_timeout = 900  
subdomain_host = qfsyj.com 

 [ssh]  
listen_port = 6000  
auth_token = 123321

简单说明下这个配置文件,详细配置可以参见官方中文文档
[common] 必填的
bind_port Frp 服务端口(可自定义)
vhost_http_port http 访问端口(可自定义)
dashboard_port dashboard 界面端口
dashboard_user 登录 dashboard 用户名
dashboard_pwd 登录 dashboard 密码
max_pool_count 最大连接池数量
authentication_timeout 超时验证时间
subdomain_host 自定义二级域名
[ssh]  
listen_port ssh 访问端口
auth_token 用户身份认证

6.启动服务器端frp
./frps -c ./frps.ini

启动成功应该是这样:

在配置frp客户端之前先说下黑群晖的相关设置:
在我设置frp成功后,把黑群晖(产品型号:DS3615xs,DSM版本:DSM 5.2-5592 Update 1)格盘重装打算重新配置一次frp,结果怎么都装不进frp,折腾许久才自己找到问题所在,累!  重装系统后的黑群晖,只能看到usbshare1这一个文件夹,下载frp总出错,被困扰许久,网上也搜不到解决办法,差点因此放弃折腾黑群晖……

记得重装之前,有个home文件夹,下载的frp就在home文件夹里,但是重装后就没看到这个home文件夹了,反复重装几次都没有,回头去翻之前看过的黑群晖安装教程,也并没谁提到过这home文件夹,真不知道当初那个home文件夹我是怎么弄出来的……
最后还是无意间发现“用户账户–高级设置”下有个“启动家目录服务”。

家?home?  
试着启动看看,结果home文件夹出来了,终于能下载frp了……你妹的(内心是泪流满面的画面)!

如果是用SSH来配置黑群晖,记得在“控制面板–终端机和SNMP”中“启动SSH功能”,端口可以按自己的喜好修改。

黑群晖frp客户端的配置(我是用SSH连接黑群晖进行配置):
1.我看的教程都是给客户端装linux_386版本,我开始也是照着教程装这个,但后来不知怎么就装成linux_amd64版本,用着也没发现什么异常就懒得改了,教程也按这个版本写。  
其实黑群晖下载安装frp客户端跟前面装服务器端都差不多,用admin账号登陆后下载frp。
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz

下载完成后,可以看到黑群晖的home文件夹下多了个frp_0.13.0_linux_amd64.tar.gz文件。

2.使用 tar 指令解压 tar.gz 文件
tar -zxvf frp_0.13.0_linux_amd64.tar.gz

3.进入frp文件夹
cd frp_0.13.0_linux_amd64
这个命令执行后SSH界面没有任何反应(6.1版群晖系统已经解决这个问题,我这用的是5.2版),不用管它,继续执行下一个命令就是。 

 4.删除服务器端文件
rm -f frps frps_full.ini frps.ini

 5.编辑frpc.ini文件对客户端进行配置
vi frpc.ini
呃,还是不会在命令行下修改文本,直接在黑群晖里打开这个文件修改。

 6.配置文件如下 :
  [common]
server_addr = 172.104.113.219
server_port = 7000
auth_token = 123321
pool_count = 1
[ssh]
type = tcp
local_ip = 192.168.2.136
local_port = 22
remote_port = 6000
[nas]
type = http
local_port = 5000
subdomain = nas
[web]
type = http
local_port = 80
subdomain = web

 简单解释:
[common] 必填的
server_addr 服务器端公网IP
server_port frp 服务端口,和服务器端 bind_port 一致
auth_token 和前面服务器端 [ssh] auth_token 一致
pool_count 连接池数量
[ssh]
type 服务类型(tcp、http、https、udp)
local_ip NAS 本地局域网内网 ip
local_port NAS 开启 ssh 服务端口号,默认 22
remote_port 服务器端 ssh 端口,和服务器端 [ssh] listen_port 配置一致
[nas] NAS 管理界面
subdomain 二级域名
type = http 服务类型为 http
local_port NAS 默认端口 5000
[web] NAS web Station 服务,没用可以不用设置
type = http 类型为 http
local_port NAS web 服务端口
subdomain 二级域名
这里要特别说明的是,二级域名不要用全称,比如我的黑群晖是用nas.qfsyj.com这个二级域名,只要subdomain = nas就行了。
一开始我用subdomain = nas.qfsyj.com,frp总是报错,又被困扰许久…… 

 7.启动frp客户端
./frpc -c ./frpc.ini
启动成功的画面应该是这样:

 现在可以你的二级域名加端口号访问黑群晖了,比如我的http://nas.qfsyj.com:8080
http://web.qfsyj.com:8080也可以打开,只是鉴于这访问速度,没勇气在黑群晖上搭个网站。

折腾至此,如果已经顺利实现内网穿透,应该会发现得开着两个SSH窗口才行,关闭就等于关了frp。
那么,现在就要用到后台运行命令了,服务器端执行:
nohup ./frps -c ./frps.ini &
客户端执行:
nohup ./frpc -c ./frpc.ini & 

 至于frp的自启动,我还没搞定,服务器端应该不难,但是黑群晖怎么设置自启动有点棘手,因为我这个版本的黑群晖貌似没有开机启动服务的设置。 

2017.07.25补充:本来用的挺好的,突然就弹出个窗口提示“您没有权限使用本项服务”,按确定就被踢回登陆界面,重新登陆又说我没有权限,根本没法使用,但是用局域网网址登陆就没问题。
经百度,得知只要在“控制面板安全性”里把“忽略IP检查来加强浏览器的兼容性”打勾应用就可以了。 

参考文章:《如何用 Frp 实现外网访问群晖 NAS》,感谢该文作者提供回复指导! 

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  
  ·  7 years ago 

虽然看不太明白,还是支持一下。

非常感谢,看不明白大概是因为没有这方面的需求。