ADC

配置 DNSSEC

执行以下步骤来配置 DNSSEC:

  1. 在 NetScaler 设备上启用 DNSSEC。
  2. 为该区域创建区域签名密钥和密钥签名密钥。
  3. 将两个密钥添加到该区域。
  4. 用钥匙在区域上签名。

NetScaler 设备不充当 DNSSEC 解析器。仅在以下部署场景中支持 ADC 上的 DNSSEC:

  1. adns—NetScaler 是 ADNS,它自己生成签名。
  2. 代理 — NetScaler 充当 DNSSEC 代理。假设 NetScaler 以可信模式放置在 ADNS/LDNS 服务器的前面。ADC 仅充当代理缓存实体,不验证任何签名。

启用和禁用 DNSSEC

在 NetScaler 上启用 DNSSEC,以便 ADC 能够响应支持 DNSSEC 的客户端。默认情况下,DNSSEC 处于启用状态。

如果您不希望 NetScaler 使用 DNSSEC 特定信息响应客户端,则可以禁用 DNSSEC 功能。

使用 CLI 启用或禁用 DNSSEC

在命令提示符处,键入以下命令以启用或禁用 DNSSEC 并验证配置:

-  set dns parameter -dnssec ( ENABLED | DISABLED )
-  show dns parameter  
<!--NeedCopy-->

示例:

> set dns parameter -dnssec ENABLED
 Done
> show dns parameter
        DNS parameters:
        DNS retries: 5
         .
         .
         .
         DNSEC Extension: ENABLED
        Max DNS Pipeline Requests: 255
 Done

<!--NeedCopy-->

使用 GUI 启用或禁用 DNSSEC

  1. 导航到“流量管理”>“DNS”。
  2. 在详细信息窗格中,单击“更改 DNS 设置”。
  3. 在“配置 DNS 参数”对话框中,选中或清除“启用 DNSSEC 扩展”复选框。

为区域创建 DNS 密钥

对于要签署的每个 DNS 区域,必须创建两对非对称密钥。一对称为区域签名密钥 (ZSK),用于对区域中的所有资源记录集进行签名。第二对称为密钥签名密钥 (KSK),仅用于签署区域中的 DNSKEY 资源记录。

创建 ZSK 和 KSK 时 suffix.key ,会将附加到密钥的公共组件的名称中。将附加 suffix.private 到其私有组件的名称中。追加会自动发生。

NetScaler 还会创建委托签名者 (DS) 记录,并将后缀.ds 附加到记录名称中。如果父区域是已签名区域,则必须在父区域中发布 DS 记录以建立信任链。

创建密钥时,密钥存储在 /nsconfig/dns/ 目录中,但不会自动发布在区域中。使用命令创建密钥后,必须使用 create dns key 命令在区域中明确发布密钥。 add dns key 生成密钥的过程与在区域中发布密钥的过程是分开的,这样您就可以使用其他方式来生成密钥。例如,您可以使用安全 FTP (SFTPbind-keygen) 导入由其他密钥生成程序(如)生成的密钥,然后在区域中发布密钥。有关在区域中发布密钥的更多信息,请参阅 在区域中发布 DNS 密钥

执行本主题中描述的步骤以创建区域签名密钥,然后重复这些步骤以创建密钥签名密钥。遵循命令语法的示例首先为区域 example.com 创建区域签名密钥对。然后,该示例使用命令为该区域创建密钥签名密钥对。

从版本 13.0 版本 61.x 开始,NetScaler 设备现在支持更强大的加密算法,例如 RSASHA256 和 RSASHA512,用于对 DNS 区域进行身份验证。以前,仅支持 RSASHA1 算法。

使用 CLI 创建 DNS 密钥

在命令提示符下,键入:

create dns key -zoneName <string> -keyType <keyType> -algorithm <algorithm> -keySize <positive_integer> -fileNamePrefix <string>

示例:

> create dns key -zoneName example.com -keyType zsk -algorithm RSASHA256 -keySize 1024 -fileNamePrefix example.com.zsk.rsasha1.1024
File Name: /nsconfig/dns/example.com.zsk.rsasha1.1024.key (public); /nsconfig/dns/example.com.zsk.rsasha1.1024.private (private); /nsconfig/dns/example.com.zsk.rsasha1.1024.ds (ds)
This operation may take some time, Please wait...
 Done
> create dns key -zoneName example.com -keyType ksk -algorithm RSASHA512 -keySize 4096 -fileNamePrefix example.com.ksk.rsasha1.4096
File Name: /nsconfig/dns/example.com.ksk.rsasha1.4096.key (public); /nsconfig/dns/example.com.ksk.rsasha1.4096.private (private); /nsconfig/dns/example.com.ksk.rsasha1.4096.ds (ds)
This operation may take some time, Please wait...
 Done
