在
为域名启用DNSSEC功能可以防止 DNS 欺骗,通过数字签名验证 DNS 数据的真实性和完整性,防止攻击者伪造 DNS 响应,验证域名签名的公钥记录将存储在上一级域名解析服务器中,并建立了一条从根域(root)到最终域名的信任链。我推荐使用bind9内置的DNSSEC管理功能来实现zone文件的加密、密钥的自动管理和轮转等功能。
只需要在zone配置中添加dnssec-policy即可开启dnssec功能,如:
/etc/bind/named.conf.local
zone "example.tld"{
type master;
file "/var/cache/bind/db.example.tld";
dnssec-policy "default";
inline-signing yes;
};
利用bind9中的dnssec-policy,你可以快速的设置dnssec,重启bind9后会自动为其签名。
在/var/cache/bind/下,bind9会自动生成其公钥,使用dnssec-dsfromkey来生成DS记录:
dnssec-dsfromkey -2 "/var/cache/bind/Kexample.tld.+013+29238.key" 返回: example.tld. IN DS 29238 13 2 623164299549A1FF93B62C1A9E35773B48E509BAD588197388D2CBDC9B1124CF
13代表着加密算法;3代表Digest Type;29238代表公钥id;最后为Digest。将这些数据添加到你的域名提供商,以spaceship为例:

此外你可以参考官方文档自定义dnssec-policy,如:
/etc/bind/named.conf 添加
dnssec-policy "myway" {
keys {
ksk lifetime unlimited algorithm ed25519;
zsk lifetime P60D algorithm ed25519;
};
nsec3param iterations 10 optout 0 salt-length 8; //启用 nsec3
};