ddns-cloudflare动态dns

简介

DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。

简单来说就是在你的服务器ip发生变化的时候, 我们要有一种方法去更新dns到ip的解析。

cloudflare ddns解析

cloudflare官方文档

1, 先去cloudflare获取到你的key

登录到cloudflare, 然后 右上角头像 - 我的个人资料 - api令牌 - Global API Key

此key千万不能泄露

获取到你的id

这边要获取到ip

curl --location --request GET 'https://api.cloudflare.com/client/v4/zones?name=itkaoti.top' \
--header 'X-Auth-Email: XXXXXXXXXXX' \
--header 'X-Auth-Key: XXXXXXXXXXX' \
--header 'Content-Type: application/json'

获取响应中的result -> id, 替换下面的yout-id

创建dns记录

下面的请求就是将你的oss.itkaoti.top dns解析到ip

curl --location --request POST 'https://api.cloudflare.com/client/v4/zones/{your-id}/dns_records' \
--header 'X-Auth-Email: XXXXXXXXXXX' \
--header 'X-Auth-Key: XXXXXXXXXXX' \
--header 'Content-Type: application/json' \
--data '{"type":"A","name":"xxx.itkaoti.top","content":"xxx.xxx.xxx.xxx","ttl":120,"priority":10,"proxied":false}'

获取ip

curl  --location --request GET http://ipv4.icanhazip.com

自动解析

替换参数, 保存到文件中

id=XXXXXXXXXXXXX

[email protected]

key=XXXXXXXXXXXXXXXX

host=XXXX.itkaoti.top

ip=`curl -s http://ipv4.icanhazip.com`

echo $ip

curl --location --request POST 'https://api.cloudflare.com/client/v4/zones/'$id'/dns_records' \
--header 'X-Auth-Email: '$email \
--header 'X-Auth-Key: '$key \
--header 'Content-Type: application/json' \
--data '{"type":"A","name":"'$host'","content":"'$ip'","ttl":120,"priority":10,"proxied":false}'

加上定时器

每min执行一次

crontab -e
*/1 * * * * /data/xxx.sh  >> /var/log/cf-ddns.log 2>&1