简介
DDNS是将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
简单来说就是在你的服务器ip发生变化的时候, 我们要有一种方法去更新dns到ip的解析。
cloudflare ddns解析
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