DDNS 客户端配置

另请参阅: DDNS 客户端文档

  • 由于功能扩展,并非所有设置在所有 OpenWrt 版本中都受支持。
  • 如果某项设置并非在所有版本中都可用,说明中会注明支持的版本。
  • 请注意, ddns-scripts 设计为每个配置段仅支持一个主机或 IP 协议版本。
  • 从 BB 14.07 起, ddns-scripts 仅支持 IPv4 地址的更新。
  • 从 ddns-scripts 2.7.6 (trunk) 开始,选项命名将进行调整,以便更好地进行功能分组。
  • 更新 ddns-scripts 到新版本时,现有配置文件中的选项名称将自动重命名。
  • 此外,一些选项也将 在全局配置中可用 ,因此无需在每个服务段中重复定义。
  • 在服务段中定义的选项将覆盖全局段设置。

ddns-scripts 包配置文件位于 /etc/config/ddns

你可以在 GitHub 上找到最新版本的完整文档 ddns.sample_config
使用默认设置时,最小配置如下:

config service "myddns_ipv4"
	option service_name	"example.org"
	option domain		"yourhost.example.org"
	option username		"your_username"
	option password		"your_password"
	option interface	"wan"
	option ip_source	"network"
	option ip_network	"wan"

:!: 从 CC 15.05 起支持

config service "myddns_ipv6"
	option use_ipv6		"1"
	option service_name	"example.org"
	option domain		"yourhost.example.org"
	option username		"your_username"
	option password		"your_password"
	option interface	"wan6"
	option ip_source	"network"
	option ip_network	"wan6"

:!: 每个 DDNS 提供商和主机都需要定义一个 “service”
:!: 如果你希望向 DDNS 提供商更新 IPv4IPv6 地址,也需要分别定义
(从 CC 15.05起)

