前言#
- 之前是将黑群晖部署在内网环境中,但是这样在外网进行访问是一个问题
- 已知黑群晖无法通过官方的 QuickConnect 实现外网的远程访问(好像可以通过洗白机器的方法实现),那么就需要通过其他方式进行内网穿透
- 恰好,本人有一台腾讯云的云服务器(具有公网 IP),其每个月的基础流量也用不完,那么当前这个状态就非常适合使用 frp 来搭建内网穿透服务
原理介绍#
frp 官方简介#
- frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
构建原理#
graph BT
A[外网设备] --> B["云服务器(公网 IP)"]
subgraph 内网
C[本地路由器]
D[NAS] --> C
F[其他内网设备] --> C
end
D -.-> B
C --> B
- 利用具备公网 IP 的服务器(云服务器)作为中转,外网访问云服务器的某个端口,然后通过 frp 将这个端口映射到内网的黑群晖上,从而实现外网访问黑群晖
- 具体的速度和稳定性取决于云服务器的配置和网络环境,即云服务器的带宽等
搭建过程#
服务端(frps)#
- 在云服务器上,通过 docker 搭建 frps 服务
- 首先在
/etc/frp目录下创建配置文件frps.tomlfrps.toml1[common] 2bind_port = [监听端口] 3subdomainHost = [使用的域名] 4token = [客户端和服务端之间的身份认证,建议填写] 5 6dashboard_port = [面板端口] 7dashboard_user = [面板登陆用户名] 8dashboard_pwd = [面板登陆密码] 9 10log_file = /var/log/frps.log 11log_level = info 12log_max_day = 3 - 创建好后,服务器端需要用 docker 拉取 frps 镜像并运行,拉不下来的,记得换源
1docker pull snowdreamtech/frps 2docker run --restart=always --network host -d -v /etc/frp/frps.toml:/etc/frp/frps.toml --name frps snowdreamtech/frps记得在服务器防火墙上开放监听端口和面板端口 - 运行成功后,可以通过
http://[云服务器 IP]:[dashboard_port]访问 frps 面板,并且查看当前的连接情况,那么服务器这边就搭建完成了
客户端(frpc)#
- 在黑群晖上创建一个配置文件
frpc.tomlfrpc.toml1[common] 2server_addr = [云服务器公网 IP] 3server_port = [frps 中的监听端口] 4token = [frps 中的客户端和服务端之间的身份认证,建议填写] 5 6[DSM Web] # 映射的服务名称 7# 本地服务类型,这里是群晖的 Web 管理服务 8type = tcp 9local_ip = [该服务器所在的内网地址,这里就是黑群晖的内网 IP 地址] 10local_port = 5000 # 群晖的 Web 管理端口 11subdomain = [使用的子域名] # 例如像使用 dsm.example.com 这样的域名来访问,则这里只需要填写 dsm 即可 12remote_port = [云服务器上的端口] # 例如 5000,则可以通过 [云服务器 IP]:5000 访问到黑群晖的 Web 管理页面记得在服务器防火墙上开放对应的 remote_port - 创建好后,黑群晖上通过 docker 来安装 frpc,具体 docker 名称是
snowdreamtech/frpc,将frpc.toml所在的文件夹映射到/etc/frp目录,网络记得选择 host 模式 - 若在
http://[云服务器 IP]:[dashboard_port]界面的Proxy中看到DSM Web的状态为online,那么就说明黑群晖这边也搭建完成了 - 此时通过
http://[云服务器 IP]:[remote_port]即可访问到黑群晖的 Web 管理页面
子域名访问#
- 首先在域名 DNS 处添加一条记录
1主机记录:[子域名] # 例如 dsm 2记录类型:A 3记录值:[云服务器 IP] - 然后在服务器的 nginx 中添加一个反向代理
1server { 2 listen 443 ssl http2; 3 server_name [子域名].[域名]; # 例如 dsm.example.com 4 5 ... # 省略相关 ssl 证书配置 6 7 location / { 8 proxy_pass http://127.0.0.1:[remote_port]; # 例如 5000 9 proxy_set_header Host $host; 10 ... # 省略其他配置 11 } - 使用
nginx -s reload重新加载配置文件,此时若正常的话,通过https://[子域名].[域名]即可访问到黑群晖的 Web 管理页面
参考#
本文作者: SuburbiaXX
本文链接: https://suburbiaxx.fun/posts/c69735ca/
版权声明: 本博客在未特别注明下默认使用 CC BY-NC-SA 4.0 许可协议。

