一、前期准备
要实现动态DDNS域名解析和https安全访问,首先得有个域名。域名可以直接在阿里云或者腾讯云购买。我的域名是在腾讯云买的,然后托管到了cloudflare这个平台,为什么要托管到它那儿?因为托管过去后,就算没有ipv4的情况下,也能利用STUN穿透,获取到可以访问的ipv4公网IP和端口,只是这个IP和端口不是固定的,但可以用脚本去监控,要是有变更的话,能直接同步到cloudflare,还能收到邮件通知
二、具体操作步骤
我是在腾讯云买的域名嘛,那在使用cloudflare之前,首先得把域名托管过去。
- 注册账号:使用cloudflare得先注册个账号,这注册账号的过程我就不多详细说了,它的网站支持简体中文,按照说明去注册的话,应该都能顺利完成。
- 选择套餐并激活:注册好后选择免费套餐就行
啥都不用管,接着就去激活。
- 修改DNS地址:然后去腾讯云把DNS地址修改成cloudflare提供的
在“修改DNS服务器”那个界面里,把名称服务器修改好就行
之后就等着cloudflare同步DNS完成,大概等个几分钟就好了,等完成后就能看到相应的状态
- 获取令牌:要获取令牌,点击右上角,再点击我的个人资料
接着使用编辑区域DNS模板
模板权限默认就行,区域资源选择包括、特定区域,再选好自己的域名,点击继续
然后创建令牌
可千万要记住保存好这个令牌。
(二)安装lucky
- 要是用飞牛的话,直接在应用中心下载就行
- 要是没有飞牛,可以用docker安装,要是fnOS系统的nas,也有使用Docker安装Lucky的详细教程。
(三)设置动态域名(DDNS)
在左边找到“动态域名”这个选项卡,然后点击“添加任务”。在编辑DDNS任务的时候:
- 设置任务相关信息:设置好任务名称,使用简易模式,托管服务商就根据自己域名托管的实际情况来选,像我域名托管在cloudflare,我就选它,然后把之前获取的令牌填进去。
- 选择类型及域名解析:类型的话,我只有ipv6,就单选ipv6就行,域名列表这里,解析泛解析*.ceshi.com(要把这个换成自己的域名)。
- 查看结果:完成添加后,要是看到同步结果显示“托管商记录一致”,那就说明DDNS设置成功。
(四)申请SSL证书
在安全管理那里选择“添加证书”(最新版lucky直接在菜单栏显示SSL/TLS证书)
- 填写证书相关信息:添加证书的时候,备注可以随意写,添加方式选择ACME验证方式,这个也要根据自己域名托管的地方来选,像我托管在cloudflare,我就选它,再把令牌填进去,域名列表填泛解析域名*.ceshi.com(记得换成自己的域名),电子邮箱可以换成自己的(其实换不换都行,主要就是通知你申请好了),其他的都默认就行。
- 等待结果:完成创建后,要是你有ipv4公网,使用ipv4通道申请证书和DNS查询的时候把强制ipv4打钩
然后耐心等几分钟,可以试着刷新页面,看到相应结果就说明没问题。
(五)反向代理及HTTPS访问
在左边菜单栏选择“Web服务”菜单,点击“添加Web规则”。
- 添加web服务规则:
- 规则基本设置:添加web服务规则的时候,名称可以随意写,操作模式选简易模式,监听类型我因为是ipv6,所以选的是tcp6,监听端口默认是16666(大家也可以换成自己喜欢的,只要没被占用就行,后期访问就是用域名和这个端口),防火墙要开启,TLS也得开启(因为https访问必须开启这个)。
- 添加子规则:接着添加web服务子规则,子规则名称也随意写,web服务类型选反向代理,前端域名/地址写自己需要的前缀二级域名,后端地址写内网IP和项目端口就行。
- 继续添加规则(如有需要):要是还有其他项目,就按照这个方式继续添加web服务子规则就行,添加完了点击右下角完成添加web服务规则就行,我自己就添加了三个,要是还有别的项目点击添加子规则接着弄就行。
(六)设置重定向
要是不设置重定向,有些浏览器只输入网址,不输入前面的https的话可能就进不去,像苹果自带的浏览器就是这样,所以得设置重定向,把所有域名都转到https。
- 添加重定向规则:还是添加web服务规则,名称随意写,操作模式改成定制模式,监听端口和前面设置的保持一致就行,默认子规则里web服务类型选择重定向,默认目标地址写成https://{host}:16666(端口根据自己之前设置的修改)
- 完成设置:保存完成就好,这样不管在哪里访问,所有二级域名就都会自动转跳到前面带https的网址。
(七)端口转发
还得把反向代理的端口通过路由器映射出去,这样才能正常从外网访问。就只需要映射一个端口就行,像我这里就是16666,以小米路由器为例,端口比如我的16666,访问的时候就是对应项目的二级域名:16666,就能实现访问,就是一个项目对应一个二级域名,记好域名和一个端口就行,像我之前设置的fn.ceshi.com:16666、lucky.ceshi.com:16666、xunlei.ceshi.com:16666等等这些都是这样。
三、其他说明
我用的lucky是飞牛应用中心自带的,版本也不是很高,最新版本可能会有点不一样,不过操作方式大体相同,大家举一反三就行,过两天我还会发布没有公网ipv4的情况下使用STUN穿透,获取到可以访问的ipv4公网IP和端口的相关内容。