Openwrt基于ipv6更新DNS的cloudflare_shell脚本

这篇具有很好参考价值的文章主要介绍了Openwrt基于ipv6更新DNS的cloudflare_shell脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近折腾了一下内网穿透,发现如果有ipv6的话,防火墙开启相应端口,可以直接从外面用ipv6访问内网服务器,虽然省去了ipv4的端口转发等麻烦事儿,但是ipv6还是经常变动的,所以搞了个免费域名,在cloudflare托管了。然后在路由器用shell 写一个更新dns的脚本,定时运行,更新托管的域名对应设备的最新ipv6地址,就可以在外面随时访问路由器管理luci界面了,下面贴一下脚本,做个备份,方便不时之需。

如果你也有同样的需求,可以参考一下,要修改的地方我都注释了,要用这个脚本,前提是你得有一个域名,最好对应的ssl也申请了,因为把路由器对外访问放开了,https+ssl 还是要安全些,然后你的域名在cloudflare托管好了,并且你对怎么在cloudflare获取zone_id, dns_id, apikey 这些都很熟悉,不熟悉的话就去度娘教程。

另外,因为cloudflare返回值是json格式,所以最好安装一下jq这个工具,可以用下面的命令安装:

opkg update && opkg install jq

脚本如下:

#!/bin/sh

updns() {
	while getopts ':a:d:e:i:p:z:' OPT; do
		case $OPT in
		a) local api_key=$OPTARG ;;
		d) local ddns_nm=$OPTARG ;;
		e) local e_mail=$OPTARG ;;
		i) local proj_id=$OPTARG ;;
		p) local ip=$OPTARG ;;
		z) local zone_id=$OPTARG ;;
		esac
	done
	if [ ! ${api_key} ] || [ ! ${ddns_nm} ] || [ ! ${e_mail} ] || [ ! ${proj_id} ] || [ ! ${ip} ] || [ ! ${zone_id} ]; then
		echo 1
		return 1
	fi
	res=$(curl -X PUT "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${proj_id}" \
		-H "X-Auth-Email: ${e_mail}" \
		-H "X-Auth-Key: ${api_key}" \
		-H "Content-Type: application/json" \
		--data '{"type":"AAAA","name":"'"${ddns_nm}"'","content":"'"${ip}"'","ttl":7200,"proxied":false}' -s |
		jq .success | tr 'A-Z' 'a-z')
	if [ ${res} == 'true' ]; then
		echo 0
		return 0
	else
		echo 2
		return 2
	fi
}

hp=1
while getopts ':c' OPT; do
	case $OPT in
	c) hp=0 ;;
	esac
done
ipdat='/root/ipv6_addr_dat' # 这个是临时保存ipv6地址的文件,你可以自定义位置和名称
subj="ipv6_ddns,$(date +%Y%m%d%H%M%S)"
devx="wlan1" # 你的拥有运营商ipv6设备名,比如我是中继wifi上网的,wlan1拥有ipv6地址
ipdatc=$(head -n 1 ${ipdat})
ipv6=$(ip -6 addr show dev ${devx} | grep "/128 scope global" | awk '{print $2}' | awk -F "/" '{print $1}')
if [ ! ${ipv6} ]; then
	echo "${subj},${devx} has no ipv6 addr..." | logger -t ddns
	exit 1
fi

if [ "${ipv6}" != "${ipdatc}" ]; then
	echo ${ipv6} >${ipdat}
	xt=0
else
	xt=1
fi

if [ ${hp} -eq 0 ] || [ ${xt} -eq 0 ]; then
	pid='37iy7chsa0wp2ulzezraya6izt82keow'       # 你在cloudflare上的dns id
	zid='58ga8r5homn2myzw1qkoanwg051m2xa2'       # 你在cloudflare 上的域名zone_id
	email='example@mail.com'                     # 你在cloudflare上的账号邮箱
	akey='0fwx0m388nrfy16zgd8gk5yxmudcuop01g3hr' # 你在cloudflare上的api key
	dnm='example.com.cn'                         # 你在cloudflare上托管的域名
	res=$(updns -a "${akey}" -d "${dnm}" -e "${email}" -i "${pid}" -p "${ipv6}" -z "${zid}")
	if [ ${res} -eq 0 ]; then
		echo "${subj},${devx} [${ipv6}] upd successful..." | logger -t ddns
		exit 0
	else
		echo "${subj},${devx} ipv6 addr update failed..." | logger -t ddns
		exit 3
	fi
else
	echo "${subj},${devx} ipv6 addr has not changed, no need to be update..." | logger -t ddns
	exit 2
fi

脚本每次运行都会先对比当前设备ipv6地址和保存在 /root/ipv6_addr_dat (这个文件你可以在脚本里面自定义位置和名称)里面得ipv6地址,如果不同,就把设备ipv6地址写入这个文件,如果相同就不会再更新cloudflare。当然,如果你要强制更新,可以在运行脚本时加一个可选参数-c,就会主动更新了,假如脚本名称为ipv6_ddns.sh, 运行时 ./ipv6_ddns.sh -c 就会强制更新, ./ipv6_ddns.sh 就会有判断得更新。

PS: 补充一下,怎么开启防火墙ipv6端口。

进入luci管理界面—网络—防火墙—通信规则,点下面的添加按钮。
cloudflare ddns ipv6,智能路由器,网络
名称,端口,自己指定,其他照着选择和填写就可以了。

