主 DNS 服务器和从属 DNS 服务器是否应该(或者可以)具有不同的 RRSIG 条目?

主 DNS 服务器和从属 DNS 服务器是否应该(或者可以)具有不同的 RRSIG 条目?

我刚刚在主 DNS 服务器上配置了 DNSSEC,并在从每个服务器到其他服务器进行 dig 测试时发现,虽然每个服务器都有 RRSIG 条目,但它们却是不同的。

这是预期的行为吗?我发现每个服务器的签名时间都不同,这是导致这种情况的原因吗?这还是个问题吗?

主结果:

example.com.           600 IN RRSIG NS 5 2 600 (
                                20181225201200 20181125193702 47985 example.com.
                                PNY/8BLZrBZ6Ax27MsblQg/QGPyIrS/uK/xAJY9DXw+s
                                nexXcvRXbEG+3E4yotVtay/ACN4+qMto4Ny87yyM7XFI
                                t0cBHnRx6n1DqU0jX0ARNWWDjaNRW/PlYrTKeqyXesVj
                                Cew44FJDXSd+65PxFlvQRDw6ZIdSbDYdXF1OYMw= )

从属结果:

example.com.           600 IN RRSIG NS 5 2 600 (
                                20181225193928 20181125191401 47985 example.com.
                                b034jrblNOi/Rmm7o34pRMLwH2Qa4dPuJ7ssTGWam/7z
                                b8JTaCtgKwrglzBXzcGaUfcxfCTNeBV0o6HXDvQ7kmx4
                                pZVt8Igvsw/ansIJOsvG+k+nS+ZHTACsgFaOgOegTnNb
                                +SMspj5n54s/mdMhAMreMKYXBPyVEfN0PFVv574= )

答案1

这是预料之中的:如果记录中发生任何变化,例如开始/结束日期,那么签名本身也会在计算时发生变化。在区域的不同名称服务器上可能会或可能不会看到不同的 RRSIG 报告,但这在很大程度上取决于设置,这里没有详细描述。

但确实发生了,请看下文。

相同的密钥(密钥标签34505),但 5 个权威名称服务器中的每一个都提供了不同的 RRSIG(如果将 2 秒的休眠与签名起始时间戳进行比较,您会发现它们是在查询时在线计算的):

$ for ns in `dig NS cloudflare.com. +short` ; do echo -n $ns " " ; dig @$ns cloudflare.com. A +dnssec +short|grep ' 34505 '; sleep 2s; done
ns4.cloudflare.com.  A 13 2 600 20190412164722 20190410144722 34505 cloudflare.com. i7WphUbWNj+0sfA0Mp3gLueKvgDvTDF+p4HuD/x+Weu1Cuglp7Cmx/v/ b0icIaYNsUKzm6OCgDnGQNH27SD8lg==
ns5.cloudflare.com.  A 13 2 600 20190412164724 20190410144724 34505 cloudflare.com. L9/aRuVFtDunNqowLBgYZzahiWhTw7Y82LeEdseBL0ZgJlQSZj8YjB36 Dj89ozZ4KK6zRxPbFmM5VRwwV/rI3Q==
ns7.cloudflare.com.  A 13 2 600 20190412164726 20190410144726 34505 cloudflare.com. khYsYMwEwH/2obxbibonU0gYveHknrtU+pZ6CFr7sLhV2Xv7/DaTKwM7 ABI2mxApVKlEhEz3rQG6XKg/6MPKFg==
ns6.cloudflare.com.  A 13 2 600 20190412164728 20190410144728 34505 cloudflare.com. gJZXNyYpTe7WqjJwaA08M/2ysFkoHze5GEV/XpoWU/y6pOLmt4DhzL4I e/PuEvWQ6agBvtdqzGzSb10p6DQx1A==
ns3.cloudflare.com.  A 13 2 600 20190412164730 20190410144730 34505 cloudflare.com. N0DwRjQKkagAoWn4WuFekvKhPL/juxzGrrn/lOEOpX7Sqmmt+ibaZJf/ YTsSFPtuCgI2hdMBvr/+b9B6rjv4Bg==

记录RRSIG的签名是根据您看到的所有内容(当然除了签名本身)计算得出的,因此包括所有者(即左侧的域名)以及记录类型(NS此处)、算法(5即“椭圆曲线 [ECC]”)、标签数量(2因为example.com有 2 个标签)、原始 TTL(600)、签名到期(20181225193928)和签名开始(20181125191401)、密钥标签(47985)和签名者的姓名( )。加上正在签名的记录中的数据(即资源记录集example.com的全部内容)example.com. NS

RFC 4034定义 RRSIG 记录。

第 3.1 节显示:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Type Covered           |  Algorithm    |     Labels    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Original TTL                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Signature Expiration                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Signature Inception                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Key Tag            |                               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         Signer's Name         /
/                                                               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
/                                                               /
/                            Signature                          /
/                                                               /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3.1.8 规定:

Signature 字段包含涵盖
RRSIG RDATA(不包括 Signature 字段)和
由 RRSIG 所有者名称、RRSIG 类和 RRSIG Type
Covered 字段指定的 RRset 的加密签名。此字段的格式取决于
所使用的算法,这些格式在单独的配套文档中进行了描述。

答案2

如果这是一个简单的 BIND 主/从设置(我对这个问题的看法是,很可能是这种情况),执行 DNSSEC 的典型方式是签署主区域,然后仅传输(AXFR/ IXFR)已经签名的区域(区域传输将包括所有记录,也包括签名)从那里。

如果问题涉及的是这种类型的设置,那么RRSIG在对主区域进行更改(例如新记录或刷新签名)之后,在其他名称服务器传输更新的区域之前,您只能在短时间内看到不同名称服务器上的不同记录。
如果不同的RRSIG记录仍然存在,则服务器之间的区域传输设置方式可能存在问题(缺少通知?),这当然不仅会延迟记录的同步,RRSIG还会延迟对区域的所有更改。(您可能希望比较SOA.SERIAL值,例如dig +nssearch example.com.)


正如 Patrick Mevzek 已经详细描述的那样,区域签名也存在根本不同的方法,例如直接在回答查询的名称服务器上动态生成签名,在这种情况下,来自不同服务器的不同签名可能是常态,而不仅仅是发生在上述过渡的“不同步”条件下。

相关内容