DNS 域名格式 - Amazon Route 53
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

DNS 域名格式

域名 (包括域、托管区域和记录的名称) 由一系列以点分隔的标签组成。每个标签最长可为 63 个字节。域名的总长度不能超过 255 字节,包括点。Amazon Route 53 支持任何有效的域名。

命名要求取决于您是注册域名还是指定托管区域或记录的名称。请参阅适用的主题。

为域名注册设置域名格式

对于域名注册,域名只能包含字符 a-z、0-9 和 -(连字符)。不能在标签开头或结尾指定连字符。

有关如何注册国际化域名 (IDN) 的信息,请参阅设置国际化域名的格式

为托管区域和记录设置域名格式

对于托管区域和记录,域名可以包含以下任何可输出的 ASCII 字符 (不包括空格):

  • a-z

  • 0-9

  • - (连字符)

  • ! " # $ % & ' ( ) * + , - / : ; < = > ? @ [ \ ] ^ _ ` { | } ~ .

Amazon Route 53 会将字母字符存储为小写字母 (a-z),无论您指定将其存储为大写字母、小写字母还是转义码中的对应字母。

如果您的域名包含以下任意字符,则必须使用 \三位八进制代码 格式的转义码指定字符:

  • 八进制字符 000 到 040 (十进制 0 到 32,十六进制 0x00 到 0x20)

  • 八进制字符 177 到 377 (十进制 127 到 255,十六进制 0x7F 到 0xFF)

  • .(句点),八进制字符 056(十进制 46,十六进制 0x2E),当在域名中用作字符时。使用 . 作为标签之间的分隔符时,不需要使用转义码。

例如,要为 exämple.com 创建托管区域,需要指定 ex\344mple.com

如果域名包含除 a 到 z、0-9、— (连字符) 或 _ (下划线) 之外的任意字符,Route 53 API 操作会将这些字符作为转义码返回。无论您在创建实体时将字符指定为字符还是转义码,都是如此。Route 53 控制台会将字符显示为字符,而不显示为转义码。

有关与八进制代码对应的 ASCII 字符的列表,请在 Internet 上搜索“ASCII 表”。

要指定国际化域名 (IDN),请将其转换为域名代码。有关更多信息,请参阅 设置国际化域名的格式

在托管区域和记录的名称中使用星号 (*)

您可以创建名称中包含 * 的托管区域和记录。

托管区域

  • 域名最左侧的标签中不能包含 *。例如,不允许使用 *.example.com。

  • 如果在其他位置包含 *,DNS 会将其视为 * 字符 (ASCII 42),而不是通配符。

记录

DNS 会根据 * 字符出现在名称中的位置将它作为通配符或作为 * 字符 (ASCII 42) 来处理。请注意以下有关在记录的名称中使用 * 作为通配符的限制:

  • * 必须替换域名中最左侧的标签,例如 *.example.com 或 *.acme.example.com。如果在任何其他位置包含 *(例如 prod.*.example.com),DNS 会将其视为 * 字符 (ASCII 42),而不是通配符。

  • * 必须替换整个标签。例如,您不能指定 *prod.example.com 或 prod*.example.com。

  • 具体的域名优先。例如,如果您为 *.example.com 和 acme.example.com 创建记录,Route 53 始终使用 acme.example.com 记录中的值响应对 acme.example.com 的 DNS 查询。

  • * 应用到针对包含星号的子域级别的 DNS 查询,以及该子域的所有子域。例如,如果您创建了名为 *.example.com 的记录,Route 53 使用该记录中的值来响应对 zenith.example.com、acme.zenith.example.com 和 pinnacle.acme.example.com(如果没有记录具有这些名称)的 DNS 查询。

    如果您创建名为 *.example.com 的记录并且没有 example.com 记录,Route 53 会使用 example.com 响应对 example.com 的 DNS 查询。NXDOMAIN(不存在的域)。

  • 您可以配置 Route 53,使其对针对相同级别的所有子域以及针对域名的 DNS 查询返回相同的响应。例如,您可以配置 Route 53 以使用 example.com 记录响应对 acme.example.com 和 zenith.example.com 等的 DNS 查询。执行以下步骤:

    1. 为域创建记录,如 example.com。

    2. 为子域创建别名记录,如 *.example.com。将您在步骤 1 中创建的记录指定作为别名记录的目标。

  • 不能使用 * 作为类型为 NS 的记录的通配符。

设置国际化域名的格式

在注册新域名或创建托管区域和记录时,您可以指定除 a-z (例如,ç) 之外的字母、其他字母表中的字符 (例如西里尔字母或阿拉伯字母),也可以指定中文、日语或韩语中的字符。Amazon Route 53 会将这些国际化域名 (IDN) 存储在域名代码中,域名代码将 Unicode 字符表示为 ASCII 字符串。

如果您正在注册域名,请注意以下事项:

  • 只有当顶级域 (TLD) 支持 IDN 并支持要使用的语言时,才能使用 a-z、0-9 和 -(连字符)以外的字符。要确定 TLD 支持哪些语言,请参阅可以使用 Amazon Route 53 注册的域

  • 如果名称仅包含字母 a-z,则可以使用不支持的语言指定名称。例如,如果 TLD 不支持法语,但您想要使用的名称仅包含没有变音符号的字符 a-z,您仍可以使用该名称。在此示例中,允许使用包含 “c” 的名称;不允许使用包含 “ç” 的名称。

  • 如果 TLD 不支持 IDN 或不支持您希望用于域名的语言,则即使域名代码仅包含 a-z、0-9 和 -,您也无法在 域名代码中指定该名称。

以下示例显示了国际化域名“中国.asia”的域名代码表示形式:

xn--fiqs8s.asia

当您在新式浏览器的地址栏中输入 IDN 时,浏览器会将其转换为域名代码,然后再提交 DNS 查询或发出 HTTP 请求。

如何输入 IDN 取决于您要创建的内容 (域名、托管区域或记录) 以及创建方式 (API、SDK 或 Route 53 控制台):

  • 如果您使用的是 Route 53 API 或AmazonSDK,您可以编程方式将 Unicode 值转换为域名代码。例如,如果您使用 Java,则可使用 java.net.IDN 库的 toASCII 方法将 Unicode 值转换为域名代码。

  • 如果您使用 Route 53 控制台来注册域名,则可将名称 (包括 Unicode 字符) 粘贴到名称字段中,然后控制台会将该值转换为域名代码,再进行保存。

  • 如果您使用 Route 53 控制台来创建托管区域或记录,则需在相应的名称字段中返回的子位置类型。有关在线转换器的信息,请在 Internet 上搜索“域名代码转换器”。

如果您要注册域名,请注意并非所有顶级域 (TLD) 都支持 IDN。有关 Route 53 支持的 TLD 列表,请参阅可以使用 Amazon Route 53 注册的域 . 已记录不支持 IDN 的 TLD。