DDNS 功能使用指导

概述

本文档介绍 openUBMC DDNS (Dynamic DNS) 功能的使用方法。动态 DNS 是一项在 IP 地址发生变化时可以自动更新 DNS 记录的服务,它允许用户使用一个固定的域名来访问动态 IP 地址的计算机或网络设备。

认识 DNS

为什么要有 DNS

互联网中,一台计算机与其他计算机通信时,通过 IP 地址唯一的标识自己。IP 地址类似于电话号码,但是纯数字的标识比较难记忆,而且数量庞大。

DNS 的作用是将人类可读的名称转换为机器识别的 IP 地址,供计算机相互连接。DNS 的工作原理和电话簿相似,都是管理名称和数字之间的映射关系。

域名的构成

TCP/IP 把 DNS 的域名设计成了分级的树状结构。每个申请加入 Internet 的国家都要向 NIC 注册一个顶级域名,顶级域采用组织模式和地理模式的划分模式。

常见的顶级域名:

域名描述
cn中国
us美国
com商业组织
net网络组织
org非营利组织

NIC 将顶级域的管理权分派给指定的管理机构,由这些管理机构再对被授权管理的域继续进行划分,从而形成了二级域。由此下去,便形成了层次型的 Internet 域名体系结构。

DNS 服务器

DNS 服务器是将域名指向对应 IP 地址的服务器。DNS 服务器中保存了一张域名和与之相对应的 IP 地址的表,以解析消息的域名。

查询方式

查询方式描述
递归查询DNS 服务器代替客户端去查询,最终返回结果
迭代查询DNS 服务器返回下一步要查询的 DNS 服务器地址

域名服务器层级

域名是分层结构,域名 DNS 服务器也是对应的层级结构。通过根域名服务器,依次请求顶级域名服务器和权威域名服务器,最终获取对应 IP 地址,并将该结果保存在本地域名服务器,以待下次 DNS 请求使用。

资源记录

DNS 服务器使用资源记录(Resource Record,RR)来存储域名和 IP 地址的映射关系。

NS 记录

域名服务器(NS)记录用于确定哪些服务器为一个网域传达 DNS 信息。一般来说,为了服务的安全可靠,至少应该有两条 NS 记录。

CNAME 记录

CNAME 记录(规范名称记录)将一个别名关联到另一个真正的或规范的域名。例如,www.example.com 可能会关联到 example.com

TXT 记录

TXT 记录是为网域之外的来源提供文本信息的一种 DNS 记录,可用于多种用途。该记录的值可以是人工可读文本,也可以是机器可读文本。

A 记录

A 记录或地址记录可将域名关联到托管相应网域服务的计算机物理 IP 地址。A 记录的 RDATA 是一个 IPv4 地址。

AAAA 记录

AAAA 记录和 A 记录类似,两者都是指向 IP 地址,但对应的 IP 版本不同。A 记录指向 IPv4 地址,AAAA 记录指向 IPv6 地址

PTR 记录

PTR 记录是 A 记录的逆向记录,又称做 IP 反查记录或指针记录,负责将 IP 反向解析为域名

SOA 记录

SOA 叫做起始授权机构记录,NS 用于标识多台域名解析服务器,SOA 记录用于在众多 NS 记录中标识哪一台是主服务器

认识 DDNS

DDNS 简介

动态 DNS(DDNS)是一项在 IP 地址发生变化时可以自动更新 DNS 记录的服务。它允许用户使用一个固定的域名来访问动态 IP 地址的计算机或网络设备。

DDNS 应用场景

场景描述优势
远程访问通过固定域名访问动态 IP 设备无需关心 IP 变化
云服务器云服务器 IP 变化时的域名解析保持服务连续性
多地点管理多个地点设备的统一域名管理便于集中管理

DDNS 更新原理

DDNS 通过以下步骤实现动态更新:

  1. 设备获取当前 IP 地址。
  2. 设备向 DDNS 服务器发送更新请求。
  3. DDNS 服务器验证请求合法性。
  4. DDNS 服务器更新 DNS 记录(A 记录、PTR 记录)。
  5. DNS 记录传播到全球 DNS 服务器。

报文格式

DNS 报文格式包括三个部分:

  1. 基础结构部分(Header)。
  2. 问题部分(Question)。
  3. 资源记录部分(Answer, Authority, Additional)。

请求报文

客户端发送 DNS 查询请求,包含要查询的域名和记录类型。

响应报文

DNS 服务器返回查询结果,包含资源记录信息。

DDNS 资源树

资源树接口

bash
busctl --user introspect bmc.kepler.ddns /bmc/kepler/Managers/1/EthernetInterfaces/DNS bmc.kepler.Managers.EthernetInterfaces.DNS

资源树属性

DDNS 相关的资源树属性用于配置和管理动态 DNS 功能。

属性签名描述
DHCPv4UseDNSServersbtrue表示自动从DHCP服务器获取ipv4版本的DNS服务器地址
DHCPv6UseDNSServersbtrue表示自动从DHCP服务器获取ipv6版本的DNS服务器地址
PrimaryNameServers主DNS服务器地址
BackupNameServers备DNS服务器地址1
TertiaryNameServers备DNS服务器地址2

资源树方法

通过资源树方法可以查询和更新 DDNS 配置。

方法签名描述
SetDHCPUseDNSServersa{ss}qy参数:DHCPVersion (0,1),State (0->false, 1->true)
DHCPVersion为0:修改DHCPv4UseDNSServers
DHCPVersion为1:修改DHCPv6UseDNSServers
SetDNSAddressOrigina{ss}s参数:
Static:手动模式【手动设置DNS服务器地址】
IPv4:自动IPv4模式【自动从DHCP服务器获取IPv4版本的DNS服务器】
IPv6:自动IPv6模式【自动从DHCP服务器获取IPv6版本的DNS服务器】
SetPrimaryNameServera{ss}s设置主DNS服务器地址
SetBackupNameServera{ss}s设置备DNS服务器地址1
SetTertiaryNameServera{ss}s设置备DNS服务器地址2

常见问题

找不到 DNS 记录

问题现象:BMC 上面配置了 DNS 服务器后,在 DNS 服务器使用 nslookup 命令查看时,找不到对应的 A 记录或 PTR 记录。

可能原因: DNS 服务器配置不完整,特别是反向解析 zone 未配置。

典型案例: 自动化用例配置的 DNS 服务器,其配置文件没有配置 76 网段的反向解析 zone,导致 BMC 自动更新反向资源记录失败。

解决方法: 在 OS 上通过 bind 手动搭建 DNS 服务器,配置对应正向和反向解析的 zone,即可查询成功。

配置正向解析 zone

text
zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
    allow-update { key ddns-key.; };
};

配置反向解析 zone

text
zone "76.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.76";
    allow-update { key ddns-key.; };
};

附录

参考资料