代码仓
中

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.; };
};

附录 ​

参考资料 ​