步骤一:到CloudFlare官网注册一个帐号,找到DNS选项,如下图箭头指向,根据其要求,到你的域名注册商处将DNS服务器修改为CloudFlare提供的地址,修改完验证成功后就可以开始解析了。

2020-02-20T06:28:30.png

步骤二:先添加一个二级域名解析,按照图示方法添加后点击Add Record保存

2020-02-20T06:30:57.png

步骤三:获取三个Key值,其中APIKey和ZoneID可在官网登录后的Overview页面获得,而DNSID获取较为复杂,具体命令如下(需要安装curl):

curl -X GET "https://api.cloudflare.com/client/v4/zones/输入你的ZoneID/dns_records?type=A&name=刚才设置的记录值(比如xxx.yourdomain.com)" \
-H "X-Auth-Email:你注册时的邮箱" \
-H "X-Auth-Key:你的APIKEY" \
-H "Content-Type: application/json"

运行该命令后会输出结果,找到"id":"xxx"这个选项,其中的xxx即对应你的DNSID值

另:

OpenWrt/Pandorabox 使用 Curl 命令访问 https 链接报错的解决方法:

在没有安装 ca-bundle 时,使用 curl 访问 HTTPS 链接会出现错误 curl: (77) Error reading ca cert file /etc/ssl/certs/ca-certificates.crt - mbedTLS: (-0x3E00) PK - Read/write of file failed
OpenWrt / Pandrabox 官方固件并不支持 HTTPS,因此 wget, curl 甚至于 opkg 中都不能使用 HTTPS,因此安装 HTTPS 支持就很有必要了。

方法:

opkg update
opkg install wget ca-certificates openssl-util ca-bundle

步骤四:用以下脚本更新IP

ipl=$(ifconfig pppoe-wan | awk '/inet addr/{print substr($2,6)}')
ip=$(curl -s http://ipv4.icanhazip.com)
curl -k -X PUT "https://api.cloudflare.com/client/v4/zones/zones_ID填写/dns_records/域名的ID" \
         -H "X-Auth-Email:个人的邮箱" \
         -H "X-Auth-Key:个人的API key" \
         -H "Content-Type: application/json" \
         --data '{"type":"A","name":"域名","content":"'${ipl}'","ttl":120,"proxied":false}'

将其保存为脚本 ddns.sh 定时执行

特别地,参数ipl(ip local)是通过本地命令获得的公网ip地址,参数ip则是通过外网来确定的公网ip。公网ip的判断是基于自身网络的情况,如多拨后拥有多个公网ip,做负载均衡的时候的nat配置,则需要通过参数ipl来制定通过哪一个公网IP访问