0.1.1 |
|
---|---|
0.1.0 |
|
#24 in #ddns
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。
这将成为
--record-name
参数值。请注意,在本例中,对于 "example.com" 域,"computer" 名称意味着完整的参数值应该是 "computer.example.com"。 -
步骤 2:在 "概览" 页面,记录 "API" 部分的 "区域 ID" 值。
这将成为
--zone-id
参数值。 -
步骤 3:在同一 "API" 部分,点击 "获取您的 API 令牌"。创建一个新的令牌,具有编辑区域 DNS 的权限,并指定与域名对应的特定区域。
点击 "继续到摘要" 然后点击 "创建令牌"。记录令牌值。
这将成为
--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