最近因为一些事情,不敢再使用国内的dns解析商,故转而使用国外的dns解析商;本来想使用dns.he.net提供的服务,但是对一些免费的域名(tk\ml\cf)不友好,故换为Cloudflare的dns解析,具体地域名申请、域名解析操作这类教程,网上已经有很多,在此不做更多的说明,重点说说关于DDNS的操作。
Cloudflare提供了功能强大的api,根据自身的网络拓扑结构,可以很方便的更新公网IP到dns解析服务上。如果你的公网ip在电脑上(即通过PPPoE拨号上网),ddns的方法就很多了,可以使用Python脚本,使用requests、json这两个库,就可以搞定ddns配置,如果是在路由上,就要使用Linux shell来实现,在此将脚本列出并作以说明
ipl=$(ifconfig pppoe-cy | 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}'
特别地,参数ipl(ip local)是通过本地命令获得的公网ip地址,参数ip则是通过外网来确定的公网ip。公网ip的判断是基于自身网络的情况,如多拨后拥有多个公网ip,做负载均衡的时候的nat配置,则需要通过参数ipl来制定通过哪一个公网IP访问