给局域网设备加把锁:用二级域名安全访问家里的各种设备
大家好呀。趁着周末,今天想跟大家分享如何实现使用二级域名加端口号,访问局域网内的不同设备,并实现全站「HTTPS」安全访问。
最早的时候 Let's Encrypt 的免费证书是只对单域名有效的,而群晖内置的 Let's Encrypt 证书服务目前也依然只对单域名生效。
而从 2019年3月 开始,Let's Encrypt 已经提供了泛域名证书,这就为二级域名的加密提供了可能。
在开始之前,首先前提条件如下:
1、需要有公网 IP;
2、已经提前申请、准备好了自有的「*级域名」,可以自行在腾讯或者阿里云购买,首年一般3元就够了,不贵;
3、已经提前准备,安装好了*级域名的「DDNS」解析服务,并且在按照下文开始操作之前,确保解析已经生效。
建议按照流程操作之前先通读整个教程,然后再动手操作,防止出错。
好了,确认了上述都已经完成了以后,我们开始下一步。
▲我们这里用到的是「GitHub」大神 @andyzhshg 的脚本,这个脚本是通过 ACME 协议来实现的。
如果你访问 GitHub 有困难,那么百度云的下载地址在这里,密码是:92be。
至于 ACME 到底是什么,我们倒没有必要去深究。只需要知道,它是一种能够实现完全自动化的申请并定期更新证书的协议即可。
1、为了保证不出错
▲ 请首先检查群晖控制面板中「安全性」-「证书」一栏,如我截图所示,应该仅有一条证书内容,且已经设置为「默认证书」,如果有其他证书,请做好备份以后主动删除;
2、下载已经打包了的脚本内容(来源于 Github 项目);
3、解压文件,并且将整个「syno-acme-0.2.0」文件夹上传到群晖中。由于群晖对于非用户区域有严格管控,所有非用户区域的文件变更,在重启之后都会被还原。
所以请务必把这个文件夹放在你的「共享文件夹」中,比如我就把它放在了我的「Public」文件夹当中;我的脚本版本比较老了,所以文件夹名字不一样,请忽视。
4、接下来:我们需要对其中的文件进行一点简单的修改,以便使它符合你自己的运行条件。
打开文件夹中的「config」文件,并进行修改。请注意:如果是使用 Winscp 上传的文件,可以直接在 Winscp 中双击打开文件修改,或者也可以使用群晖自带的「文本编辑器」套件来进行修改,但是强烈建议使用 WinScp 来进行修改。
▲ 文件中需要修改的部分只有红框中的三处。
1、修改成你的*级域名:举例,如果你的域名是 abc.xyz 就像中文说明的那样,直接填写 abc.xyz 不要多此一举改成 www.abc.xyz。
2、按照红色箭头处选择填写,如果你的域名解析服务在阿里云,那么就填写「dns_ali」;如果在腾讯(dns pod)则填写「dns_dp」,注意下划线。
3、以阿里云为例:
▲ 登录阿里云以后,打开「控制台」,将鼠标移动到右上角的头像上,就能看到「AccessKey 管理」点击后打开。如果是第一次使用这个功能的话,点击右上角的「创建 AccessKey」就可以创建一组新的秘钥,记录下其中的「AccessKey ID」以及 「Access Key Secret 」。如官方提示的,这个秘钥有完全的账户访问权限,所以请务必保管好,不要泄露。其他服务商的操作方法类似,请自行研究。
「AccessKey ID」以及 「Access Key Secret 」填写在第三处红框的两组引号之间,注意不要删除引号。
▲ 全部修改完成以后应该如上图所示,请仔细核对。图中的乱码是文字编码格式的问题,不必理会。
5、好了,配置文件的修改就完成了,由于 Let's Encrypt 提供的证书最长只有三个月,所以我们需要在群晖中设置定时任务,让它能够在证书到期之前自动延期。
▲ 打开「控制面板」-「任务计划」,点击左上角「新增」增加一条「用户定义的脚本」;
▲ 「常规」中的名称可以任意输入,用户账号选择「root」;
「计划」部分,由于群晖如果选择「每三个月重复」的话,下一次执行时实际上已经到期了,所以我们选择「每月重复」;
「任务设置」部分,我们勾选「通过电子邮件发送运行详情」,这样任务执行时我们可以得到通知。
下面的「用户定义的脚本」部分中的脚本内容如下:
/volume1/Public/script/syno-acme-master/cert-up.sh update >> /volume1/Public/script/syno-acme-master/log.txt 2>&1
请注意这是完整的一行,不是两行。其中的脚本路径请按照自己的实际情况填写,不要照抄。
▲ 具体的完整文件路径可以在 WinScp 中看到。
6、好了,到这里已经证书更新脚本已经配置完成了,我们可以运行一下看一下配置是否正确。
▲ 在刚才我们新增的脚本上点击右键选择「运行」,然后稍等不超过五分钟。在「控制面板」中「安全性」-「证书」中查看一下证书的域名是否正确,到期日是否是在三个月以后,如果没有问题,那么恭喜你,一切顺利。
7、最后:我们需要配置反向代理服务器,以便让这个泛域名证书对局域网内的其他设备生效。
来到「控制面板」-「应用程序」-「反向代理服务器」中新增反向代理:
▲ 举个栗子,我的局域网中有一台 OpenWRT 的软路由,我希望在外网我能以 router.abc.xyz 的域名来访问它。
那么新增的规则应当如上图,「描述」部分可以按照喜好随意填写;「来源」部分的协议,由于我们已经设置了全站的证书,所以我们选择「HTTPS」;
主机名填写二级域名,可以按照自己的设备名称来任意设置,随意发挥想象力:我把软路由设置为「router.abc.xyz」;
端口部分,由于我这里「80」和「443」端口都已经被 ISP 封禁,所以我选择了非标准端口,这里以「9001」为例,为了方便管理,建议将所有的来源端口都设置成统一的;
目的地部分,由于我的软路由未部署证书,所以目的地协议为「HTTP」,主机名填写路由器的内网 IP 地址,「192.168.1.1」,端口则是标准的 HTTP 网页端口 「80」。
8、好了,按照第 7 部分的方法你可以为你的其他设备逐个配置服务,不要忘记了群晖自己的 DSM 网页,单独设置一个二级域名比如「dsm.abc.xyz」指向群晖 IP 的「5001」端口。
9、最后,你需要到路由器中去做好端口转发,上文中各个服务设置的「来源端口」也就是上文中举例的「9001」端口转发到群晖去,这样「反向代理服务器」才能正式生效。
▲ 另外,需要注意的是,如果你像我这样,在 DNS 解析中设置了泛解析,将所有二级域名都指向了同一个 IP 地址,那么,无论你访问任何二级域名都会指向家里的 IP 地址;但是如果没有的话,你则需要逐个的为二级域名设置域名解析。所以建议设置泛域名解析。
最后的最后,遇到的坑:
如果你在使用这个脚本之前,提前安装了「Web DAV Server」「 Card DAV Server」这些需要用到 HTTPS 服务的套件,那么在运行脚本以后,你可能需要删除他们并且重新安装,新的证书才能对他们生效。
如果某一天你忽然发现二级域名无法访问了,首先请在内网查询自己的 IP 地址,然后去你的 DNS 服务商那里查看一下「解析日志」核对解析是否正确。大部分情况下都是「DDNS」出了问题,你可能需要更新 IP地址了。
感谢看这个啰嗦的教程,有问题欢迎在评论区提问,有帮助的话请点赞哦。
欢迎关注,我会不定期分享关于群晖的教程,让你用尽群晖的所有「剩余价值」。
janeyre
域名提供商DNSPOD,阿里云本身就免费证书,一签就是一年,更好
校验提示文案
______M
比如上海
校验提示文案
solekg
校验提示文案
一口一锅小布丁
校验提示文案
天之沙沙
校验提示文案
皮皮瞎
校验提示文案
无间乱舞
校验提示文案
littlebeastie
校验提示文案
Nuc87
校验提示文案
龙飞1
校验提示文案
专业团队
校验提示文案
SUMMER6666
校验提示文案
聚灵阵主
校验提示文案
Grays
校验提示文案
RickyG
校验提示文案
不惊鱼
校验提示文案
janeyre
校验提示文案
weyou
校验提示文案
FIRE生活
校验提示文案
ddvcx
话说ssl证书基本没成本,为什么买几千几万
校验提示文案
山遥路远
校验提示文案
Hans_Will
校验提示文案
不惊鱼
校验提示文案
Diu夫斯基
校验提示文案
RickyG
校验提示文案
flying1861
校验提示文案
不知道没听说过
篇2:去看看
校验提示文案
pngssa
告辞
校验提示文案
值友4702669300
校验提示文案
messia
校验提示文案
Grays
校验提示文案
安卓中国区总代
校验提示文案
papadave
校验提示文案
jerryking
校验提示文案
树叔叔
校验提示文案
聚灵阵主
校验提示文案
海涛
校验提示文案
海涛
校验提示文案
SUMMER6666
校验提示文案
名称
校验提示文案