群晖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。