

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

# DNS 域名格式
<a name="DomainNameFormat"></a>

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

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

## 为域名注册设置域名格式
<a name="domain-name-format-registration"></a>

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

有关如何注册国际化域名 (IDN) 的信息，请参阅[设置国际化域名的格式](#domain-name-format-idns)。

## 为托管区域和记录设置域名格式
<a name="domain-name-format-hosted-zones"></a>

对于托管区域和记录，域名可以包含以下任何可输出的 ASCII 字符 (不包括空格)：
+ a-z
+ 0-9
+ - (连字符)
+ \$1 " \$1 \$1 % & ' ( ) \$1 \$1 , - / : ; < = > ? @ [ \$1 ] ^ \$1 ` \$1 \$1 \$1 \$1 . 

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

如果您的域名包含以下任意字符，则必须使用 \$1*三位八进制代码* 格式的转义码指定字符：
+ 八进制字符 000 到 040 (十进制 0 到 32，十六进制 0x00 到 0x20)
+ 八进制字符 177 到 377 (十进制 127 到 255，十六进制 0x7F 到 0xFF)
+ .（句点），八进制字符 056（十进制 46，十六进制 0x2E），当在域名中用作字符时。使用 . 作为标签之间的分隔符时，不需要使用转义码。

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

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

要指定国际化域名 (IDN)，请将其转换为域名代码。有关更多信息，请参阅 [设置国际化域名的格式](#domain-name-format-idns)。

## 在托管区域和记录的名称中使用星号 (\$1)
<a name="domain-name-format-asterisk"></a>

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

**托管区域**
+ 域名最左侧的标签中不能包含 \$1。例如，不允许使用 \$1.example.com。
+ 如果在其他位置包含 \$1，DNS 会将其视为 \$1 字符 (ASCII 42)，而不是通配符。

**记录**

DNS 会根据 \$1 字符出现在名称中的位置将它作为通配符或作为 \$1 字符 (ASCII 42) 来处理。请注意以下有关在记录的名称中使用 \$1 作为通配符的限制：
+ \$1 必须替换域名中最左侧的标签，例如 \$1.example.com 或 \$1.acme.example.com。如果在任何其他位置包含 \$1（例如 prod.\$1.example.com），DNS 会将其视为 \$1 字符 (ASCII 42)，而不是通配符。
+ \$1 必须替换整个标签。例如，您不能指定 \$1prod.example.com 或 prod\$1.example.com。
+ 具体的域名优先。例如，如果您为 \$1.example.com 和 acme.example.com 创建记录，Route 53 始终使用 acme.example.com 记录中的值响应对 acme.example.com 的 DNS 查询。
+ \$1 应用到针对包含星号的子域级别的 DNS 查询，以及该子域的所有子域。例如，如果您创建了名为 \$1.example.com 的记录，Route 53 使用该记录中的值来响应对 zenith.example.com、acme.zenith.example.com 和 pinnacle.acme.zenith.example.com（如果该托管区域没有任何类型的记录）的 DNS 查询。

  如果您创建名为 \$1.example.com 的记录并且没有 example.com 记录，Route 53 使用 `NXDOMAIN`（不存在域）响应对 example.com 的 DNS 查询。
**注意**  
如果您将 Route 53 与 AWS Certificate Manager 结合使用，请注意，ACM 通配符证书仅保护一个子域级别。例如，\$1.example.com 的 ACM 证书可保护 login.example.com 和 test.example.com，但不保护 test.login.example.com。有关更多信息，请参阅 [AWS Certificate Manager 证书特征和限制](https://docs.aws.amazon.com/acm/latest/userguide/acm-certificate-characteristics.html)。
+ 您可以配置 Route 53，使其对针对相同级别的所有子域以及针对域名的 DNS 查询返回相同的响应。例如，您可以配置 Route 53 以使用 example.com 记录响应对 acme.example.com 和 zenith.example.com 等的 DNS 查询。执行以下步骤：

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

  1. 为子域创建别名记录，如 \$1.example.com。将您在步骤 1 中创建的记录指定作为别名记录的目标。
+ 不能使用 \$1 作为类型为 NS 的记录的通配符。

## 设置国际化域名的格式
<a name="domain-name-format-idns"></a>

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

如果您正在注册域名，请注意以下事项：
+ 只有当顶级域 (TLD) 支持 IDN 并支持要使用的语言时，才能使用 a-z、0-9 和 -（连字符）以外的字符。要确定 TLD 支持哪些语言，请参阅[可向 Amazon Route 53 注册的域。](registrar-tld-list.md)。
+ 如果名称仅包含字母 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 注册的域。](registrar-tld-list.md)。已记录不支持 IDN 的 TLD。