无外网IP也可以远程访问群晖 使用Frp实现内网穿透

不少人有在外面访问家里 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同理

Comments ( 1)
  1. Sofa
    5256 2019-02-13 14:12

    收藏了许久,今天才仔细看了一遍,在手中的免费国际域名都挂了后,就一直在想Frp到底能不能直接用IP来访问,在注册了一个二级域名后,死活连不通,回来重新看到了这句:“local_ip = 群晖局域网ip”,回头再看看上面:域名(不是必须,你也可以用ip来访问),才发现宝藏原来一直在,只不过我没有认真发现,简直了,太感谢了!!