DDNS
DDNS
当外部接口的 IP 地址经常变化,但外部管理员或用户需要通过固定域名访问该接口时,可以配置动态域名系统(Dynamic DNS,DDNS)。FortiGate 会将接口当前使用的公网 IPv4 或 IPv6 地址更新到 DDNS 服务,使域名持续指向该接口。
相关信息
- 入门级、中端和高端 FortiGate 的 DDNS 条目上限分别为 16、32 和 64,具体上限由设备的配置表容量决定。
- DDNS 不支持透明模式。
应用场景
以下示例在动态地址接口 wan1 上启用 FortiGuard DDNS,并将域名 summerice7.fortiddns.com 指向该接口使用的公网地址。FortiGuard DDNS 还可以使用 float-zone.com 和 fortidyndns.com 域名。

配置 FortiGuard DDNS
GUI 配置
进入“网络 → DNS”,在“动态 DNS(Dynamic DNS)”区域点击“新建(Create new)”。

在新建 DDNS 条目中配置接口、服务器和唯一位置,然后点击“确定”。

- 接口:选择动态获取地址的外部接口。
- 使用公网 IP 地址:当 FortiGate 接口上没有直接配置公网地址(如在公网 NAT 设备后)时开启此选项。
- 服务器:选择
fortiddns.com域名或其他 DDNS 服务器。 - 独特的位置:设置域名前缀,GUI 会组合并显示最终的 DDNS 域名,并显示是否已被占用。
IPv4 CLI 配置
执行以下配置,将 wan1 使用的公网 IPv4 地址更新到 summerice7.fortiddns.com。
config system ddns
edit 1
set ddns-server FortiGuardDDNS
set server-type ipv4
set ddns-domain "summerice7.fortiddns.com"
set addr-type ipv4
set use-public-ip enable
set monitor-interface "wan1"
next
endIPv6 CLI 配置
执行以下配置,将 wan1 的 IPv6 地址更新到 summerice6.fortiddns.com。
config system ddns
edit 1
set ddns-server FortiGuardDDNS
set server-type ipv6
set ddns-domain "summerice6.fortiddns.com"
set addr-type ipv6
set monitor-interface "wan1"
next
end配置第三方 DDNS
第三方 DDNS 服务只能通过 CLI 配置。可用参数会随选择的服务商变化,CLI 中可以使用 set ddns-server ? 命令来查看支持的第三方 DDNS 服务商,第三方 DDNS 主要分为以下两类:
- 内置的
dyndns.org、dyns.net、tzo.com、vavic.com、dipdns.net、now.net.cn、dhs.org、easydns.com、noip.com。内置服务商信息(如服务器地址,不可配置),域名信息需要用户配置。服务商需要认证时,还需根据其要求配置用户名、密码或 TSIG 参数。 - 基于 RFC 2136 的通用 DDNS
genericDDNS,可自定义服务器地址、域名、认证等信息。
根据服务商要求选择服务类型、服务器地址和需要更新的接口地址类型。
config system ddns edit <ddns_id> set monitor-interface <external_interface> set ddns-server <ddns_server> set server-type {ipv4 | ipv6} set ddns-server-addr <server_address_list> set addr-type {ipv4 | ipv6} set ddns-auth {disable | tsig} set ddns-keyname <key_name> set ddns-key <base_64> next end以下示例在
wan1上配置基于 RFC 2136 的通用 IPv6 DDNS 客户端。config system ddns edit 1 set ddns-server genericDDNS set server-type ipv6 set ddns-server-addr "2001:db8::53" "192.0.2.53" "ddnstest.genericddns.com" set ddns-domain "test.com" set monitor-interface "wan1" next end
相关信息
GUI 只显示第一个已配置端口的第三方 DDNS 配置。
定时刷新公网 IP
开启 use-public-ip 后,FortiGate 使用的公网地址可能并未直接配置在接口上,例如设备位于公网 NAT 设备后方。此时 FortiGate 无法通过接口地址变化事件触发更新,可以配置周期检查,使 DDNS 记录持续刷新。
在对应 DDNS 条目中开启公网地址检查并设置更新间隔。
相关信息
当 update-interval 设置为 0(默认值)时,FortiGuard DDNS 的更新间隔为 300 秒,第三方 DDNS 的更新间隔由服务端指定。
config system ddns
edit 1
set use-public-ip enable
set update-interval <seconds> ←---范围:0 or 60~2592000,默认值 0 表示 300s
next
end加密 DDNS 更新
关闭 clear-text(默认配置)后,FortiGate 使用 SSL 连接发送和接收 DDNS 更新。可以同时指定用于 SSL 连接的本地证书。
在对应 DDNS 条目中关闭明文连接并指定本地证书。
config system ddns
edit 1
set clear-text disable
set ssl-certificate <certificate_name>
next
endDHCP 客户端 DDNS 更新
DHCP 客户端获得动态地址后,可以把自己的主机名和 IP 地址更新到 DDNS 服务器。对应的 A 记录可以由客户端自行更新,也可以由 DHCP 服务器代为更新。支持 DHCP FQDN Option 81 的客户端可以指定由自己更新 A 记录,或者请求 DHCP 服务器代为更新。
FortiGate 作为 DHCP 服务器时,可以根据客户端提供的主机名或 FQDN 以及分配的地址,向指定 DNS 区域提交 A 记录更新。启用 ddns-update-override 后,无论客户端是否通过 Option 81 请求服务器代为更新,FortiGate 都会主动提交 A 记录更新,适合由 DHCP 服务器集中维护客户端 DNS 记录的场景。
传统 ISC DHCP 配置使用以下策略处理客户端自行更新 A 记录的请求:
| 策略 | A 记录更新行为 |
|---|---|
allow client-updates | 接受客户端自行更新 A 记录的请求,DHCP 服务器不代为更新该 A 记录。 |
ignore client-updates | 忽略客户端声明,由 DHCP 服务器更新 A 记录,但不明确禁止客户端自行更新。 |
deny client-updates | 由 DHCP 服务器更新 A 记录,并通知客户端不要自行更新。 |
相关信息
上述三个策略是 ISC DHCP 中描述客户端更新处理方式的配置语句,不是 FortiGate 的 CLI 选项,也不是 DDNS 服务器本身的更新授权策略。DDNS 服务器仍需允许 FortiGate 更新指定区域。
在对应 DHCP 服务器中开启 DDNS 更新和强制更新,并指定 DDNS 服务器与区域。
config system dhcp server
edit 1
set ddns-update enable
set ddns-update-override enable
set ddns-server-ip <ddns_server_ip>
set ddns-zone <ddns_zone>
set ddns-auth {disable | tsig}
set ddns-keyname <key_name>
set ddns-key <base_64>
next
end结果验证与排障
从外部网络解析配置的 DDNS 域名,确认返回地址与 FortiGate 当前使用的公网地址一致。
nslookup summerice7.fortiddns.com Server: 223.5.5.5 Address: 223.5.5.5#53 Non-authoritative answer: Name: summerice7.fortiddns.com Address: 60.247.121.226执行以下命令,查看 FortiDDNS 服务器和域名列表是否可用。
diagnose test application ddnscd 3无法获取 FortiDDNS 服务信息时,
svr_num和domain_num均为0:FortiDDNS status: ddns_ip=0.0.0.0, ddns_ip6=::, ddns_port=443 svr_num=0 domain_num=0相关信息
svr_num=0和domain_num=0只能确认设备尚未获得 FortiDDNS 服务器与域名信息,不能单独证明是 DNS、路由或 FortiGuard 连接中的哪一环节故障。正常获取 FortiDDNS 服务信息后,输出会显示服务器数量、地址和可用域名:
FortiDDNS status: ddns_ip=<FortiDDNS_server_ip>, ddns_ip6=::, ddns_port=443 svr_num=1 domain_num=3 svr[0]= <FortiDDNS_server_ip> domain[0]= fortiddns.com domain[1]= fortidyndns.com domain[2]= float-zone.com
需要查看 DDNS 更新过程时:
清除已有 Debug 过滤条件,开启
ddnscdDebug,然后复现一次更新。diagnose debug reset diagnose debug application ddnscd -1 diagnose debug enable完成复现后立即关闭 Debug 并清除过滤条件。
diagnose debug disable diagnose debug reset