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 通过以下步骤实现动态更新:
- 设备获取当前 IP 地址。
- 设备向 DDNS 服务器发送更新请求。
- DDNS 服务器验证请求合法性。
- DDNS 服务器更新 DNS 记录(A 记录、PTR 记录)。
- DNS 记录传播到全球 DNS 服务器。
报文格式
DNS 报文格式包括三个部分:
- 基础结构部分(Header)。
- 问题部分(Question)。
- 资源记录部分(Answer, Authority, Additional)。
请求报文
客户端发送 DNS 查询请求,包含要查询的域名和记录类型。
响应报文
DNS 服务器返回查询结果,包含资源记录信息。
DDNS 资源树
资源树接口
busctl --user introspect bmc.kepler.ddns /bmc/kepler/Managers/1/EthernetInterfaces/DNS bmc.kepler.Managers.EthernetInterfaces.DNS资源树属性
DDNS 相关的资源树属性用于配置和管理动态 DNS 功能。
| 属性 | 签名 | 描述 |
|---|---|---|
| DHCPv4UseDNSServers | b | true表示自动从DHCP服务器获取ipv4版本的DNS服务器地址 |
| DHCPv6UseDNSServers | b | true表示自动从DHCP服务器获取ipv6版本的DNS服务器地址 |
| PrimaryNameServer | s | 主DNS服务器地址 |
| BackupNameServer | s | 备DNS服务器地址1 |
| TertiaryNameServer | s | 备DNS服务器地址2 |
资源树方法
通过资源树方法可以查询和更新 DDNS 配置。
| 方法 | 签名 | 描述 |
|---|---|---|
| SetDHCPUseDNSServers | a{ss}qy | 参数:DHCPVersion (0,1),State (0->false, 1->true) DHCPVersion为0:修改DHCPv4UseDNSServers DHCPVersion为1:修改DHCPv6UseDNSServers |
| SetDNSAddressOrigin | a{ss}s | 参数: Static:手动模式【手动设置DNS服务器地址】 IPv4:自动IPv4模式【自动从DHCP服务器获取IPv4版本的DNS服务器】 IPv6:自动IPv6模式【自动从DHCP服务器获取IPv6版本的DNS服务器】 |
| SetPrimaryNameServer | a{ss}s | 设置主DNS服务器地址 |
| SetBackupNameServer | a{ss}s | 设置备DNS服务器地址1 |
| SetTertiaryNameServer | a{ss}s | 设置备DNS服务器地址2 |
常见问题
找不到 DNS 记录
问题现象:BMC 上面配置了 DNS 服务器后,在 DNS 服务器使用 nslookup 命令查看时,找不到对应的 A 记录或 PTR 记录。
可能原因: DNS 服务器配置不完整,特别是反向解析 zone 未配置。
典型案例: 自动化用例配置的 DNS 服务器,其配置文件没有配置 76 网段的反向解析 zone,导致 BMC 自动更新反向资源记录失败。
解决方法: 在 OS 上通过 bind 手动搭建 DNS 服务器,配置对应正向和反向解析的 zone,即可查询成功。
配置正向解析 zone
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-update { key ddns-key.; };
};配置反向解析 zone
zone "76.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.76";
allow-update { key ddns-key.; };
};附录
参考资料
- RFC 2136:Dynamic Updates in the Domain Name System (DNS UPDATE)
- openUBMC 官网:https://www.openubmc.cn/