NAS群晖Synology/群晖

群晖外网访问,Transmission PT安装https SS

2017-06-29  本文已影响6036人  非梦nj

群晖现代家庭很多都配置了,数据存储、共享非常方便。
如果开通外网访问的话,会更加便捷!成为家庭私有云。
比如,外网直接访问DS-PHOTO, DS File Station, DS Web Station。。。
对于外网访问,安全肯定是第一位的,出什么“艳照门”就不好了-
所以,这里讲的是,如果用SSL证书加强保护私有云,包括群晖的上PT工具 - Transmission
Abstract: How to secure Transmission Web-UI(http/RPC) through SSL(https), in Synology NAS (nginx)

[2017-11] 更新:升级到DSM 6.1了,有些更新,见最后。

家庭私有云拓扑图:

你需要有:

  1. 群晖NAS,黑的或白的, DSM 5.X
  2. 智能路由,能刷梅林固件, 7.5
  3. VPS,番羽qiang利器
  4. 个人域名,免费或阿里云67元的
  5. 免费SSL证书(Let's Encrypt)
topo.png

先给一个效果图:

假设AAA.com,是我们申请的个人域名

远程通过 https//nas.AAA.com,访问NAS的管理页面。注意,“https”是绿锁:

nas ssl.png

远程通过 https//file.AAA.com,访问NAS的文件管理器,远程上传、下载:


FileStation

远程通过 https//pt.AAA.com,访问NAS PT - Transmission的Web管理页面:注意,“https”是绿锁:


TR ssl.png

下面是步骤记录,注:如果跟网上一搜一大把的教程重复的,我就略过了,只放链接。网上没有的,才会详细写。

1. 参考这里:黑群晖+梅林路由:外网访问NAS整体解决方案

完成以下操作:

2. 路由器 插件Frpc设置端口转发(设置转发规则方法)

服务器端的Frps已经装好了,下面,本地配置Frpc。

路由器,梅林固件,软件中心里,安装Frpc:
注意,要把虚拟内存也启用一下,Frpc启动时会用到,正常时可以关闭虚拟内存


Frpc-inst.png

设置Frp的端口转发:注意这里,全是安全的 https !!

Frpc-port.png

3. 群晖全部改用HTTPS访问,并设置各套件HTTPS访问端口

参考这里:黑群晖+梅林路由:外网访问NAS整体解决方案

这时,你就可以测试一下了:
输入:https://nas.AAA.com -> 会远程打开NAS管理页面,但浏览器提示“不安全”,“https”是红叉!下面,我们来消除这个红叉。

4. 群晖安装SSL证书

VPS,用命令行申请免费证书,我是用的:Let's Encrypt https://certbot.eff.org/#centos6-other,免费三个月,到期免费续约。
可以一次签署多个次级域名,比如:AAA.com nas.AAA.com pt.AAA.com file.AAA.com

安装:
wget https://dl.eff.org/certbot-auto /root/
chmod a+x certbot-auto
产生证书:
/root/certbot-auto certonly 
# 选择2 - standalone
# domain: AAA.com nas.AAA.com pt.AAA.com file.AAA.com。。。
产生证书:/etc/letsencrypt/live/AAA.com/
续期:./path/to/certbot-auto renew 

文件名 内容
cert.pem 服务端证书
chain.pem 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书
fullchain.pem 包括了cert.pem和chain.pem的内容
privkey.pem 证书的私钥

证书(/etc/letsencrypt/live/AAA.com/),WinSCP下载到本地:

Paste_Image.png

群晖 打开控制面板 -> Security -> Certificationi -> Import certificate

import

导入我们从VPS上下载的证书文件:


ssl file.png

好了,这时,访问 https://nas.AAA.com,浏览器https 已经变成绿锁了!哈哈~

但如果群晖安装了PT工具 - Transmission,它的管理页面是 http://<NAS_IP>:9091,不能直接映射到Frp的https上去,只能不通过SSL远程访问,怎么破?
这种不安全暴露,很危险啊,万一泄露Transmission密码,辛辛苦苦PT下载的几个T的文件,给人全删了怎么办?

这时,就需要一点点nginx操作了 -->

5. 群晖通过 nginx,配置反向代理,把https,映射到Transmssion的http 9091端口 (其实是RPC)

路线:
远程 -> https 访问到VPS -> Frps通过https转发到路由器 -> Frpc映射到群晖 https:8080端口 -> Nginx转发给Transmission http:9091

  1. 配置Nginx:

SSH to NAS,备份一下:

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

WinSCP,把证书,改名为:transmission.crt, transmission.key,上传到NAS:/etc/nginx/ssl/
把新的nginx.conf内容改为如下,然后上传到 /etc/nginx/

# /etc/nginx/nginx.conf 
worker_processes    1;

events {
    worker_connections  1024;
}

http {
    include         mime.types;
    default_type    application/octet-stream;

    access_log      off;
    sendfile        on;
    server_tokens   off;

    keepalive_timeout       65;
    client_max_body_size    2047M;

    server {
    listen 8080 default_server ssl;
    ssl_certificate /etc/nginx/ssl/transmission.crt;
    ssl_certificate_key /etc/nginx/ssl/transmission.key;
    server_name transmission;

    access_log /var/log/nginx/transmission.access.log;

    location / {
    proxy_pass http://localhost:9091;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    root /var/www/nginx-default;
    }
    }
}

重启一下Nginx服务:

DiskStationZQ> nginx -s stop
DiskStationZQ> nginx
DiskStationZQ> 
# 没有错误提示,说明OK了!

欧了,现在远程浏览器打开:https://pt.AAA.com,就会直接显示Transmission,而且是绿锁啦!

如果远程打开Transmission界面,显示空白页面,解决方案:http://www.jianshu.com/p/12657ef9d77e

证书更新

免费证书,三个月后续约时,使用renew命令,如果出现告警:

“Attempting to renew cert from /etc/letsencrypt/renewal/example.com.conf produced an unexpected error: Problem binding to port 443: Could not bind to IPv4 or IPv6.. Skipping.”

这是因为:renew时,http相关的service没有关闭

解决:

sudo service nginx stop
cd ~、
sudo certbot-auto renew
sudo service nginx start
#如果你用的是"frps"服务,则:
service frps stop
#renew之后运行:
frps restart

[2017-11] 更新:升级到DSM 6.1了,nginx.conf有变化:

/etc/nginx# ls (以下两个文件都要改)
nginx.conf nginx.conf.default
另外,SSL证书,直接在DSM6.1控制面板里导入就行,不需要在nginx.conf里加

    server {
        listen 8080 default_server ssl;
        listen [::]:8080 default_server ssl;

        server_name Transmission;

        location / {
         proxy_pass http://localhost:9091;
        }
        include app.d/www.*.conf;
        include app.d/alias.*.conf;
        include /usr/syno/share/nginx/conf.d/www.*.conf;
        include conf.d/www.*.conf;
    }

根据网友的反馈,DSM6引入了反向代理,那就很简单了:


dsm-proxy

参考:
黑群晖+梅林路由:外网访问NAS整体解决方案 http://post.smzdm.com/p/568990/?nozhiyou
群晖DSM自动备份到异地OpenWrt硬盘 - 进阶篇(Syncthing-Inotify) - 简书
http://www.jianshu.com/p/92ce0050ebc7

上一篇下一篇

猜你喜欢

热点阅读