DNS的小麻烦——Namecheap到Cloudflare的迁移记

起因

为了搭建本站,才发现原来手里的域名解析的非常混乱,一共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官网后,注册一个账号,然后到控制面板中输入网址,点击添加。

控制面板中输入网址
Cloudflare 添加域名

3、稍等一会儿,Cloudflare会自动扫描你的DNS记录,点击继续。

点击继续
Cloudflare 添加域名

4、Cloudflare会自动显示你的域名当前DNS记录,如果记录有问题或者有遗漏,你可以自己动手添加,然后再点击到下一步。

下一步
Cloudflare DNS记录

5、Cloudflare会询问你使用哪一种CDN套餐,请选择免费CDN套餐。

选择免费CDN套餐
Cloudflare 域名套餐

6、确定后,Cloudflare会给出你的CDN加速的NS服务器地址。

CDN加速的NS服务器
Cloudflare DNS服务器

7、到Namecheap将域名的NS服务器修改为Cloudflare刚刚给出的NS服务器地址,待DNS解析生效后,Cloudflare CDN就算是正式开启了。

DDNS

Namecheap支持DDNS和Url转发,而路由器的梅林系统原生支持namecheap,因此我一直把DDNS放在namecheap解析。研究了一下Cloudflare的DDNS和URL转发也很简单。

梅林固件

首先说梅林的DDNS,梅林没有Cloudflare的原生支持,但是软件中心有个软件可以支持_——cfddns。

cfddns

按照网上的说法,固件版本为 380.70-X7.9.1 的,需要使用 cfddns 1.1.1 版本,

固件版本低于 380.70-X7.9.1 的,需要使用 cfddns 1.0.0 版本,我的软件中心只有一个版本,直接安装即可,如果是离线安装,可以参考选择版本。

CloudFlare参数列表
参数名示例备注
API Keyc2547eb745079dac9320b638f5e225cf483cc5cfdda41Global API Key   
Email[email protected]账户邮箱
Zone Id 023e105f4ecef8ad9ca31a8372d0c353  域名ID  
Record ID372e67954025e0ba6aaa6d586b9e0b59  DNS记录ID      
CloudFlare参数列表
使用 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条评论

发表评论