本文档详细说明DDNS工具的命令行参数用法。命令行参数可用于覆盖配置文件和环境变量中的设置,具有最高优先级。
可通过-h 查看参数列表
# ddns [选项]
ddns -h
或者使用Python:
# python3 -m ddns [选项]
python3 -m ddns -h
| 参数 | 类型 | 描述 | 示例 |
|---|---|---|---|
-h, --help |
标志 | 显示帮助信息并退出 | --help |
-v, --version |
标志 | 显示版本信息并退出 | --version |
-c, --config |
字符串 | 指定配置文件路径 | --config config.json |
--new-config |
标志/字符串 | 生成新的配置文件(可指定路径) | --new-config --new-config=config.json |
--debug |
标志 | 开启调试模式 | --debug |
--dns |
选择项 | DNS服务提供商包括: 51dns, alidns, aliesa, callback, cloudflare, debug, dnscom, dnspod_com, dnspod, he, huaweidns, noip, tencentcloud |
--dns cloudflare |
--endpoint |
字符串 | 自定义API 端点 URL(更换服务节点) | --endpoint https://api.private.com |
--id |
字符串 | API 访问 ID、邮箱或 Access ID | --id [email protected] |
--token |
字符串 | API 授权令牌或密钥(Secret Key) | --token abcdef123456 |
--ipv4 |
字符串列表 | IPv4 域名列表,多个域名重复使用参数 | --ipv4 test.com --ipv4 4.test.com |
--ipv6 |
字符串列表 | IPv6 域名列表,多个域名重复使用参数 | --ipv6 test.com |
--index4 |
列表 | IPv4 地址获取方式,支持:数字, default, public, url:, regex:, cmd:, shell: |
--index4 public --index4 "regex:192\\.168\\..*" |
--index6 |
列表 | IPv6 地址获取方式,支持:数字, default, public, url:, regex:, cmd:, shell: |
--index6 0 --index6 public |
--ttl |
整数 | DNS 解析记录的 TTL 时间(秒) | --ttl 600 |
--line |
字符串 | 解析线路(部分provider支持),如 ISP线路 | --line 电信 --line telecom |
--proxy |
字符串列表 | HTTP 代理设置,可用格式:IP:端口 或 DIRECT |
--proxy 127.0.0.1:1080 --proxy DIRECT |
--cache |
标志/字符串 | 是否启用缓存或自定义缓存路径 | --cache --cache=/path/to/cache |
--no-cache |
标志 | 禁用缓存(等效于 --cache=false) |
--no-cache |
--ssl |
字符串 | SSL 证书验证方式,支持:true, false, auto, 文件路径 | --ssl false --ssl=/path/to/ca-certs.crt |
--no-ssl |
标志 | 禁用 SSL 验证(等效于 --ssl=false) |
--no-ssl |
--log_file |
字符串 | 日志文件路径,不指定则输出到控制台 | --log_file=/var/log/ddns.log |
--log_level |
字符串 | 日志级别:DEBUG, INFO, WARNING, ERROR, CRITICAL | --log_level=ERROR |
--log_format |
字符串 | 日志格式字符串(logging模块格式) |
--log_format="%(asctime)s:%(message)s" |
--log_datefmt |
字符串 | 日志日期时间格式 | --log_datefmt="%Y-%m-%d %H:%M:%S" |
注意: 其中
--debug,--new-config,--no-cache,--no-ssl,--help,--version为命令行独有参数。
--dns DNS_PROVIDERDNS服务提供商详细列表。
--id IDAPI访问ID或用户标识。
--token TOKENAPI授权令牌或密钥。
Callback配置示例:
# GET方式回调
ddns --dns callback --id "https://api.example.com/ddns?domain=__DOMAIN__&ip=__IP__" --token ""
# POST方式回调
ddns --dns callback --id "https://api.example.com/ddns" --token '{"api_key": "your_key", "domain": "__DOMAIN__"}'
详细配置请参考:Callback Provider 配置文档
--ipv4 [DOMAIN...]需要更新IPv4记录的域名列表。
[](不更新IPv4地址)--ipv4 example.com (单个域名)--ipv4 example.com --ipv4 subdomain.example.com (多个域名)--ipv6 [DOMAIN...]需要更新IPv6记录的域名列表。
[](不更新IPv6地址)--ipv6 example.com (单个域名)--ipv6 example.com --ipv6 ipv6.example.com (多个域名)--index4 [Rule...]IPv4地址获取方式。
default0,1,2...): 第N个网卡IPdefault: 系统访问外网默认IPpublic: 使用公网IP(通过API查询)url:{URL}: 从指定URL获取IPregex:{PATTERN}: 使用正则表达式匹配本地网络配置中的IPcmd:{COMMAND}: 执行指定命令并使用其输出作为IPshell:{COMMAND}: 使用系统shell运行命令并使用其输出作为IP--index4 0 (第一个网卡)--index4 public (公网IP)--index4 "url:http://ip.sb" (从URL获取)--index4 "regex:192\\.168\\.*" (匹配192.168开头的IP)--index4 public --index4 0 (先尝试获取公网IP,失败则使用第一个网卡)--index6 [Rule...]IPv6地址获取方式,用法同--index4。
--ttl TTLDNS解析TTL时间(秒)。
null(使用DNS服务商默认设置)--ttl 600 (10分钟)--ttl 3600 (1小时)--proxy [PROXY...]HTTP代理设置,支持多代理轮换。
--proxy 127.0.0.1:1080 (单个代理)--proxy 127.0.0.1:1080 --proxy DIRECT (多个代理,逐个尝试)--cache {true|false|PATH}启用缓存以减少API请求。
truetrue: 启用缓存,使用默认路径false: 禁用缓存--cache (启用默认缓存)--cache=false (禁用缓存)--cache=/path/to/ddns.cache (自定义缓存路径)--ssl {true|false|auto|PATH}SSL证书验证方式,控制HTTPS连接的证书验证行为。
autotrue: 强制验证SSL证书(最安全)false: 禁用SSL证书验证(最不安全)auto: 优先验证,SSL证书错误时自动降级(不安全)--ssl true (强制验证)--ssl false (禁用验证)--ssl auto (自动降级)--ssl /etc/ssl/certs/ca-certificates.crt (自定义CA证书)--debug启用调试模式(等同于设置--log_level=DEBUG)。
--debug--log_level {CRITICAL|FATAL|ERROR|WARN|WARNING|INFO|DEBUG|NOTSET}设置日志级别。
INFO--log_level=DEBUG (调试模式)--log_level=ERROR (仅显示错误)--log_file LOGFILE设置日志文件路径。
--log_file=/var/log/ddns.log--log_file=./ddns.log--log_datefmt FORMAT设置日期时间格式字符串(参考Python time.strftime()格式)。
%Y-%m-%dT%H:%M:%S--log_datefmt="%Y-%m-%d %H:%M:%S"--log_datefmt="%m-%d %H:%M:%S"# 使用默认配置文件
ddns
# 使用指定配置文件
ddns -c /path/to/config.json
# 启用调试模式
ddns --debug
# 使用指定配置文件并启用调试模式
ddns -c /path/to/config.json --debug
# 更新特定域名的IPv4地址(多个域名)
ddns --ipv4 example.com --ipv4 www.example.com
# 设置为阿里云DNS并提供认证信息
ddns --dns alidns --id YOUR_ACCESS_KEY_ID --token YOUR_ACCESS_KEY_SECRET
# 使用公网IP和特定的网络配置
ddns --ipv4 example.com --index4 public --ttl 600 --proxy 127.0.0.1:1080
# 自定义日志配置
ddns --log_level=DEBUG --log_file=./ddns.log --log_format="%(asctime)s - %(levelname)s: %(message)s"
# 完整配置示例
ddns --dns cloudflare --id [email protected] --token API_TOKEN \
--ipv4 example.com --ipv4 www.example.com --ipv6 example.com \
--index4 public --index6 "regex:2001:.*" \
--ttl 300 --proxy 127.0.0.1:1080 --proxy DIRECT \
--cache=/var/cache/ddns.cache \
--log_level=INFO --log_file=/var/log/ddns.log
# 最简单的配置 - DNSPod国内版
ddns --dns dnspod --id 12345 --token mytokenkey --ipv4 example.com
# 生成新的配置文件
ddns --new-config config.json
# 使用指定配置文件
ddns -c /path/to/config.json
# 查看版本信息
ddns --version
# CloudFlare
ddns --dns cloudflare --id [email protected] --token your_api_token --ipv4 example.com
# 阿里云DNS
ddns --dns alidns --id your_access_key_id --token your_access_key_secret --ipv4 example.com
# 阿里云ESA(自定义端点)
ddns --dns aliesa --id your_access_key_id --token your_access_key_secret --endpoint https://esa.ap-southeast-1.aliyuncs.com --ipv4 example.com
# 华为云DNS
ddns --dns huaweidns --id your_access_key --token your_secret_key --ipv4 example.com
# HE.net(无需id)
ddns --dns he --token your_password --ipv4 example.com
# DNS.COM/51DNS
ddns --dns dnscom --id your_user_id --token your_api_token --ipv4 example.com
# 腾讯云DNS
ddns --dns tencentcloud --id your_secret_id --token your_secret_key --ipv4 example.com
# NoIP
ddns --dns noip --id your_username --token your_password --ipv4 example.com
# NoIP(自定义端点)
ddns --dns noip --id your_username --token your_password --endpoint https://your-ddns-server.com --ipv4 example.com
# 多域名、多IP获取方式
ddns --dns cloudflare --id [email protected] --token API_TOKEN \
--ipv4 example.com --ipv4 www.example.com --ipv4 api.example.com \
--ipv6 example.com --ipv6 ipv6.example.com \
--index4 public --index4 "regex:192\\.168\\.1\\..*" \
--index6 public --index6 0
# 使用代理和自定义TTL
ddns --dns dnspod --id 12345 --token mytokenkey \
--index4 public --ipv4 example.com --ttl 300 \
--proxy 127.0.0.1:1080 --proxy DIRECT
ddns --dns dnspod --id 12345 --token mytokenkey \
--ipv4 telecom.example.com --line 电信
# 调试模式
ddns --debug ...
# 禁用缓存和SSL验证
ddns --no-cache --no-ssl ...
# GET方式回调
ddns --dns callback \
--id "https://api.example.com/ddns?domain=__DOMAIN__&ip=__IP__&ttl=__TTL__" \
--token "" \
--ipv4 example.com --index4 public
# POST方式回调
ddns --dns callback \
--id "https://api.example.com/ddns" \
--token '{"api_key": "your_key", "domain": "__DOMAIN__", "ip": "__IP__", "type": "__RECORDTYPE__"}' \
--ipv4 example.com --ipv6 example.com
# 详细日志配置
ddns --dns cloudflare --id [email protected] --token API_TOKEN \
--ipv4 example.com --index4 public \
--log_level=DEBUG \
--log_file=/var/log/ddns.log \
--log_format="%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d - %(message)s" \
--log_datefmt="%Y-%m-%d %H:%M:%S"
# 简单调试
ddns --debug --dns dnspod --id 12345 --token mytokenkey --ipv4 example.com
--log_format="%(asctime)s: %(message)s"。--ipv4、--index4、--proxy等),请重复使用参数标识,例如:--ipv4 example.com --ipv4 sub.example.com。--debug参数仅在命令行中有效,配置文件中的debug设置将被忽略。