概览
动态 DNS 解决 IP 变动问题,不是所有托管问题的万能钥匙
许多家庭和小型办公网络的公网 IP 会不时更换。动态 DNS 让域名指向当前地址,确保 VPN、仪表盘、测试站点或自托管应用可访问。GhostlyDDns 专注于 Cloudflare 区域,更新你已创建的记录。
适用性检查
当 Cloudflare 是你的 DNS 权威源时使用 GhostlyDDns
最佳适用场景是公网地址可能变化但域名需保持可用的网络。如果路由器或托管服务已能满足你对 Cloudflare 更新的需求,可能不需要额外代理。
GhostlyDDns 的适用场景
- 你使用 Cloudflare DNS,且已有想要维护的 A 或 AAAA 记录。
- 你的家庭、办公、实验室或备用网络拥有变动的公网 IP。
- 你希望将 Cloudflare API 令牌本地存储,而非放在第三方 DDNS 服务中。
- 你需要在 Windows、Linux 或 Linux ARM 上使用相同的配置风格。
何时选择更简单的 DDNS 方案
- 你的网络提供商分配静态公网 IP,DNS 很少变更。
- 你的路由器已使用限定权限的凭证安全更新 Cloudflare,并提供有用日志。
- 你需要托管仪表盘、团队访问控制、警报和托管支持。
- 你期望工具在版本一中从无创建 Cloudflare 记录。
目录
Cloudflare 更新
GhostlyDDns 仅在公网 IP 实际变化时更新
代理检查你的公网 IPv4 和 IPv6 地址,与上次值比较,仅在 A 或 AAAA 记录需更新时调用 Cloudflare API,保持更新循环安静,避免不必要的 API 流量。
A 记录跟随当前 IPv4 地址
IPv4 服务如家庭 VPN 终端、小型仪表盘、反向代理或测试站点使用 A 记录。
当主机拥有 IPv6 时,AAAA 记录可跟随 IPv6 地址
仅当机器拥有稳定的 IPv6 路由时启用 IPv6,否则保持 IPv6 检测器关闭。
Cloudflare 调用保持变更感知
GhostlyDDns 先比较值,仅在 DNS 目标需变更时更新 Cloudflare。
隐私与安全
本地执行让敏感部分靠近你的网络
GhostlyDDns 无需托管控制面板。Cloudflare API 令牌保存在运行代理的机器上,日志本地保存,更新循环可在防火墙、调度器或 systemd 服务后运行。
使用最小权限的 Cloudflare API 令牌
令牌权限限定在 GhostlyDDns 实际需要的区域和 DNS 编辑权限。不要为简单 DDNS 任务复用全账户令牌。
像保护秘密一样保护 YAML 文件
配置中可包含 Cloudflare API 令牌。保持文件权限严格,避免将令牌粘贴到截图、工单或公开日志中。
更新循环运行于你指定的位置
GhostlyDDns 不依赖外部控制面板。调度器、防火墙、日志和重试策略均由你自行管理。
监控失败情况,无需关注每次正常运行
预期静默成功运行。注意非零退出码、重复的 Cloudflare 失败和停止响应的检测端点。
设置流程
可靠流程是先确定区域,再限定令牌,最后设置调度器
干净的 DDNS 设置主要是准备工作。先创建记录,将 Cloudflare 令牌限定到区域,进行干运行测试,然后将代理放入适合你操作系统的调度程序中。
创建记录
先在 Cloudflare 添加 A 或 AAAA 记录,选择代理模式,测试时使用临时主机名。
限定令牌权限
创建仅能编辑指定区域 DNS 的 Cloudflare API 令牌,权限不宜过宽。
运行干运行检查
使用干运行命令确认配置、记录名、检测器和 Cloudflare 访问权限,确保上线更新前无误。
调度代理
通过定时器运行一次或作为服务持续运行,首次几次 IP 变更时检查日志和退出码。
配置
一个 YAML 文件描述令牌、记录、间隔、IP 检测和日志
保持配置简洁易审查。安全存储令牌,设置符合需求的轮询间隔,仅在主机有真实 IPv6 路由时启用 IPv6,列出所有需跟随公网 IP 的 Cloudflare 记录。
核心命令行指令
启用重复任务前先用干运行,显示 GhostlyDDns 会更新的内容,避免首次设置盲目变更生产环境。
ghostly-ddns init-config --path ./config.yaml
ghostly-ddns dry --config ./config.yaml
ghostly-ddns once --config ./config.yaml
ghostly-ddns run --config ./config.yaml
ghostly-ddns --help
ghostly-ddns --version示例 YAML 配置
具体数值取决于你的 Cloudflare 区域和记录名,但配置结构足够简洁,便于常规代码审查。
cloudflare:
api_token: CF_API_TOKEN
update:
interval_seconds: 120
ip_detection:
detect_ipv4: true
detect_ipv6: false
v4_endpoints:
- https://api.ipify.org
- https://ipv4.icanhazip.com
v6_endpoints:
- https://api6.ipify.org
logging:
retention_days: 30
records:
- name: home.example.com
type: A
proxied: true
ttl: auto部署
像运行小型基础设施服务一样运行 GhostlyDDns
Linux 下使用 systemd 服务和定时器方便重启和审计。Windows 下用任务计划程序定时运行相同命令。日志应易查,配置文件权限应严格。
Linux systemd 计时器
尽可能使用专用服务账户,且将配置保存在受保护目录。
[Unit]
Description=Run GhostlyDDns
[Service]
Type=oneshot
ExecStart=/usr/local/bin/ghostly-ddns once --config /etc/GhostlyDDns/config.yaml
[Timer]
OnBootSec=60
OnUnitActiveSec=120
Unit=ghostly-ddns.service
[Install]
WantedBy=timers.targetWindows 任务计划程序
每隔几分钟运行相同命令行指令,监控正常操作流程中的非零退出码。
schtasks /Create ^
/SC MINUTE /MO 5 ^
/TN "GhostlyDDns" ^
/TR "C:\GhostlyDDns\ghostly-ddns.exe once --config C:\GhostlyDDns\config.yaml" ^
/RL HIGHEST ^
/F版本
选择与 DDNS 代理运行环境匹配的版本
每个授权涵盖所选版本的 GhostlyDDns 1.x 更新。Windows 适合小型办公机,Linux 适合 VPS 或家庭服务器,Linux ARM 适合全天保持 DNS 更新的低功耗设备。
Windows
适用于 Windows 机器持续在线,需保持小型网络 Cloudflare 记录更新的场景。
打开 Windows 版本Linux
适用于已运行无人值守服务的 VPS、家庭服务器、实验室设备或反向代理主机。
打开 Linux 版本Linux ARM
适用于全天在线且能运行低开销小型 DDNS 代理的 ARM64 设备。
打开 Linux ARM 版本开始使用
自动化生产 DNS 前先用一个测试记录开始
创建临时子域,使用 GhostlyDDns 干运行,确认令牌仅能编辑指定区域,再将相同配置应用到关键记录。
常见问题
GhostlyDDns 常见问题
关于 Cloudflare 记录、API 令牌、IPv6、调度、日志及供应商 DDNS 何时足够的简短解答。
GhostlyDDns 自动化了什么?
GhostlyDDns 在公网 IPv4 或 IPv6 地址变化时更新已有的 Cloudflare A 和 AAAA 记录,不替代 Cloudflare DNS,也不构建托管平台。
GhostlyDDns 会创建新的 Cloudflare 记录吗?
版本一旨在更新已有记录。先在 Cloudflare 创建 DNS 记录,再由 GhostlyDDns 保持目标地址最新。
Cloudflare API 令牌应存放在哪里?
将令牌存储在运行 GhostlyDDns 的机器上,并用严格权限保护 YAML 文件。令牌应仅能编辑指定区域的 DNS。
GhostlyDDns 能更新 IPv6 记录吗?
是的。当主机拥有真实路由的 IPv6 地址时启用 IPv6 检测。GhostlyDDns 可在检测到 IPv6 地址变化时更新 AAAA 记录。
供应商 DDNS 何时足够?
当路由器或托管服务已安全更新 Cloudflare,支持所需记录并提供可信日志时,供应商 DDNS 可能已足够。
代理应多久运行一次?
家庭和办公网络常用两到五分钟的短轮询间隔。不需要快速切换时可使用更长的轮询间隔。