cloudflare ddns ipv6,智能路由器,网络
cloudflare ddns ipv6,智能路由器,网络
折腾之前最后多搜索学习相关教程,好了!文章来源地址https://www.toymoban.com/news/detail-529785.html

到了这里,关于Openwrt基于ipv6更新DNS的cloudflare_shell脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Openwrt二级路由获取IPV6

    由于没有公网IPV4,便研究了一下公网IPV6。网上大部分是将光猫改为桥接,然后路由拨号,获取公网IPV6地址,但目前不想这样做。研究一下,二级路由下的IPV6获取。 按照网上的说明,二级路由一般使用中继的方式获取,照猫画虎,试了一下 1、首先wan6设置   2、然后lan口设置

    2024年02月04日
    浏览(47)
  • OpenWrt之IPv6设置详解

    最近电信终于肯下发v6的地址了, 得为路由器配置一下了, 之前一直是处于关闭的状态, 今天重新设置回去. 从此有了v4与v6双公网地址. 光猫设置为 桥接 路由器设置为 PPPoE拨号 其他设备 均通过 无线/有线 方式接入路由器 以下内容全在OpenWrt 22.03及以上版本进行 选择 网络 - 接口

    2024年02月09日
    浏览(55)
  • OpenWrt路由器设置IPv6域名动态解析,同时实现IPv4设备访问IPv6节点

    前不久刚写了一篇《OpenWrt路由器设置域名动态解析手把手教程》,对ipv4动态解析有了基本的认识。但随着ipv4地址的匮乏,很多地方已经不提供公网的动态ip了,只有ipv6公网地址可以访问了。于是想在上一篇博文的基础上补充ipv6的设置,并增加ipv4设备访问ipv6地址的解析方法

    2024年02月08日
    浏览(60)
  • OpenWrt 软路由 IPV6 配置 DDNS

    一、申请 dynv6 账号 1、去官网注册一个账号,不过人机验证那块需要 \\\"梯子\\\" 才能注册成功 Free dynamic DNS for IPv6 2、注册成功后,创建一个 Domain,这是我已经创建好的 3、输入一个你自己的域名,后缀选择 dynv6.net  4、创建好后,点到这个域名下面,切换到 instructions 获取 密码

    2024年02月12日
    浏览(61)
  • 在OpenWrt上配置原生IPv6 NAT,,实现校园网路由器使用ipv6

    我的环境 网络:教育网原生双栈,IPv4地址固定,IPv6地址自动获取 固件版本:OpenWrt Chaos Calmer 15.05-rc2 r45918 内核版本:3.18.14 准备工作 步骤如下,将网线插入校园网墙上的网口,另一端连接上电脑。之后按照以下示例操作。(以下步骤同样适用于用来实现电脑连接宿舍有线网

    2024年02月06日
    浏览(49)
  • OpenWrt 软路由解析公网IPV6域名访问家庭NAS的问题答疑

    1、非要使用 Padavan 或者 OpenWrt固件的软路由才能IPV6公网访问吗? 答:这个并不是这样的,一般家用路由器都无法放行防火墙规则,这种情况当然无法实现IPV6公网访问,但是少部分路由器是可以的,只要有防火墙设置功能基本都可以,再打开路由器的端口映射,DZM,UPNP这些就

    2024年02月07日
    浏览(78)
  • OpenWRT中的DDNS-GO无法获取软路由IPV6地址

    移动的宽带没有公网ipv4地址,但可以获得公网ipv6地址,这就让远程访问软路由成为了可能,但DDNS-GO却报错: 2024/01/31 02:21:07 连接失败! 点击查看接口能否返回IPv6地址, 参考说明:点击访问 2024/01/31 02:21:07 错误信息: Get \\\"https://speed.neu6.edu.cn/getIP.php\\\": dial tcp6: lookup speed.neu6.edu.cn

    2024年03月13日
    浏览(108)
  • 动态更新阿里云DDNS解析记录的IPv6地址,随时随地用域名远程访问自己的电脑【如何远程访问家里的电脑】

    [2023-04-03 19:56]: 放弃了安卓版,修正了文章中的一些错误,并改用了ddns-go [2022-09-21 23:59]: 此工具后续将推出安卓版,敬请期待 [2022-09-21 03:48]: 之前与群友“不将就”的讨论发现了一大堆问题,软件经行了大改,请重新下载安装。 [2022-09-20 18:22]: 发现并修复了一个bug,I

    2024年02月06日
    浏览(70)
  • 基于eNSP的IPv4加IPv6的企业/校园网络规划设计(综合实验/大作业)

    有什么问题可以在评论区说明自己遇到的情况,博主看到会第一时间回复,希望其他人也可以回复别人的问题 。 可根据以下所提供的设计与实现步骤过程一步一步自行实现(每一条命令都是关键的命令);但是如果有需要的也可以根据以下地址进行下载完整的topo图和完整的

    2024年02月01日
    浏览(55)
  • 基于eNSP的IPv6校园网络规划与设计_综合实验

    有什么问题可以在评论区说明自己遇到的情况,博主看到会第一时间回复,希望其他人也可以回复别人的问题 。 可根据以下所提供的设计与实现步骤过程一步一步自行实现(每一条命令都是关键的命令);但是如果有需要的也可以根据以下地址进行下载完整的topo图和完整的

    2024年02月03日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包