DNS 行为和解析逻辑
域名系统(DNS)是网络的基础,它在后台透明地工作,将人类可读的网站名称转换成计算机可读的数字 IP 地址。 这些地址遵循 互联网 RFC 1918 准则( IPv4 )和 RFC 4193 准则( IPv6 )。 简而言之,DNS 服务器将域名(如 ibm.com
)与其对应的
IP 地址相匹配,而大多数人都不需要知道这些地址。
为了进行这种转换,DNS 系统会查询互联网上相互连接的 DNS 服务器网络。 这一过程类似于使用电话簿或地图查找特定地点。
名称服务器
名称服务器提供响应目录查询的服务,将有意义的文本网名或主机名转换为 IP 地址。
域名服务器授权是指域名服务器收到子域名记录请求后,将请求者转给管理该子域名的授权域名服务器。 这一过程允许对大型域(如 ibm.com
)进行分散管理。
通过自定义域名服务器,您可以使用 DNS 提供商的服务器,并自定义自己域名的参考名称。 例如,您可以将名称服务器定义为 ns1.cloud.ibm.com
,而不是提供商默认的 ns1.acme.com
。
代理 DNS 记录和全局负载均衡器
CIS 支持全局负载平衡器和 DNS 记录的代理。 当记录或负载平衡器被代理时,其流量会直接通过 CIS 运行。
目前,可以代理 A、AAAA 或 CNAME 类型的 DNS 记录。 更多信息,请参阅 DNS 记录类型。
设置代理方式
负载均衡器和DNS记录支持仅DNS和 HTTP 代理模式。 您可以在同一个 CIS 实例中使用 HTTP 代理和纯 DNS 域,但流量路由行为不同:代理记录的流量流经 CIS,而非代理(纯 DNS 模式)记录的流量直接从客户端流向源。
HTTP 代理模式
在 HTTP 代理模式下,CIS 会对外公布 IBM 的IP地址,但会保护(屏蔽)您的源站IP地址。 已声明的 IP 地址记录具有自动 TTL。 流量流经 CIS,所有安全、性能和可靠性功能(如防火墙规则和缓存)都在这里应用。 自动 "TTL(五分钟)也减少了针对 CIS 的权威查询次数。
仅 DNS 方式
在纯 DNS 模式下,记录会解析到源 IP,你可以自定义记录的 TTL。 对于全局负载平衡器,CIS 直接提供健康的源服务器地址,但依赖于遵守短 TTL 的 DNS 解析器来重新查询 CIS DNS,以获得最新的健康地址列表。
在纯 DNS 模式下,CIS 安全性、可靠性和性能功能均未应用。
根记录 CNAME 序列化
CIS 中的“CNAME 扁平化”功能可使根记录绕过 IETF RFC 限制。 CIS 授权服务器绕过这一限制,返回与 CNAME 目标相对应的 A records
,而不是返回 CNAME 本身,从而有效地隐藏了 CNAME。 即使根记录是 CNAME,这种技术也允许将其他记录(如 MX 记录)添加到域中。
安全 DNS
DNSSEC 是一种对 DNS 数据进行数字“签名”的技术,因此您可以确信这些数据是有效的。 要消除互联网上的漏洞,必须在查询过程的每一步部署 DNSSEC,从根区域到最终域名(例如 www.icann.org
)。
批量更改 DNS 记录
CIS 支持批量 DNS 记录更改,允许你在一次操作中更新多个区域记录。 这种方法可减少人工操作,简化域管理任务,如迁移、环境设置或自动化工作流程。 虽然 CIS 控制台支持单个更改,但批量操作最好使用 API。
批量 DNS 记录 API 端点允许您在一次请求中执行多个 DELETES
、PATCHES
、PUTS
和 POSTS
。
/batch
请求正文中包含的操作总是按以下顺序处理:
- 删除
- 补丁
- 放置
- 帖子
在每种操作类型中,单个记录更改会按处理顺序应用。 如果任何操作失败,则不会应用任何更改,API 会返回遇到的第一个错误。
批量 DNS 记录的主要注意事项
在 /batch 请求正文中指定每个操作时,请遵循以下关于必填字段和如何处理未指定字段的指导原则:
-
Deletes
:每个记录对象只需要id
字段。 您可以添加其他字段,如name
以提高清晰度,但所有其他字段将被忽略。 -
Patches
:除了每条记录id
之外,指定要更新的字段。 所有未指定的字段保持不变。 -
Puts
:指定每条记录的id
,content
,name
,和type
。 还可指定要设置为非默认值的任何其他字段。 任何未指定的字段都默认为每种 记录类型 的默认值。 此操作的作用是覆盖,因此记录中的所有字段都会受到影响。 -
Posts
:用于创建新记录。id
字段不是必填字段。 有关字段定义,请参阅 创建 DNS 记录 端点,并从请求体规范中选择适当的记录类型。
示例请求
在本例中,puts
列出的第一条记录的代理字段默认值为 false
。
{
"deletes": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353"
}
],
"patches": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"comment": "Domain verification record",
"name": "example.com",
"proxied": true,
"settings": {},
"tags": [],
"ttl": 3600,
"content": "198.51.100.4",
"type": "A"
}
],
"posts": [
{
"comment": "Domain verification record",
"name": "example.com",
"proxied": true,
"settings": {},
"tags": [],
"ttl": 3600,
"content": "198.51.100.4",
"type": "A"
}
],
"puts": [
{
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"comment": "Domain verification record",
"name": "example.com",
"proxied": true,
"settings": {},
"tags": [],
"ttl": 3600,
"content": "198.51.100.4",
"type": "A"
}
]
}