Excellent software and practical tutorials
群晖NAS添加原生CloudFlare DDNS功能的详细指南
群晖(Synology DSM)系统原生DDNS功能不支持CloudFlare,但可以通过一个开源脚本轻松添加CloudFlare作为DDNS提供商,从而实现动态域名解析(DDNS),让你的NAS在公网IP变化时自动更新域名记录。这适用于DSM 7.x及以上版本,操作简单,但需要SSH访问权限。整个过程无需第三方插件,完成后可在DSM的DDNS界面直接配置。以下是基于可靠教程的完整步骤。
前提准备
- CloudFlare账户和域名:确保你有一个已添加到CloudFlare的域名,并使用CloudFlare的NS服务器。
- GetZone ID:登录CloudFlare仪表盘,进入域名概览页面,复制“Zone ID”(也称Zoom ID,通常是32位十六进制字符串,如023e105f4ecef8ad9ca31a8372d0c353)。
- createAPI Token:
- access CloudFlare API Tokens页面.
- 点击“创建令牌”,选择“Edit zone DNS”模板。
- 权限设置为默认(Zone: DNS > Edit),区域选择“Include > Specific zone”(指定你的域名)。
- 生成后复制Token(注意:Token可在“Deployments”部分找回,但不在“API Keys”中)。
- 启用群晖SSH:
- 在DSM控制面板 > 终端机和SNMP > 勾选“启用SSH服务”(端口默认22)。
- 准备SSH工具,如PuTTY、Xshell或Windows的OpenSSH。
- Precautions:备份NAS配置;API Token需保密;推荐为DDNS创建子域名,并在CloudFlare DNS中添加A记录(代理关闭,即橙色云图标为灰色),初始IP可任意填写。
步骤1: 通过SSH安装脚本
- 使用SSH工具连接NAS:
- 主机:NAS的IP地址,端口:22。
- 用户名:你的DSM管理员账户,密码:DSM登录密码。
- 登录后提示符如admin@NASName:~$。
- 切换到root用户:
- 输入sudo -i(或su root),再输入管理员密码(输入时不显示字符)。
- 成功后提示符变为root@NASName:~#。
- 下载并安装脚本:
- 运行以下命令下载脚本(这是一个开源的CloudFlare DDNS安装脚本):
curl -L https://raw.githubusercontent.com/timothymiller/synology-cloudflare-ddns/master/cloudflare.sh -o /sbin/cloudflare
- 如果下载失败或HTTP错误,尝试修改脚本(用vi /sbin/cloudflare编辑第6行,将proxy="true"改为proxy="false")。
- 赋予执行权限:
chmod +x /sbin/cloudflare
- 运行脚本添加CloudFlare到DDNS列表:
/sbin/cloudflare
脚本会自动检测并添加CloudFlare作为提供商,重启DDNS服务(可能需几分钟生效)。
- 运行以下命令下载脚本(这是一个开源的CloudFlare DDNS安装脚本):
- 退出root和SSH:
- 输入exit退出root,再exit退出SSH。
warn:脚本运行时会修改系统文件(如/etc.defaults/ddns_provider.conf),若DSM升级可能覆盖;建议在升级前备份/etc/ddns_provider.conf。如果脚本报错,检查网络或手动下载脚本内容粘贴。
步骤2: 在DSM中配置DDNS
- 打开DSM控制面板 > 外部访问 > DDNS。
- 点击“添加”按钮。
- 填写配置:
- 服务提供商:选择“CloudFlare”(脚本添加后会出现)。
- 主机名:输入你的子域名(如nas.example.com),确保在CloudFlare DNS中已添加对应A记录(代理关闭)。
- 用户名/电子邮件:粘贴Zone ID。
- 密码/密钥:粘贴API Token。
- 外部地址:选择“使用当前IP地址”或自动。
- 点击“测试连接”验证(应显示“连接成功”)。
- 点击“应用”保存并启用。
步骤3: 验证和测试
- 在CloudFlare DNS页面检查子域名的A记录IP是否更新为你的公网IP(用curl ifconfig.me查当前IP)。
- 外部访问测试:用浏览器访问http://nas.example.com:5000(DSM默认端口),应看到DSM登录页。
- IP变化测试:模拟IP变(或等运营商重启),几分钟后检查记录是否更新。
常见问题与注意
- 脚本失效:若DSM版本更新导致脚本失效,重新运行安装命令,或参考GitHub仓库 timothymiller/synology-cloudflare-ddns renew.
- 代理问题:CloudFlare代理(橙云)会隐藏真实IP,不适合DDNS;必须关闭。
- Security:API Token仅限DNS编辑权限;若多域名,创建专用Token。
- 替代方法:若不想用脚本,可用Docker运行CloudFlare DDNS容器,或第三方如DNS-O-Matic中转,但原生脚本最简洁。
通过以上步骤,你就能在群晖上实现原生CloudFlare DDNS,享受免费、可靠的动态解析。如果遇到具体错误,建议检查DSM日志(控制面板 > 日志中心)。
Usage scenarios
有外网, 有域名, 域名托管在cloudflare, 需要DDNS解析, 又不太想用ddns-go
使用步骤
配置群晖
- SSH连接到群晖, 切换到root用户, 然后执行
wget https://mirror.czl.net/https://raw.githubusercontent.com/joshuaavalon/SynologyCloudflareDDNS/master/cloudflareddns.sh -O /sbin/cloudflareddns.sh
- 给脚本权限
chmod +x /sbin/cloudflareddns.sh
- 将cloudflare的ddns脚本加到群晖系统先粘贴
cat >> /etc.defaults/ddns_provider.conf << EOF
然后粘贴
[Cloudflare] modulepath=/sbin/cloudflareddns.sh queryurl=https://www.cloudflare.com website=https://www.cloudflare.com
最后粘贴
EOF
就保存好了
获取 Cloudflare 参数
- 获取区域 ID。
- 获取可修改DNS records的API KEY
设置 DDNS
- 主机名是要设置的二级域名
- 用户名/电子邮件部分填区域ID
- 密码/密钥填API KEY
保存启用即可.
