openwrt域名超简单ddns动态解析OpenWrt快速实现DDNS动态ip的解析sh脚本利用DNS解析API接口ipv6

电报群:https://t.me/pcdn3(这里朋友众多,相互学习。)
B站视频ipv6:https://www.bilibili.com/video/BV1K3411D7CC/
YouTube视频ipv6:https://youtu.be/yYII0hPmSj0
B站视频ipv4:https://www.bilibili.com/video/BV1rv4y197m9/
youtube视频ipv4:https://youtu.be/MBL4WmEw-08

从gcore申请API接口秘钥
创建秘钥的链接地址:https://accounts.gcore.com/profile/api-tokens
点击创建

ddns动态解析-gcoreAPI.png
ddns动态解析-gcoreAPI.png (202.11 KiB) 

选择画横线部分点击右上角

ddns动态解析gcoreAPI1.png
ddns动态解析gcoreAPI1.png (136.21 KiB) 

复制并保存创建的秘钥

ddns动态解析gcoreAPI2.png
ddns动态解析gcoreAPI2.png (146.74 KiB) 

添加一条dns解析记录 ip地址顺便填写

ddns动态解析11.png
ddns动态解析11.png (71.46 KiB) 

下载: https://cowtransfer.com/s/822f27fce54b4c 点击链接查看 [ ddnsip.sh ] 

把下面代码保存成 .sh文件 修改成自己的域名和API秘钥

代码   第一期视频ipv4代码

#!/bin/sh
# */5 * * * * sh /etc/ddns/ddnsip.sh
DOMAIN='openwan.ml'
HOST='www.openwan.ml'
API="https://api.gcorelabs.com/dns/v2/zones/$DOMAIN/$HOST/A"
IP="$(curl -s http://4.ipw.cn)"
IPDIR="$(cd "$(dirname "$0")";pwd)/IP"
if [ -f $IPDIR ]; then
  LASTIP="$(cat $IPDIR)"
else
  LASTIP="0.0.0.0"
fi
if [ "$IP" != "$LASTIP" ]
then
  echo $IP > $IPDIR
  echo 'IP Update'
  echo $IP
  RESPONSE="$(curl -s --request PUT --url $API \
  --header 'Content-Type: application/json' \
  --header 'Authorization: APIKey 3927$b253f437bfc35873eef5aa9188f0ce60c40873189736f9dc58dc22c9849a8cda154d2b167a7dbe12ef7fd391d9eff8c180379440f9bc258765c3e1e2ec872ca8' \
  --data '{ "resource_records": [{"content": ["'$IP'"]}]}')"  
  echo $RESPONSE | grep -E "<code>(200|280|300)</code>" &>/dev/null
else
  echo 'IP Not Need Update!'
  echo $IP
fi
ddns动态解析13.png
ddns动态解析13.png (284.81 KiB) 

ipv6脚本ddns动态域名解析

代码:第二期视频ipv6

#!/bin/sh
# */5 * * * * sh /etc/ddns/ddnsip.sh
#这里填写想要的解析  A代表ipv4解析 AAAA代表ipv6解析
IP46='AAAA'
DOMAIN='openwan.ml'
HOST='www.openwan.ml'
API="https://api.gcorelabs.com/dns/v2/zones/$DOMAIN/$HOST/$IP46"
if [ $IP46 != AAAA ]; then
#ipv4地址
   IP="$(curl -s http://4.ipw.cn)"
   #echo $IP;
else
#ipv6地址
   IP=$(ip -o addr show |grep -v deprecated|grep ' inet6 [^f:]'|sed -nr 's#^.+? +inet6 ([a-f0-9:]+)/.+? scope global .*? valid_lft ([0-9]+sec) .*#\2 \1#p'|grep 'ff:fe'|sort -nr|head -n1|cut -d' ' -f2)
   #echo $IP;
fi
IPDIR="$(cd "$(dirname "$0")";pwd)/IP"
if [ -f $IPDIR ]; then
  LASTIP="$(cat $IPDIR)"
else
  LASTIP="0.0.0.0"
fi
if [ "$IP" != "$LASTIP" ]
then
  echo $IP > $IPDIR
  echo 'IP Update'
  echo $IP
  RESPONSE="$(curl -s --request PUT --url $API \
  --header 'Content-Type: application/json' \
  --header 'Authorization: APIKey 4140$b70129818bbba7a06304b597609fb7d21bdf25fb0d9f9a02fde1299448662999ba76dddf086b7e2df5282c8c0a0e6efb13e0d339bd89e19a646effaa0c34a2' \
  --data '{ "resource_records": [{"content": ["'$IP'"]}]}')"  
  echo $RESPONSE | grep -E "<code>(200|280|300)</code>" &>/dev/null
else
  echo 'IP Not Need Update!'
  echo $IP
fi




修改好代码上传到openwrt上的etc/ddns目录

ddns动态解析12.png
ddns动态解析12.png (206.59 KiB) 

登录openwrt前台点击系统 计划任务

ddns动态解析14.png
ddns动态解析14.png (189.48 KiB) 

复制定时计划代码(*/5 * * * * sh /etc/ddns/ddnsip.sh) 粘贴到下面提交

ddns动态解析15.png
ddns动态解析15.png (96.57 KiB) 

启动计划任务服务 cron 设置好后重启openwrt试试

ddns动态解析16.png
ddns动态解析16.png (93.42 KiB) 
ddns动态解析17.png
ddns动态解析17.png (90.96 KiB) 

成功启动每间隔5分钟执行一次ip查询,ip有变化自动更新到dns。
任务运行两次后 在/etc/ddns目录下就会有ip这个文件就是目前IP地址