<!--NeedCopy-->

使用 GUI 创建 DNS 密钥

  1. 导航到“流量管理”>“DNS”。
  2. 在详细信息区域中,单击“创建 DNS 密钥”。
  3. 输入不同参数的值,然后单击“创建”。

    创建 DNS 密钥

    注意:要修改现有密钥的文件名前缀,请执行以下操作:

    • 单击“浏览”按钮旁边的箭头。
    • 单击“本地”或“设备”(取决于现有密钥是存储在本地计算机上还是存储在设备上的 /nsconfig/dns/ 目录中)
    • 浏览到密钥的位置,然后双击密钥。 文件名前缀 框仅填充现有密钥的前缀。相应地修改前缀。

在区域中发布 DNS 密钥

通过将密钥(区域签名密钥或密钥签名密钥)添加到 NetScaler,即可在区域中发布。在签署区域之前,必须先在区域中发布密钥。

在区域中发布密钥之前,该密钥必须在/ nsconfig/dns/ 目录中可用。如果您在另一台计算机上创建了 DNS 密钥(例如,使用 bind-keygen 程序),请确保将该密钥添加到 /nsconfig/dns/ 目录中。然后在区域中发布密钥。使用 ADC GUI 将密钥添加到 /nsconfig/dns/ 目录中。或者,使用其他程序将密钥导入目录,例如安全 FTP (SFTP)。

对要在给定区域中发布的每个公私密钥对使用该 add dns key 命令。如果您为某个区域创建了 ZSK 对和 KSK 对,请先使用 add dns key 命令在区域中发布其中一个密钥对。重复该命令以发布另一对密钥。对于您在区域中发布的每个密钥,都会在该区域中创建 DNSKEY 资源记录。

遵循命令语法的示例首先在区域中发布区域签名密钥对(为 example.com 区域创建)。然后,该示例使用命令在区域中发布密钥签名密钥对。

使用 CLI 在区域中发布密钥

在命令提示符处,键入以下命令以在区域中发布密钥并验证配置:

-  add dns key <keyName> <publickey> <privatekey> [-expires <positive_integer> [<units>]] [-notificationPeriod <positive_integer> [<units>]] [-TTL <secs>]
-  show dns zone [<zoneName> | -type <type>]
<!--NeedCopy-->

示例:

> add dns key example.com.zsk example.com.zsk.rsasha1.1024.key example.com.zsk.rsasha1.1024.private -expires 121 -TTL 5
 Done
> add dns key example.com.ksk example.com.ksk.rsasha1.4096.key example.com.ksk.rsasha1.4096.private -expires 121 -TTL 5
 Done
> show dns zone example.com
         Zone Name : example.com
         Proxy Mode : NO
         Domain Name : example.com
                 Record Types : NS SOA DNSKEY
         Domain Name : ns1.example.com
                 Record Types : A
         Domain Name : ns2.example.com
                 Record Types : A
 Done
<!--NeedCopy-->

使用 GUI 在 DNS 区域中发布密钥

导航到 流量管理 > DNS > 密钥

注意: 对于公钥和私钥,要添加存储在本地计算机上的密钥,请单击“浏览”按钮旁边的箭头,单击“本地”,浏览到密钥的位置,然后双击该密钥。

配置 DNS 密钥

您可以配置已在区域中发布的密钥的参数。您可以修改密钥的到期时间、通知期限和生存时间 (TTL) 参数。如果您更改密钥的到期时间,设备会自动使用该密钥对区域中的所有资源记录进行重新签名。如果使用特定密钥对区域进行签名,则会进行重新签名。

使用 CLI 配置密钥

在命令提示符处,键入以下命令以配置密钥并验证配置:

-  set dns key <keyName> [-expires <positive_integer> [<units>]] [-notificationPeriod <positive_integer> [<units>]] [-TTL <secs>]
-  show dns key [<keyName>]
<!--NeedCopy-->

示例:

> set dns key example.com.ksk -expires 30 DAYS -notificationPeriod 3 DAYS -TTL 3600
 Done
> show dns key example.com.ksk
1)      Key Name: example.com.ksk
        Expires: 30 DAYS        Notification: 3 DAYS    TTL: 3600
        Public Key File: example.com.ksk.rsasha1.4096.key
        Private Key File: example.com.ksk.rsasha1.4096.private
 Done
<!--NeedCopy-->

使用 GUI 配置密钥

  1. 导航到 流量管理 > DNS > 密钥

  2. 在详细信息窗格中,单击要配置的密钥,然后单击“打开”。

  3. 在配置 DNS 密钥对话框中,修改以下参数的值,如下所示:

    • 过期—过期
    • Notification Period(通知期限)—notificationPeriod
    • TTL—TTL
  4. 单击确定。

