本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
dnssec-trust-anchors.d, systemd.positive, systemd.negative — DNSSEC 信任锚配置
/etc/dnssec-trust-anchors.d/*.positive
/run/dnssec-trust-anchors.d/*.positive
/usr/lib/dnssec-trust-anchors.d/*.positive
/etc/dnssec-trust-anchors.d/*.negative
/run/dnssec-trust-anchors.d/*.negative
/usr/lib/dnssec-trust-anchors.d/*.negative
正向信任锚配置文件包含 DNSKEY 与 DS 资源记录。 参见 RFC 4035, Section 4.4 以了解更多有关 DNSSEC 信任锚 的说明。
正向信任锚依次从
/etc/dnssec-trust-anchors.d/
(优先级最高),
/run/dnssec-trust-anchors.d/
(优先级居中),
/usr/lib/dnssec-trust-anchors.d/
(优先级最低)
目录下后缀名为 .positive
配置文件中读取。
对于不同目录下的同名配置文件来说,
高优先级目录中的配置文件会覆盖低优先级目录中的同名配置文件。
因此,要想屏蔽
/usr/lib/dnssec-trust-anchors.d/
目录中的某个配置文件,可以在
/etc/dnssec-trust-anchors.d/
或
/run/dnssec-trust-anchors.d/
目录中
创建一个指向 /dev/null
的同名软连接。
与
DNS区域文件(RFC 1035, Section
5)一样,正向信任锚的配置文件也是一个纯文本文件。
格式上,一行表示一个 DS 或 DNSKEY 资源记录,
空行与分号(";
")开头的行将被忽略。
一个 DS 资源记录的例子:
. IN DS 19036 8 2 49aac11d7b6f6446702e54a1607371607a1a41855200fd2ce1cdde32f24e8fb5
第一个字段表示域(尾部的句点可写可不写),本例中的
".
" 表示
"根域"。
第二个字段必须是 "IN
" 。
第三个字段必须是 "DS
" 。
其余的字段分别表示:公钥标签(Key Tag), 签名算法, 摘要算法, 16进制编码的公钥摘要。
参见 RFC 4034,
Section 5 以了解
上述各字段含义的详细解释。
DNSKEY 资源记录用于定义信任锚。 一个 DNSKEY 资源记录的例子:
. IN DNSKEY 257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjFFVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoXbfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaDX6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpzW5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relSQageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulqQxA+Uk1ihz0=
第一个字段表示域(尾部的句点可写可不写),本例中的 ".
" 表示"根域"。
第二个字段必须是 "IN
" 。
第三个字段必须是 "DNSKEY
" 。
其余的字段分别表示:DNSKEY Flags, 协议, 公钥算法, Base64编码的公钥。
参见 RFC 4034,
Section 2 以了解
上述各字段含义的详细解释。
如果为同一个域定义了多个 DS 或 DNSKEY 资源记录, 那么 所有公钥都将被认可并且彼此平等 (即使这些记录位于不同目录下的配置文件中)。
注意,如果没有专门为根域配置正向信任锚,
那么 systemd-resolved
将会自动为根域使用内置的信任锚公钥,
因此
通常没必要专门为根域配置信任锚。
仅在根域的信任锚确实发生变化的情况下,
才需要专门为根域配置新的信任锚。
通常建议将信任锚封装为 DS 资源记录(而不是 DNSKEY 资源记录)。
如果发现某个 DS 资源记录中封装的信任锚已经被撤销,
那么在将会自动从信任锚数据库中删除该记录。
参见 RFC
5011 已了解有关信任锚的撤销。
注意,systemd-resolved
不会自动从 DNS 服务器更新自己的信任锚数据库。
推荐的做法是升级 systemd 软件包的版本
或者更新信任锚配置文件。
最新的 Internet 根域 DNSSEC 信任锚 可以从 IANA Trust Anchor and Keys 页面获取。
反向信任锚用于定义应该针对哪些域关闭 DNSSEC 验证机制。
反向信任锚配置文件与正向信任锚配置文件的存放目录、优先级、覆盖规则都完全相同。
反向信任锚配置文件的名称必须以 .negative
为后缀,
空行与分号(";
")开头的行将被忽略。
每行一个域名,
表示关闭该域名及其所有子域名的 DNSSEC 验证机制。
反向信任锚通常用于禁用某些私有域名的DNSSEC验证机制, 因为这些私有域名 无法在互联网DNS服务器上进行验证。
RFC 7646 详细描述了反向信任锚。
如果没有设置任何反向信任锚配置文件, 那么将使用一组内置的众所周知的私有DNS区域 作为反向信任锚。
可以使用
DNSSECNegativeTrustAnchors=
选项(参见
systemd.network(5)
手册)专门针对特定的网络接口设置专属的反向信任锚。