名称
(旧)
名称
(新)
类型 必填项 默认值 描述
enabled boolean yes '0' 启用(1)或禁用(0)。
interface network name yes (none) 指定用于检测外部 IP 的网络接口(如 wan)。当该接口启动时,DDNS 脚本将开始监控并更新 IP。
use_ipv6 boolean no '0' 是否使用 IPv6 地址。 BB 14.07 起不支持 IPv6,
从CC 15.05 支持。
service_name string yes(*) (none) 用哪个DDNS?
/usr/lib/ddns/services 中选择。
从 CC 15.05 起 如果 option use_ipv6 启用(1) 从 /usr/lib/ddns/services_ipv6 中选择一个
最新信息 Github.com
(*) 如果没有你想要的DDNS提供商, 删除这个选项然后使用 'option update_url' 或者从 CC 15.05 起使用'option update_script' 替代。
update_url string yes(*) (none) 查看DDNS提供商配置信息。使用他们的URL
(*) 若设置 'option service_name' 则弃用该选项
update_script string no (none) 从 CC 15.05 起 自定义更新脚本路径 /path/to/update_script.sh
若选择的DDNS提供商因为脚本原因不更新IP地址,原因是他们添加额外参数或步骤导致,需要写个自定义脚本更新。
详情看 update_sample.sh
:!: 使用该选项请移除'option service_name' 并且 'option update_url' 与该选项二选一
domain string yes (none) 使用的主机名或“FQDN
(此主机名或”FQDN“必须已在DDNS服务商处注册)
:!: 即使该DDNS服务商更新时无需提交此信息,也请务必填写。ddns-scripts将通过此域名比对本地IP与已注册IP。
:!: 自DD版本起 ddns-scripts 使用 'option lookup_host' (详见下文) 检测您的已注册IP。
因此,此选项适用于部分服务商支持的特殊多主机更新配置场景。
lookup_host string yes (none) 自 DD 起 ,不再使用 Option domain (上文) 来获取已注册的 IP。请在此配置你希望用于查询当前 IP 地址的 DNS 名称(“FQDN”)。
username string yes(*) (none) DDNS服务商账户的用户名
请查阅DDNS服务商帮助文档,部分服务商会将“主机名”等不同信息作为DDNS更新时的“用户名”。
更多详细信息可参考 DDNS client
(*)若您的DDNS服务商更新时无需此信息,请填写 “X” 作为占位符。
password string yes(*) (none) DDNS服务商账户的密码
请查阅DDNS服务商帮助文档,部分服务商会将令牌ID等不同信息作为DDNS更新的“密码”。例如,若使用afraid.org服务,请将25位随机生成的令牌填写在此字段中。
更多详细信息可参考 DDNS client
(*)若您的DDNS服务商更新时无需此信息,请填写 “X” 作为占位符。
use_https boolean no '0' 禁用(0) / 启用(1) HTTPS 与您的 DDNS 服务商进行安全通信。
部分服务商若不通过HTTPS发送更新请求,可能会出现问题。
如果使用了上面的 update_url不要使用 'http”s”:', 而是使用 'http:'
:!: 需要已安装 “Wget” 或 “cURL”
更多详细信息请参考 DDNS client
cacert string no(*) (none) 证书目录路径/path/to/certificates 或 证书文件路径/path/to/certificate.crt
“ca-certificates” 将证书安装到 /etc/ssl/certs 目录。
更多详细信息请参考 DDNS client
(*)如果 option use_https 值为'1' (启用)时为必填项
自 CC 15.05 已支持 'IGNORE'
:!: 将通过HTTPS传输数据但不验证DDNS服务商的服务器证书 (存在安全风险)
ip_source string yes 'network' 用于定义向DDNS服务商发送本地IP地址的检测来源。
可选参数如下:
- 'network' 需要配置 'option ip_network'
- 'web' 需要配置 'option ip_url'
- 'interface' 需要配置 'option ip_interface'
- 'script' 需要配置 'option ip_script'
详情请见下文。
ip_network string no(*) 'wan' 在 “ip_network” 选项选择一个该配置文件 /etc/config/network 中的网络接口 (例如 “wan”)。 如果选择了 “wan”,将会发送该接口当前的IP地址
(*)如果 option ip_source 值为 'network'时为必填项
ip_url string no(*) (none) 使用指定的网站检测当前外部 IP,该网站会返回发起请求主机的 IP 地址。如果处于 NAT 后面,这是最佳选项,因为本地网络或接口都不会拥有公共 IP(也就是大内网)。
如果 DDNS 提供商未提供或未建议此项,请从 列表 中选择一个 URL。
(*) 若 option ip_source 值为 'web'时为必填项
ip_interface string no(*) (none) 选定一个物理接口 (例如 'eth1') 检测当前IP地址,该接口只用于检测IP地址。
(*) 若 option ip_source 值为 'interface'时为必填项
ip_script string no(*) (none) 使用自定义脚本检测当前IP地址。
完整路径: '/path/to/script.sh'.
详情参阅: getlocalip_sample.shGet IP from modem scripts collection
:!: 脚本必须具有可执行权限。
(*)若 option ip_source 值为 'script' 时为必填项
check_interval number no '10' 设置检查本地 IP 是否变化的时间间隔。
允许单位值: 'seconds'(秒) 'minutes'(分钟) 'hours'(小时)。
:!: 小于 5 分钟没有意义,因为互联网中的 DNS 服务器大约需要 5 分钟才能同步。
:!: 这两个选项必须同时设置,或同时不设置。
check_unit string no 'minutes'
force_interval number no '72' 当未检测到 IP 变化时,强制向服务提供商发送一次更新。如果你的 DDNS 记录未更新,请查阅 DDNS 提供商的文档。
允许单位值: 'minutes'(分钟) 'hours'(小时) 'days'(天)
:!: 最小值必须大于或等于 check_interval(见上文)。
:!: 这两个选项必须同时设置,或同时不设置。

