使用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