签名和取消签名 DNS 区域

要保护 DNS 区域,必须使用在该区域中发布的密钥对该区域进行签名。当您签署区域时,NetScaler 会为每个所有者名称创建一个 Next Secure (NSEC) 资源记录。然后,它使用密钥签名密钥对 DNSKEY 资源记录集进行签名。最后,它使用 ZSK 对区域中的所有资源记录集进行签名,包括 DNSKEY 资源记录集和 NSEC 资源记录集。每次签名操作都会为区域中的资源记录集生成签名。签名是在名为 RRSIG 资源记录的新资源记录中捕获的。

签署区域后,保存配置。

使用 CLI 对区域进行签名

在命令提示符处,键入以下命令对区域进行签名并验证配置:

-  sign dns zone <zoneName> [-keyName <string> ...]
-  show dns zone [<zoneName> | -type (ADNS | PROXY | ALL)]
-  save config
<!--NeedCopy-->

示例:

> sign dns zone example.com -keyName example.com.zsk example.com.ksk
 Done
> show dns zone example.com
         Zone Name : example.com
         Proxy Mode : NO
         Domain Name : example.com
                 Record Types : NS SOA DNSKEY RRSIG NSEC
         Domain Name : ns1.example.com
                 Record Types : A RRSIG NSEC
         Domain Name : ns2.example.com
                 Record Types : A RRSIG
         Domain Name : ns2.example.com
                 Record Types : RRSIG NSEC
Done
> save config
 Done
<!--NeedCopy-->

使用 CLI 取消对区域的签名

在命令提示符处,键入以下命令取消对区域的签名并验证配置:

-  unsign dns zone <zoneName> [-keyName <string> ...]
-  show dns zone [<zoneName> | -type (ADNS | PROXY | ALL)]
<!--NeedCopy-->

示例:

> unsign dns zone example.com -keyName example.com.zsk example.com.ksk
 Done
> show dns zone example.com
         Zone Name : example.com
         Proxy Mode : NO
         Domain Name : example.com
                 Record Types : NS SOA DNSKEY
         Domain Name : ns1.example.com
                 Record Types : A
         Domain Name : ns2.example.com
                 Record Types : A
 Done
<!--NeedCopy-->

使用 GUI 对区域进行签名或取消签名

  1. 导航到 流量管理 > DNS > 区域
  2. 在详细信息窗格中,单击要签名的区域,然后单击“签名/取消签名”。
  3. 在“签名/取消签名 DNS 区域”对话框中,执行以下操作之一:
    • 要对区域进行签名,请选中要用于签署区域的密钥(区域签名密钥和密钥签名密钥)的复选框。

      您可以使用多个区域签名密钥或密钥签名密钥对对对区域进行签名。

    • 要取消对区域的签名,请清除要取消签名区域的密钥(区域签名密钥和密钥签名密钥)的复选框。

      您可以使用多个区域签名密钥或密钥签名密钥对取消签名该区域。

  4. 单击确定。

查看区域中给定记录的 NSEC 记录

您可以查看 NetScaler 为区域中的每个所有者名称自动创建的 NSEC 记录。

使用 CLI 查看区域中给定记录的 NSEC 记录

在命令提示符处,键入以下命令以查看区域中给定记录的 NSEC 记录:

show dns nsecRec [<hostName> | -type (ADNS | PROXY | ALL)]

示例:

> show dns nsecRec example.com
1)      Domain Name : example.com
        Next Nsec Name: ns1.example.com
        Record Types : NS SOA DNSKEY RRSIG NSEC
 Done
<!--NeedCopy-->

使用 GUI 查看区域中给定记录的 NSEC 记录

  1. 导航到“流量管理”>“DNS”>“记录”>“下一条安全记录”。
  2. 在详细信息窗格中,单击要查看 NSEC 记录的记录的名称。您选择的记录的 NSEC 记录显示在“详细信息”区域中。

移除 DNS 密钥

当密钥过期或密钥被泄露时,将密钥从发布的区域中移除。当您从区域中删除密钥时,该区域将自动使用该密钥取消签名。使用此命令删除密钥不会删除 /nsconfig/dns/ 目录中存在的密钥文件。如果不再需要密钥文件,则必须将其从目录中明确删除。

使用 CLI 从 NetScaler 中删除密钥

在命令提示符处,键入以下命令以删除密钥并验证配置:

-  rm dns key <keyName>
-  show dns key <keyName>
<!--NeedCopy-->

示例:

> rm dns key example.com.zsk
 Done
> show dns key example.com.zsk
ERROR: No such resource [keyName, example.com.zsk]

<!--NeedCopy-->

使用 GUI 从 NetScaler 中删除密钥

  1. 导航到 流量管理 > DNS > 密钥
  2. 在详细信息窗格中,单击要从 ADC 中删除的密钥的名称,然后单击“删除”。

