美文网首页NAS群晖Synology/群晖
群晖外网访问,Transmission PT安装https SS

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

作者: 非梦nj | 来源:发表于2017-06-29 20:12 被阅读6036次

    群晖现代家庭很多都配置了,数据存储、共享非常方便。
    如果开通外网访问的话,会更加便捷!成为家庭私有云。
    比如,外网直接访问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

    相关文章

      网友评论

      • c57bb3f9c16b:没有使用frp的端口转发,直接在华硕原厂固件设置的443端口转发到群晖443端口,然后在群晖6.2的反向代理里设置二级域名反向代理,现在使用域名只能局域网访问不能外网访问,该怎么办?
        非梦nj:@无言_WY 443如果被屏蔽了,那就撒网其它端口吧
        c57bb3f9c16b:应该是宽带被屏蔽了443
      • 8143cf38ae59:不知道作者还有看文章么?
        有个问题就是3个月到期后可以命令自动更新证书有效期,但是DSM的证书怎么更新上去,还需要手动的上传3个证书文件么?还是也有命令可以后台更新DSM的证书呢?
        8143cf38ae59:@非梦nj 嗯,更新证书用命令,这个应该也可以用任务的方式自动执行命令更新。就是DSM上传证书还得手工,要是有自动导入到DSM里边的命令或者功能就好了,实现全自动持续更新证书了
        非梦nj:3个月到期后命令去更新证书,然后DSM上的证书要重新上传一次
      • 老狸猫不知道:我的nas和你的有点不太一样,是直接接到pppoe端口的,已经按照你的方法实现了ssl访问nas控制台了,现在是访问nas控制台的时候安全链接没问题,但是访问transmission控制台已经不能访问了,说是无法进行安全的链接。咋办呢。。。
        非梦nj:@老狸猫_5e79 很安全的。我最新的文章,讲了无损升级DSM5 --》 DSM6
        60a18467cdfd:@非梦nj dsm 5.2 我怕升级会影响数据,就没敢升级
        非梦nj:@老狸猫不知道 DSM version?
      • 非梦nj:免费证书,三个月后续约时,使用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 letsencrypt
        sudo ./letsencrypt-auto renew
        sudo service nginx start

        ===================
        如果你的"frps"服务,则:service frps stop
        非梦nj: @ivanxxxx 把crt文件权限改成777
        9b396f2ff393:nginx -s stop
        遇到以下错误:

        nginx: [emerg] BIO_new_file("/etc/nginx/ssl/portal.crt") failed (SSL: error:0200100D:system library:fopen:Permission denied:fopen('/etc/nginx/ssl/portal.crt','r') error:2006D002:BIO routines:BIO_new_file:system lib)

        百度说权限不够,但无论sudo或者直接使用root账号,问题同样
        非梦nj:renew之后运行:
        frps restart
      • 人生地不熟_18ce:路由器AC66U,梅林固件,软件中心里没有Frpc,怎么离线安装?谢谢!
        非梦nj:不支持软件中心离线安装的请用命令行安装
        上传插件到/tmp目录后通过命令执行:
        cd /tmp
        wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/frps.tar.gz -O ./frps.tar.gz
        tar xzf frps.tar.gz
        chmod 755 /tmp/frps/install.sh
        /tmp/frps/install.sh
        非梦nj:是不是你的梅林固件太旧了?升级一下看看。
        离线安装的教程我找找
      • 非梦nj:一点小尾巴,远程访问群晖是绿锁了,但本地https://192.168.1.X 访问是红的,不过本地访问是绝对安全的,不用担心。
        非梦nj:@快慢机丶 不行的。因为9091是http端口。需要在NAS里设置一下https->http。详细看正文中的“根据网友的反馈,DSM6引入了反向代理”
        快慢机丶:@非梦nj 如果有公网ip 要实现远程https访问Transmission webui 是否做完ddns直接端口映射NASIP和9091就可以了
        非梦nj:而且本地直接http,不需要https

      本文标题:群晖外网访问,Transmission PT安装https SS

      本文链接:https://www.haomeiwen.com/subject/wvrvcxtx.html