#cloudflare #dns #ddns #dns-records #public-ip

已删除 cloudflare-ddns-update

更新 Cloudflare DNS 记录的值到您的公共 IP 地址

0.1.1 2020年1月6日
0.1.0 2020年1月5日

#24 in #ddns

Apache-2.0

150KB
174

Cloudflare DDNS 更新

一个命令行工具,用于更新 Cloudflare DNS 记录的值到您的公共 IP。

$ cloudflare-ddns-update \
   --record-name computer.example.com \
   --zone-id f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5 \
   --auth-token Oa0-AjPVOxfFkSn05RtJ8lIJp7SzOrf3CbT3iwJk
Public IP: 123.45.678.90
Successfully updated computer.example.com!

设置

先决条件:您的域名必须已经由 Cloudflare 管理。

  • 步骤 1:在您域的 "DNS" 页面,添加一个具有所需名称的 A 记录和一个虚拟 IP 地址,例如 0.0.0.0。

    Example A record for "computer"

    这将成为 --record-name 参数值。请注意,在本例中,对于 "example.com" 域,"computer" 名称意味着完整的参数值应该是 "computer.example.com"。

  • 步骤 2:在 "概览" 页面,记录 "API" 部分的 "区域 ID" 值。

    Example of the Zone ID

    这将成为 --zone-id 参数值。

  • 步骤 3:在同一 "API" 部分,点击 "获取您的 API 令牌"。创建一个新的令牌,具有编辑区域 DNS 的权限,并指定与域名对应的特定区域。

    Example API token configuration

    点击 "继续到摘要" 然后点击 "创建令牌"。记录令牌值。

    Example token value

    这将成为 --auth-token 参数值。

  • 步骤 4:使用这三个参数值调用 cloudflare-ddns-update 命令。

    $ cloudflare-ddns-update \
        --record-name computer.example.com \
        --zone-id f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5 \
        --auth-token Oa0-AjPVOxfFkSn05RtJ8lIJp7SzOrf3CbT3iwJk
    Public IP: 123.45.678.90
    Successfully updated computer.example.com!
    

    您可以通过再次检查 "DNS" 页面来验证记录是否已更新为正确的 IP。

步骤 1-3 只需执行一次。步骤 4 的命令应设置成定期运行,例如在 cron 任务中。

用法

$ cloudflare-ddns-update --help
cloudflare-ddns-update 0.1.0

USAGE:
    cloudflare-ddns-update --auth-token <auth-token> --record-name <record-name> --zone-id <zone-id>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information
    -v, --verbose    Enable verbose logging

OPTIONS:
        --auth-token <auth-token>      API token generated on the "My Account" page
        --record-name <record-name>    DNS record "name" from domain "DNS" page
        --zone-id <zone-id>            Zone ID from domain "Overview" page, "API" section

安装

$ cargo install cloudflare-ddns-update

Docker

提供了一个 Docker 容器来在启动时运行 cloudflare-ddns-update 命令,然后每 15 分钟运行一次。这将确保即使随着时间的推移而变化,您的 DNS 记录始终保持与正确 IP 地址的最新状态。

$ docker create \
    --name=cloudflare-ddns-update
    --restart unles-stopped \
    -e "CF_DDNS_AUTH_TOKEN=…" \
    -e "CF_DDNS_ZONE_ID=…" \
    -e "CF_DDNS_RECORD_NAME=…" \
    JakeWharton/cloudflare-ddns-update

如果您使用 Docker Compose

---
version: "2"

services:
  cloudflare-ddns-update:
    image: JakeWharton/cloudflare-ddns-update
    restart: unless-stopped
    environment:
      - CF_DDNS_AUTH_TOKEN=- CF_DDNS_ZONE_ID=- CF_DDNS_RECORD_NAME=

许可

Copyright 2020 Jake Wharton

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

依赖项

~27-41MB
~716K SLoC