弹霄博科

小谈谈一亩三分地



使用 Frp 对内网黑群晖进行穿透型映射


发布日期: 2017/05/15
更新日期: 2020/04/27
作者: 小谈谈
分类: 笔记
标签: nas, synology
阅读时间: 4 分钟
字数: 900 字


虽然之前自己搭的黑群晖已经洗白,并成功使用 QuickConnect 进行连接,但是好景不长,可能是过多的黑群晖用户在使用白群晖服务,造成群晖方面发起了策略,我洗白过的黑群晖被拉黑。为了在外网环境下也可以使用内网的 DSM 服务,所以我决定使用 Frp 对内网黑群晖进行穿透型映射 Frp 对内网黑群晖进行穿透型映射。(在学校机房写的,全程无图,抱歉,如果有问题请留言)

前期准备

括号内是我实际测试过程中使用的软件版本。不同版本在设置中可能存在些许差异,但你可以找和你硬件相匹配的版本来完成映射。

1、黑群晖一台(DSM 6.0.2) 2、有公网 IP 的 VPS(CentOS 7.x) 3、相应版本的 Frp 软件(Linuxamd64) 4、域名一个

Frp 介绍

懒了,直接移步到 GitHub 中的 Frp 中文介绍

你也可以不看这个介绍,但你必须对如下的内容有所了解。

frps 及 frps.ini,frp 的服务端和服务端配置文件,需要放到有公网 IP 的机器上。

frpc 及 frpc.ini,frp 的客户端和客户端配置文件,需要放到处于内网环境的机器上。

Dashboard 可以通过浏览器查看 frp 的状态以及代理统计信息展示。

特权模式,避免每次增加代理都需要操作服务器端,代理的所有配置信息都可以在 frpc.ini 中配置,无需在服务器端做任何操作。

对 Frps 的配置

下载 frp 并解压

wget https://github.com/fatedier/frp/releases/download/v0.9.3/frp0.9.3linuxamd64.tar.gz
tar -zxvf frp0.9.3linuxamd64.tar.gz
cd frp0.9.3linuxamd64

改写配置文件

首先先进入 frps 目录,然后改写配置文件 frps.ini,使用命令:vi frps.ini

为了方便后期维护,所以我对服务端采取的是特权模式配置。 `` ini [common] # frp 监听地址、端口 bindaddr = 0.0.0.0 bindport = 7000

# 代理 web 服务端口,这里是你在外网访问时的端口号 vhosthttpport = 4080 vhosthttpsport = 4443

# frp 控制面板:端口、用户名、密码 dashboardport = 7500 dashboarduser = admin dashboardpwd = admin

# 默认日志配置 logfile = ./frpc.log # 日志级别,支持: debug, info, warn, error loglevel = info logmaxdays = 3

# 开启特权模式 privilegemode = true # 授权 token 建议随机生成 privilegetoken = 123456 # 特权模式下允许分配的端口(避免端口滥用),DSM 端口必须在这段里 privilegeallowports = 4000-50000

# 后端连接池最大连接数量 maxpoolcount = 100

# 口令超时时间 authenticationtimeout = 900

# 子域名(将 *.domain.com 解析到装有 frps 的服务器上) subdomainhost = domain.com

```
运行一下试试:`./frps -c frps.ini`,这时候你访问 frps 控制面板,并使用之前配置的用户名、密码登录,应该可以正常进入控制面板页面。

## 对 Frpc 的配置

开启 DSM 的 SSH:登录 DSM,控制面板->终端机和 SNMP,勾选启动 SSH 功能,保存。

使用 SSH 登录你的 DSM:可以使用 xShell 类的软件,使用 admin 帐号登录。

提升权限:使用 `sudo -i` 提升权限至 root。

下载 frp:

> wget https://github.com/fatedier/frp/releases/download/v0.9.3/frp_0.9.3_linux_amd64.tar.gz
> tar -zxvf frp_0.9.3_linux_amd64.tar.gz
> cd frp_0.9.3_linux_amd64

进入 frpc 目录,然后改写配置文件 frpc.ini,使用命令:`vi frpc.ini`。
```

ini [common] # 服务端地址及端口 serveraddr = domain.com serverport = 7000

# 默认日志配置 logfile = ./frpc.log loglevel = info logmaxdays = 3

# 特权模式 token,要与服务端一致 privilegetoken = 123456

# 发布 dsm 的 web 服务 [dsm] # dsm 服务方式(http或https) type = https localip = 127.0.0.1 # dsm 的端口号 localport = 8000 privilegemode = true useencryption = true usegzip = true # 连接数量 poolcount = 20 # 是否开启密码访问 #httpuser = admin #httppwd = admin # 子域名配置(使用下面配置,你的访问地址将是 dsm.domain.com) subdomain = dsm

```
试一下吧:`./frpc -c frpc.ini`,启动 frpc。正常的话,用 https://dsm.domain.com:4443 就可以访问你的 DSM。

## 加载系统服务

### Frps 端加载系统服务

因为 Frps 端我放在了 CentOS7 的 VPS 上,CentOS7 使用 Systemd 作为系统服务管理工具,所以我们使用下面的方法注册系统服务。
```

shell # 复制文件 cp frps /usr/local/bin/frps mkdir /etc/frp cp frps.ini /etc/frp/frps.ini

# 编写 frp service 文件 vi /usr/lib/systemd/system/frps.service # 内容如下 [Unit] Description=frps After=network.target

[Service] TimeoutStartSec=30 ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini ExecStop=/bin/kill $MAINPID

[Install] WantedBy=multi-user.target

# 启动 frp 并设置开机启动 systemctl enable frps systemctl start frps systemctl status frps `

Frpc 端加载系统服务

因为 Frpc 端我放在了黑群晖上,无法实现向传统 Linux 系统一样注册系统服务,所以我们使用下面的方法注册系统服务。

使用 admin 帐号登录 DSM,控制面板->计划任务->新增->触发的任务->用户自定义的脚本。

常规页面 \>

任务名称:frpc 用户帐号:root 事件:开机

任务设置 \_>

用户定义的脚本 /root/frpc/frpc -c /root/frpc/frpc.ini`,保存,选定这个计划任务,选择运行。

后记

实测通过,如果有任何问题,欢迎留言讨论。