撤销 DNS 密钥

尽管密钥滚动通常是提前安排的,但有时如果怀疑密钥已被泄露,则需要立即将密钥翻转。在这种情况下,必须迅速逐步淘汰泄露的密钥,然后才能激活新密钥。为了确保平稳过渡,建议将辅助密钥保持在就绪状态,如果密钥被泄露,可以立即激活该密钥。通过使用撤销密钥方法,您可以节省激活辅助密钥和删除泄露密钥的时间。

注意:

如果您撤销密钥,除非您明确将其删除,否则它将保留在系统中。由于设置了自动滚动选项,因此如果您不手动删除密钥,系统将在配置的到期日期之后自动翻转密钥。在自动滚动过程中,将创建一个新密钥供您根据需要使用。

使用 CLI 启用撤销

在命令提示符下,键入:

set dns key <keyName> [-revoke]

示例:

Set dns key secure.example.zsk -revoke

使用 GUI 启用撤销

  1. 导航到 流量管理 > DNS > 密钥
  2. 在详细信息窗格中,单击要配置的密钥,然后单击“打开”。
  3. 在“配置 DNS 密钥”页面中,选择或清除“撤销”。
  4. 单击确定

自动翻转密钥

在 NetScaler 中,您可以根据配置的频率周期自动执行密钥滚动过程。通过自动执行翻转过程,您可以排除错过密钥滚动的可能性。NetScaler 负责创建密钥、发布、激活、签名和取消签名密钥,如果启用了自动滚动选项,则会自动删除旧密钥。此外,还会发送有关添加、激活和删除旧密钥的 SNMP 通知。

注意:

如果在 GSLB 站点中启用区域传输参数,则全反密钥将传输到所有 GSLB 站点。

如果您要从不支持区域传输的版本升级到支持区域传输的版本,请为现有密钥启用翻转功能。在启用密钥滚动选项之前,请确保密钥未过期。

使用 CLI 配置自动密钥滚动

在命令提示符下,键入:

set dns key <keyName> [-autoRollover (ENABLED | DISABLED)] [-RolloverMethod <PrePublication | DoubleSignature | DoubleRRset>]
<!--NeedCopy-->

示例:

Set dns key secure.example.zsk – autoRollover Enabled -RolloverMethod Prepublication

使用 GUI 配置自动密钥滚动

  1. 导航到 流量管理 > DNS > 密钥
  2. 在详细信息窗格中,单击要配置的密钥,然后单击“打开”。
  3. 配置 DNS 密钥 页面中,更新以下参数:
    • 自动翻转-启用自动翻转按键的选项。
    • 翻转方法-选择翻转方法。
  4. 单击确定。

SNMP 警报

启用自动翻转后,您可以为 DNSSEC 密钥事件启用 SNMP 警报。 启用 SNMP 警报时,NetScaler 会根据事件成功还是失败生成相应的警报(DNSSEC-KEY-AUTOMGMT-STATUS-SUCCESS 或 DNSSEC-KEY-AUTOMGMT-STATUS-FAILURE)。例如,当您创建 DNSSEC 密钥且创建事件成功时,会生成 DNSSEC-KEY-AUTOMGMT-STATUS-SUCCESS 警报。

有关 SNMP 警报的更多信息,请参阅 [将 NetScaler 配置为生成 SNMP 陷阱] (/zh-cn/citrix-adc/current-release/system/snmp/generating-snmp-traps-on-citrix-adc.html)

DNS 区域转移

要将 DNSSEC 密钥与其他 DNS 服务器同步,必须启用区域传输参数。只有启用了 AutomaticConfigSync 选项,才能将密钥从一个 DNS 服务器同步到 GSLB 站点中的其他 DNS 服务器。有关实时同步的更多信息,请参阅参与 GSLB 的站点之间的实时同步。 在 Netscaler 中可以进行 DNS 区域传输,其中 GSLB 是在不同位置为每台 DNS 服务器配置的。

有关同步的更多信息,请参见 在 GSLB 设置中同步配置

在配置了 GSLB 的 NetScaler 中可以进行 DNS 区域传输。确保在不同的位置为每台 DNS 服务器配置 GSLB。

使用 CLI 启用或禁用区域传输

在命令提示符下,键入:

set dns parameter - ZoneTransfer (ENABLED | DISABLED)

示例:

set dns parameter - ZoneTransfer ENABLED

Done
<!--NeedCopy-->

使用 GUI 启用或禁用区域传输

  1. 导航到“流量管理”>“DNS”。
  2. 在详细信息窗格的“设置”下,单击“更改 DNS 设置”
  3. 配置 DNS 参数 页面中,选择或清除“区域传输”。