DNS 域名格式 - Amazon Route 53

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

DNS 域名格式

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

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

Formatting domain names for domain name registration(为域名注册设置域名格式)

对于域名注册,域名只能包含字符 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),当在域名中用作字符时。使用 . 作为标签之间的分隔符时,不需要使用转义码。

如果域名包含除 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.zenith.example.com(如果该托管区域没有任何类型的记录)的 DNS 查询。

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

  • 您可以配置 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、软件开发工具包或 Route 53 控制台):

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

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

  • 如果您使用 Route 53 控制台来创建托管区域或记录,则需在相应的 Name(名称)字段中输入名称之前先将域名转换为域名代码。有关在线转换器的信息,请在 Internet 上搜索“域名代码转换器”。

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