使用cloudflare的api实现ipv6公网ip的ddns,并实现ipv4访问

首先,现在家里基本都有ipv6的,但是国内的ipv6也是老是变 ,因此还是需要ddns。我是使用cloudlfare的api实现的。

cloudflare的设置

获取cloudlfare的token

首先点击你的域名

在overview的地方,获取Zone ID

这个zone id保存下载,等会要用

右下角找到 Get Your API toen的链接。点击进去

为了省心直接使用了的全局token,你也可以创建一个单独的token

token 复制出来,等会要用。

给域名添加一个ipv6的解析


这里的type要是AAAA,然后ipv6的地址可以随便先写一个。

获取个人信息

这里的目的就是获取上一步骤添加的域名的id。
使用下面的脚本,里面的内容自己看一下改一下

curl -X GET "https://api.cloudflare.com/client/v4/zones/你的zoneid/dns_records" \
     -H "Content-Type:application/json" \
     -H "X-Auth-Key:你的token" \
     -H "X-Auth-Email:登录cloudfalre的邮箱"

拿到的结果不太好看的的话,也可以去 jsonformatter 这个网站格式化一下。
拿到刚才解析的域名的id

写一个shell脚本来更新ipv6的地址


#!/bin/bash
dynamic_ip=`curl -s ipv6.ip.sb`
curl -X PUT "https://api.cloudflare.com/client/v4/zones/你的zoneid/dns_records/你的三级域名的id" \
     -H "Content-Type:application/json" \
     -H "X-Auth-Key:你的token" \
     -H "X-Auth-Email:你登录的邮箱" \
     --data '{"type":"AAAA","name":"h","content":"'${dynamic_ip}'","ttl":1,"proxied":false}'

这个脚本 dynamic_ip=curl -s ipv6.ip.sb 用来获取ipv6的地址。
剩下的地址你看看代码改成自己的
“name”:”你的三级域名前缀” 这里改成你的前缀。比如你的ipv6的域名是:h.baidu.com.这里就写h就行了。

开启ipv4的访问支持

注意:这里打开的前提是你得有https证书才行

也就是打开cf的cdn,这样通过cf自己的服务器中转一下,就OK了。

这里只要把上面的脚本的:

"proxied":false

改成

"proxied":true

就行了。

此时进入到cf查看,发现已经成功了

当然了,如果就是外网访问的话还需要端口映射。

我是上传到openwrt中,每5分钟更新一次。

crontab -e

*/5 * * * * /root/ipv6ddns.sh