优秀的编程知识分享平台

网站首页 > 技术文章 正文

基于 Cloudflare DNS API 群晖部署 IPv6 DDNS 「 小白玩NAS系列」

nanyue 2025-01-18 22:57:38 技术文章 1 ℃


一、前言

随着国内 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.如果文章对你有所帮助,请点个关注和喜欢,请多多支持!我们一起在学习过程中分享经验!

Tags:

最近发表
标签列表