起因
为了搭建本站,才发现原来手里的域名解析的非常混乱,一共2个域名,目前都在namecheap,当时国内域名商价格高事儿多,而namecheap大约5-60人民币一年,便从国内迁移到了namecheap。这两个域名也不完全在namecheap解析,给雾里机用的域名需要DDNS,放在namecheap,另一个放在cloudflare。现在cloudclare的托管费用比namecheap便宜了许多,只需要$8左右,而namecheap需要$13多,还有几个月到期,计划迁移到cloudflare,但是在迁移之前,索性全放到cloudflare解析,各种好处不表。
更换Cloudflare的DNS
1、官方网站:https://www.cloudflare.com/
2、进入到Cloudflare官网后,注册一个账号,然后到控制面板中输入网址,点击添加。
3、稍等一会儿,Cloudflare会自动扫描你的DNS记录,点击继续。
4、Cloudflare会自动显示你的域名当前DNS记录,如果记录有问题或者有遗漏,你可以自己动手添加,然后再点击到下一步。
5、Cloudflare会询问你使用哪一种CDN套餐,请选择免费CDN套餐。
6、确定后,Cloudflare会给出你的CDN加速的NS服务器地址。
7、到Namecheap将域名的NS服务器修改为Cloudflare刚刚给出的NS服务器地址,待DNS解析生效后,Cloudflare CDN就算是正式开启了。
DDNS
Namecheap支持DDNS和Url转发,而路由器的梅林系统原生支持namecheap,因此我一直把DDNS放在namecheap解析。研究了一下Cloudflare的DDNS和URL转发也很简单。
梅林固件
首先说梅林的DDNS,梅林没有Cloudflare的原生支持,但是软件中心有个软件可以支持_——cfddns。
按照网上的说法,固件版本为 380.70-X7.9.1 的,需要使用 cfddns 1.1.1 版本,
固件版本低于 380.70-X7.9.1 的,需要使用 cfddns 1.0.0 版本,我的软件中心只有一个版本,直接安装即可,如果是离线安装,可以参考选择版本。
CloudFlare参数列表
参数名 | 示例 | 备注 |
API Key | c2547eb745079dac9320b638f5e225cf483cc5cfdda41 | Global API Key |
[email protected] | 账户邮箱 | |
Zone Id | 023e105f4ecef8ad9ca31a8372d0c353 | 域名ID |
Record ID | 372e67954025e0ba6aaa6d586b9e0b59 | DNS记录ID |
使用 cURL 获取 Zone ID
curl -X GET "https://api.cloudflare.com/client/v4/zones" \-H "Content-Type: application/json" \-H "X-Auth-Key: $API_KEY" \ -H "X-Auth-Email: $EMAIL"
其中$EMAIL,$API_KEY改为上表中的值,命令返回结果如下:
{"result": [{"id": "023e105f4ecef8ad9ca31a8372d0c353", //Zone ID }], //......}
结果中的 id 即为 Zone ID
使用 cURL 获取 DNS Record ID
curl -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records" \ -H "Content-Type: application/json" \ -H "X-Auth-Key:$API_KEY" \ -H "X-Auth-Email:$EMAIL"
返回如下响应
{ "result": [{ "id": "$RECORD_ID1", "zone_id": "$ZONE_ID", "zone_name": "$example.com", "name": "test1.example.com", // 具体域名1 "type": "A", //...... }, { "id": "$RECORD_ID2", "zone_id": "$ZONE_ID", "zone_name": "$example.com", "name": "test2.example.com", // 具体域名2 "type": "A", }] //...... }
在响应中找到目标域名对应的 id,
将各个值填入插件即可。
群晖
获取 API
1. 获取 区域 ID
登陆 Cloudflare 点击域名,在概述页面右侧获取区域 ID
.
2. 创建 API 令牌
点击获取您的 API 令牌
后创建令牌
,选择最下的自定义令牌
- 为令牌命名
- 权限选择
区域
–DNS
–编辑
- 其他保持默认即可
保存后生成 API 令牌,请复制保存好该令牌,后续将无法在次查询此令牌
.
配置群晖原生 DDNS
群晖原生 DDNS 并不支持 Cloudflare ,通过 joshuaavalon/SynologyCloudflareDDNS 项目提供的脚本和方案,可以将 Cloudflare 添加到原生 DDNS 列表中.
1. 开启并登陆群晖NAS终端
控制面板 – 终端机和 SNMP – 勾选启用 SSH 功能
macOS 使用终端, Windows 使用 PuTTY 或 Windows Terminal 来登陆群晖.
ssh [email protected] # xxxx为群晖的帐户 sudo -i # 登陆成功后,切换为 root 帐户.
2. 下载 Cloudflare DDNS 脚本
下载 Cloudflare 的 DDNS 脚本文件,官方推荐存放于/sbin/cloudflareddns.sh
并赋予执行权限.
手动修改第六行的 proxy=”true” 为 proxy=”false” 避免被 CDN 代理.新手用户不建议修改存放路径.如需修改,请注意下文所有相关路径都必须同时更改.
wget https://raw.githubusercontent.com/joshuaavalon/SynologyCloudflareDDNS/master/cloudflareddns.sh -O /sbin/cloudflareddns.sh # 下载脚本 chmod +x /sbin/cloudflareddns.sh # 赋予执行权限
3. 新增原生 DDNS 列表
复制粘贴以下命令并执行
cat >> /etc.defaults/ddns_provider.conf << EOF [Cloudflare] modulepath=/sbin/cloudflareddns.sh queryurl=https://www.cloudflare.com website=https://www.cloudflare.com EOF
4. 登陆群晖 DSM – 控制面板 – 外部访问 – DDNS – 新增
- 服务供应商 – 选择 Cloudflare
- 主机名称 – 填写 DDNS 域名
- 用户名 – 填写区域 ID
- 密码 – 填写上文生成的 API 令牌
确定后稍等一会就会显示正常即配置成功
主机名称强烈推荐 不要
使用根域名
,单独为 DDNS 选择一个专用域名,如需使用根域名访问家中服务,可以添加根域名
的 CNAME 指向 DDNS 域名即可.具体可参考下图:
SSL证书
现在的网站https是必须的,原来的两个域名都是部分部署了let’s encrypt的证书,有的已经过期了,Clouflare的好处之一就是可以申请完全免费的证书,而且有效期15年。申请非常简单。
在域名下选则“源服务器”
点击“创建证书”,默认自带泛域名和根域名,填入自己要生成证书的域名,点击创建即可。
得到两串字符,对于Nginx,将源证书复制,粘贴到xxx.crt中,私钥粘贴到xxx.key中,点击确定即可完成。注意这一步一定要把“私钥”复制出来,后续步骤不再显示。
迁移
域名迁移的相关细节,待域名迁移完成后补充。
《DNS的小麻烦——Namecheap到Cloudflare的迁移记》有1条评论