不少人有在外面访问家里 NAS 的需求,但是群晖自带的 QuickConnect 服务由于服务器在国外,使用的人也比较多,链路会比较糟糕。
如果向您的运营商要到了公网 ip 那么,可以直接使用 DDNS,就不需要使用frp了。
然而有很多的运营商(例如鹏博士、长城等二级运营商)是不会提供公网 ip 的,并且使用了多级 NAT 链路十分复杂。
这种网络,只要使用了 frp 进行内网穿透就能实现访问家里的 NAS 设备的需求。
*注 这是个小白向的教程 如果有 VPS 使用经验 可以从服务器端配置开始阅读
准备
- 群晖
- frp
- 域名(不是必须,你也可以用ip来访问)
- 一台有公网 ip 的服务器 (VPS、云主机)
如果你没有 VPS,可以选择
Vultr 的日本或新加坡机房
DigitalOcean 的新加坡机房
他们提供了比较便宜的机器(Vultr2.5美元/月 DigitalOcean5美元/月)并且针对新用户注册赠送10美元余额奖励,可以直接抵扣VPS的月付费用,只需注册后绑定PAYPAL或者信用卡即可。
按照网站提示使用 PayPal 信用卡 支付宝( Vultr 支持支付宝)充值,购买一台属于自己的 VPS
在 VPS 创建好安装完系统之后(只是做 frp 使用的话安装 Ubuntu 即可),您可以在后台或邮箱中获取到您服务器的 ip 用户名(一般是root) 密码
连接 VPS
如果你是使用的是 Mac
打开 Terminal 输入命令
1 | ssh root@你的 VPS ip |
如果你是使用的是 Windows
这里需要用到 Putty 工具,下载后解压运行 putty.exe 文件(当然也可以使用 Xshell)
将刚刚得到的 VPS 的 ip 地址 输入到【Host Name】中,连接类型选择 SSH ,其他默认不用修改,点击最下面的 【Open】 按钮。
如果是第一次连接会提示安全警告,这里点击 yes 即可。
在 login as 后面输入 root 然后回车。
然后输入刚刚我们得到的 VPS 密码(密码是不会显示出来的,绿色光标也不会动,正常输入即可),输入完毕后回车。
服务器端配置
以 Ubuntu 为例
1. 登录服务器后,在 Release页面 下载自己服务器对应版本 Frp
1 | wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz |
2. 使用 tar 指令解压 tar.gz 文件
2 | tar -zxvf frp_0.16.1_linux_amd64.tar.gz |
3. 进入frp目录
3 | cd frp_0.16.1_linux_amd64 |
4. 删除不需要的文件
4 | rm -rf frpc frpc.ini frpc_full.ini |
5. 配置服务器端文件
5 | vi frps.ini |
6. 编辑配置文件
注意需要先按 键盘上的【i】键,进入编辑模式,才能开始编辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [common] bind_port = 7000 max_pool_count = 5 authentication_timeout = 900 # 管理端 进入frp自带的web管理界面的帐号密码 user 和 password 可以换成自己喜欢的 dashboard_port = 7500 dashboard_user = user dashboard_pwd = password # ssh端口 auth_token就是密钥,随便填个 [ssh] listen_port = 6000 auth_token = token # 群晖网页端 [dms] listen_port = 5000 auth_token = token [cloud_station] listen_port = 6690 auth_token = token |
完成后,按键盘上的【Esc】键退出编辑模式
然后直接输入
1 | :wq |
保存对配置文件的编辑
7. 启动 frp 服务器
1 | nohup ./frps -c ./frps.ini & |
群晖端配置
1. SSH 登录群晖 NAS (群晖必须开启 ssh)
和登陆 VPS 一样,只是 ip 换成群晖的内网 ip 用户名换成登陆群晖的用户名
2. 切换 root 用户
1 | sudo -i |
3. 下载Frp
2 | wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz |
4. 使用 tar 指令解压 tar.gz 文件
3 | tar -zxvf frp_0.16.1_linux_amd64.tar.gz |
5. 进入frp目录
4 | cd frp_0.16.1_linux_amd64 |
4. 删除不需要的文件
5 | rm -f frps frps_full.ini frps.ini |
5. 编辑 frpc.ini 文件(客户端配置文件)一样需要按 【i】进入编辑模式
6 | vi frpc.ini |
6. 配置文件如下
注意
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | [common] server_addr = VPS 的 ip server_port = 7000 // frps中填的 auth_token auth_token = token pool_count = 1 # ssh [ssh] type = tcp local_ip = 群晖局域网ip // 本地端口 local_port = 22 // 穿透到vps中的端口 remote_port = 6000 # 群晖网页 [dms] type = tcp local_ip = 群晖局域网ip local_port = 5000 remote_port = 5000 # 群晖同步 [cloud_station] type = tcp local_ip = 群晖局域网ip local_port = 6690 remote_port = 6690 |
完成后,还是一样,按键盘上的【Esc】键退出编辑模式
然后直接输入
1 | :wq |
保存对配置文件的编辑
7. 启动 frp 服务器
1 | nohup ./frpc -c ./frpc.ini & |
你就可以使用
http://你的 VPS ip:5000
在外网访问群晖的dsm管理器了
手机上的app同理
收藏了许久,今天才仔细看了一遍,在手中的免费国际域名都挂了后,就一直在想Frp到底能不能直接用IP来访问,在注册了一个二级域名后,死活连不通,回来重新看到了这句:“local_ip = 群晖局域网ip”,回头再看看上面:域名(不是必须,你也可以用ip来访问),才发现宝藏原来一直在,只不过我没有认真发现,简直了,太感谢了!!