自 CC 15.05 起 支持值 '0'。该值会在一次成功更新后停止脚本执行。
force_unit string no 'hours'
retry_interval number no '60' 如果在检测、发送或更新过程中发生错误,脚本会重试相关操作。
在这里定义开始重试前需要等待的时间。
允许单位值:'seconds'(秒) 'minutes'(分钟)
:!: 这两个选项必须同时设置,或同时不设置。
retry_unit string no 'seconds'
retry_max_count number no '0' 自 CC 15.05 起(23→master,retry_count 重命名为 retry_max_count)脚本在发生通信错误时终止执行前的重试次数。
:!: 当设置为 '0' 时,将无限次重试。
use_syslog boolean no '0' 自 BB 14.07 起 通过 disable(0) / enable(1) 控制是否将事件记录到 syslog(系统日志)。
自 CC 15.05 起 记录到 syslog 的事件级别如下:
0 == 禁用
1 == info、notice、warning、errors
2 == notice、warning、errors
3 == warning、errors
4 == errors
:!: 导致 ddns-scripts 停止运行的严重错误(critical errors)始终会记录到 syslog。
use_logfile boolean no '1' 自 CC 15.05 起 通过 disable(0) / enable(1) 控制是否记录到日志文件。
默认路径: /var/log/ddns/[sectionname].log
'ddns' 区段中可以修改 所有 日志文件的路径(见下文)。
dns_server string no (none) 自 CC 15.05 起 通常情况下,当前(互联网上)注册的 IP 会根据本地定义的名称解析策略检测得到(例如 /etc/resolve.conf 等)。
在此处指定一个 DNS 服务器,以替代默认值。
你可以使用 FQDN、主机名或 IP 地址。
force_dnstcp boolean no '0' 自 CC 15.05 起 通过 disable(0) / enable(1) 控制是否使用 TCP 协议发送 DNS 请求。
默认情况下,每一次 DNS 调用都是通过 UDP 协议完成的。一些互联网服务提供商提供的调制解调器会缓存 UDP DNS 请求,并将所有请求重定向到本地调制解调器缓存,再由其转发到外部服务器。
若要强制 DNS 请求使用 TCP,请启用此选项。
:!: 需要安装 BIND host 软件包。
proxy string no (none) 自 CC 15.05 起 如果访问 WEB 上的 HTTP/HTTPS 页面需要代理(Proxy),也可以在此处配置,用于向 DDNS 提供商发送更新。
如果你在上方配置了 option use_https '1',则需要在此处设置 HTTPS 代理;否则设置 HTTP 代理。
:!: 不应在此情况下检测当前 IP(上方的 option ip_source 'web'),因为该请求也会通过所配置的代理发送。
语法: [user:password@]proxy:port :!: port 为必填!
IPv6 地址必须放在方括号 '[...]' 中。
force_ipversion boolean no '0' 自 CC 15.05 起 通过 disable(0) / enable(1) 控制此选项。
通常系统会根据多种设置(大多在软件编译时决定)来选择更偏好使用 IPv4IPv6 进行通信。一些 DDNS 提供商会根据你发送更新请求时所使用的 IP 地址来更新其 DDNS 记录。
因此,你可能需要强制使用你希望更新的 IP 版本,或者根据你的环境出于其他原因强制指定 IP 版本。
:!: 需要安装 Wget 或 cURL 软件包以及 BIND host 软件包!
bind_network string no (none) 自 CC 15.05 起 指定在检测 IP 和发送更新时用于通信的网络。
:!: 需要安装 Wget 或 cURL 软件包!
Wget 会绑定到该网络的 IP,而 cURL 会绑定到该网络的物理接口。
rec_id string no (none) 自 DD 起 如果设置了此项,并且使用的服务是 CloudFlare,则会更新指定的记录(当同一域名存在多个记录时非常有用)。
若未设置,将自动更新记录(但如果同一域名存在多个记录,将会随机选择其中一个)。
is_glue boolean no '0' 自 DD 起 如果 DDNS 记录是 glue record,并且需要将注册的 IP 与该 glue record 进行比较,则此选项为必填。
此选项需要安装 bind host,并且只有在使用 dns_server 选项时才有效。dns_server 的值必须是定义该 glue record 的 DNS 服务器。

从 CC 15.05 起支持
:!: 不建议更改此设置。
:!: 仅支持段名为 “global”
:!: 此设置由 ddns-scripts 和对应的 luci-app-ddns 使用。

Name
(old)
Name
(new)
Values Required Default Description
allow_local_ip upd_privateip boolean no '0' 禁止(0) / 允许(1) 向 DDNS 提供商发送私有/指定 IP。
被屏蔽的 IPv4:0/8、10/8、100.64/10、127/8、169.254/16、172.16/12、192.168/16
被屏蔽的 IPv6:::/32、f000::/4
date_format ddns_dateformat string no '%F %R' 设置用于在日志文件和 LuCI WebUI 中显示日期的日期格式。
支持的格式代码参阅: look here.
run_dir ddns_rundir string no '/var/run/ddns' 设置用于存放 '*.pid' 和 '*.update' 文件的目录。
每个正在运行的服务区段都有独立的文件。
log_dir ddns_logdir string no '/var/log/ddns' 设置用于存放 '*.log' 文件的目录。
如果 option use_logfile 设置为 '1'(启用),每个正在运行的服务区段都有独立的日志文件(见上文)。
log_lines ddns_loglines number no '250' 设置 .log 文件在自动截断前所保存的行数。
use_curl boolean no '0' 如果已安装 Wget 和 cURL 软件包,则默认使用 Wget 进行通信。
设置为 '1' 则改为使用 cURL。

:!: Wget 1.x 在使用多个 WAN 接口(如 mwan)时无法正常工作。 Issue 8277

原因: wget 1.x 无法绑定到接口,只能更改 IP 地址(bind-address)

解决方法: 使用 curl,通过设置 use_curl

(未经测试)wget2(截至 2021 年 3 月尚未发布)支持 bind-interface


:!: 从 2021 年 6 月起, OpenDNS 在使用 Wget 1.xuclient-fetch (the default for OpenWRT 21.02.0) 时会返回错误 “badauth

原因: 为了与 OpenDNS正常工作, Wget 1.x 需要在命令行中添加 --auth-no-challenge 选项

解决方法: 安装并使用 curl, 通过在 Global 段中设置 use_curl = 1

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2025/12/19 07:57
  • by starsfall