群晖NAS安装frp实现内网穿透(非Docker)

群晖NAS安装frp实现内网穿透(非Docker)

0. 硬件准备

群晖 DS218play + 云服务器

1. 软件准备

frp代码包下载:https://github.com/fatedier/frp

云服务器是centos系统,安装 frp_0.46.1_linux_amd64 版本,主要使用 server 版(frps)

群晖NAS是arm架构,安装 frp_0.46.1_linux_arm64 版本,主要使用 client 版(frpc)

2. 云服务器安装frps

第一步:将压缩包内的frps二进制文件复制到 /user/local/frp 目录下

第二步:修改frps.ini,并上传到同一目录下

[common]
bind_addr = 0.0.0.0
bind_port = 7000
# token很关键,是frpc和frps认证的凭据
token = 1234

vhost_http_port = 7080
vhost_https_port = 7443

dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin

dashboard_tls_mode = false
enable_prometheus = true
log_file = ./frps.log
log_level = info
log_max_days = 3

第三步:运行命令,启动frps

./frps -c frps.ini

第四步(可选):通过 systemctl 启动 frps

在 /etc/systemd/system/ 编写frps.service,并保存

[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.ini

[Install]
WantedBy = multi-user.target

用 systemctl 命令管理 frps

systemctl start frps
systemctl stop frps
systemctl restart frps
systemctl status frps

3. 群晖NAS安装frpc

第一步:使用 ssh 登录 nas

第二步:将压缩包内的frpc二进制文件复制到 ~/ 目录下(其他路径无权限,这里有)

第三步:修改frpc.ini,并上传到同一目录下

[common]
# 云服务器地址
server_addr = 127.0.0.1
server_port = 7000
# 云服务器配置的token
token = 1234

[Synology DSM]
# 群晖管理http访问5000端口
type = http
local_ip = 127.0.0.1
local_port = 5000
# nas.your_domain.cn 是配置的域名,没有可以填云服务器地址
custom_domains = nas.yourdomain.cn
use_encryption = false
use_compression = true

# https不支持ip访问,如无域名此项可不写
[Synology DSM TLS]
type = https
local_ip = 127.0.0.1
local_port = 5001
# nas.your_domain.cn 是配置的域名
custom_domains = nas.yourdomain.cn
use_encryption = true
use_compression = true

# 部分群晖内置服务端口转发示例
[Synology Drive]
type = tcp
local_ip = 127.0.0.1
local_port = 6690
remote_port = 7101

第四步:使用 nohup & 后台挂载 frpc

nohup ./frpc -c frpc.ini &

第五步:在浏览器输入 http://nas.yourdomain.cn:${vhost_http_port} 即可建立http访问链接

4. 配置 https 证书

第一步:申请域名https证书

第二步:在群晖NAS上配置证书

第三步:在浏览器输入 https://nas.yourdomain.cn:${vhost_https_port} 即可建立https访问链接。vhost_https_port的值在云服务器的 frps.ini 中配置,如示例中的 7443。