网站首页 > 技术文章 正文
一、前言
随着国内 IPv6 网络的普及,现在普通家庭宽带基本上都能拿到公网 IPv6 地址了。
有了公网 IPv6 地址,也就可以在家里搭一个对外的服务了。
和以前的公网 IPv4 地址一样,家庭宽带的公网 IPv6 地址也不是固定的。所以我们必须把动态的 IPv6 地址映射到一个静态的域名上,也就是使用 DDNS 服务。
本文将介绍如何利用 Cloudflare DNS API 来实现群晖 IPv6 DDNS。
二、示例环境
· NAS系统:群晖DSM918+
- DDNS 域名:dsm.t2nas.eu.org
- 裸域名:t2nas.eu.org
三、操作步骤
3.1 获取裸域名的 Zone ID 及 API Key
在域名控制面板右下方的 API 一栏可直接获取到 Zone ID。API Key 则需要点击该栏下方的「Get your API key」,然后输入密码(可能还要验证码)确认才可获取。如下图:
3.2 添加子域名的 AAAA 记录
点击域名控制面板的「DNS」选项卡,如下图:
1、记录类型选择「AAAA」,也就是 IPv6 地址记录。
2、Name 一栏填写子域名。例如 DDNS 域名是 dsm.t2nas.eu.org 的话这里就填写 dsm。
3、IPv6 address 一栏填写 ::1 即可。
4、由于这里不使用 CDN 功能,所以需要点击一下橙色的云图标让其变为灰色
5、TTL 选择 「2 minutes」。
6、点击「Add Record」即可添加记录。
3.3 查询刚才添加的 AAAA 记录的 ID
按以下格式执行命令:
curl -s -X GET "https://api.cloudflare.com/client/v4/zones/<刚才获取的 Zone ID>/dns_records?type=AAAA&name=<DDNS 域名>&content=127.0.0.1&page=1&per_page=100&order=type&direction=desc&match=any" \
-H "X-Auth-Email: <Cloudflare 账号的邮箱地址>" \
-H "X-Auth-Key: <刚才获取的 API Key>" \
-H "Content-Type: application/json" \
| python -m json.tool
例如
运行结果
命令执行后会返回一段 JSON,找到 DDNS 域名对应的那个 Object,其中 id 的值就是刚才添加的 AAAA 记录的 ID。
3.4 创建 DDNS 脚本
请按实际情况修改以下内容,完成后粘贴到命令行窗口中按回车即可。
cat << EOF > /etc/ipv6-ddns.sh
#!/bin/sh
sleep 10
IP6=\`ip -6 addr show dev <拥有公网 IPv6 地址的接口名> | grep global | awk '{print \$2}' | awk -F "/" '{print \$1}'\`
[ -z \$IP6 ] && exit
curl -X PUT "https://api.cloudflare.com/client/v4/zones/<刚才获取的 Zone ID>/dns_records/<刚才获取的 AAAA 记录 ID>" -H "X-Auth-Email: <Cloudflare 账号的邮箱地址>" -H "X-Auth-Key: <刚才获取的 API Key>" -H "Content-Type: application/json" --data '{"type":"AAAA","name":"<DDNS 域名>","content":"'"\${IP6}"'","ttl":120,"proxied":false}'
EOF
chmod +x /etc/ipv6-ddns.sh
例如
3.5 试运行 DDNS 脚本
执行以下命令:
/etc/ipv6-ddns.sh | python -m json.tool
稍等片刻。如果执行结果中出现 "success":true 的话,说明域名的 AAAA 记录已经更新成功。例如:
3.6 添加计划任务
下面我们设定每分钟执行一次 DDNS 脚本。
在群晖的控制面板,计划任务中,选择新增任务,任务名称可以随便填写,这里写ipv6 ddns update,用户需要切换为root,见下图:
在“计划”选项中,选择运行的频率,为了提高计划任务更新频率,可以将运行频率设置为每分钟,这样可以及时更新IP地址。
在任务设置中,用户定义的脚本,输入以下命令。也可以输入电子邮件地址,以便在运行发生错误时提醒管理员。
标签:动态域名解析、IPV6、群晖
原创性声明:
1.请支持原创文章。
2.转载需要在文章开头或结尾注明来源信息:头条号PVE虚拟NAS专家。
3.若发现未经授权转载者,一律举报。毕竟原创不易,感谢您对头条号PVE虚拟NAS专家的认可和理解。
4.如果文章对你有所帮助,请点个关注和喜欢,请多多支持!我们一起在学习过程中分享经验!
猜你喜欢
- 2025-01-18 弱类型语言的php对于 0 、"0"、"000" 、"00" 判断与处理问题
- 2025-01-18 word中公式输入方法
- 2025-01-18 VLOOKUP函数之另类用法,让领导对你刮目相看
- 2025-01-18 LOOKUP中0,1是什么鬼,困扰我多年的疑惑,这课讲明白了
- 2025-01-18 Excel – 在多个匹配结果中,按规定查找出第n个结果
- 2025-01-18 从入门到提高一一函数定义域
- 2025-01-18 C语言return 0一定要有吗?
- 2025-01-18 什么是0℃恒温器?
- 2025-01-18 VLOOKUP函数只能从左向右匹配查找?与IF函数搭配实现逆向查找
- 2025-01-18 TCP连接状态的多种判断方法
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)