nsupdate,收到 BADKEY 错误

str*_*cer 6 domain-name-system bind dnssec

我正在尝试使用nsupdate从名称服务器本身内部执行的方法更新名称,但收到错误消息 ; TSIG error with server: tsig indicates error

我创建了一个密钥dnssec-keygen -a hmac-md5 -b 512 -n HOST -r /dev/urandom dyn.mydomain.com.并将秘密复制到了named.conf。

我的named.conf如下

key "dyn.mydomain.com." {
   algorithm hmac-md5;
   secret "T2DjtGkGAzPAVrL6zar9GpxjNQ1iOjJzWKhPsF5gu0xQbaONhK7ZmC0n WKatgbGEHqla1uoxG3FdktQPolMIjQ==";
};
zone "dyn.mydomain.com." {
   type master;
   file "/var/cache/bind/dyn.mydomain.com.hosts";
   allow-update {
       key "dyn.mydomain.com.";
   };
};
Run Code Online (Sandbox Code Playgroud)

文件 dyn.mydomain.com.hosts 如下所示:

$ORIGIN .
$TTL 8400       ; 2 hours 20 minutes
dyn.mydomain.com  IN SOA  ns. root. (
                           2007072513 ; serial
                           7200       ; refresh (2 hours)
                           900        ; retry (15 minutes)
                           1857600    ; expire (3 weeks 12 hours)
                           8400       ; minimum (2 hours 20 minutes)
                           )
                   NS      ns.dyn.mydomain.com.
$ORIGIN dyn.mydomain.com.
ns                      A       [ip of this name server]
$TTL 60 ; 1 minute
Run Code Online (Sandbox Code Playgroud)

我重新设置bind9,然后使用

nsupdate -v -d -k /etc/bind/Kdyn.mydomain.com.+157+53489.private
> server localhost
> zone dyn.mydomain.com
> update add test.dyn.mydomain.com IN A 80.80.80.80
> send

Sending update to 127.0.0.1#53
Outgoing update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id:  50553
;; flags: ; ZONE: 1, PREREQ: 0, UPDATE: 1, ADDITIONAL: 1
;; ZONE SECTION:
;dyn.mydomain.com.                   IN      SOA

;; UPDATE SECTION:
test.dyn.mydomain.com.       60      IN      A       80.80.80.80

;; TSIG PSEUDOSECTION:
dyn.mydomain.com.            0       ANY     TSIG    hmac-md5.sig-alg.reg.int. 1325777156 300 16 5k3AkgLuCziNKtaeb39MRE== 50553 NOERROR 0

; TSIG error with server: tsig indicates error

Reply from update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOTAUTH, id:  50553
;; flags: qr ra ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 1
;; TSIG PSEUDOSECTION:
dyn.mydomain.com.            0       ANY     TSIG    hmac-md5.sig-alg.reg.int. 1325777156 300 0  50553 BADKEY 0
Run Code Online (Sandbox Code Playgroud)

原因是什么?

小智 3

您确定您使用的是正确的密钥, /etc/bind/ dir 中没有其他密钥吗?:-)

如果是这样,请检查您的密钥文件的权限?

chmod 400 /etc/bind/Kdyn.mydomain.com.+157+53489.private
Run Code Online (Sandbox Code Playgroud)

另外,请确保您的密钥与 dnssec-keygen 生成的密钥匹配

(提示:你的秘密线路中的空间)

  • 我遇到了问题:我正在使用带有 plesk 配置界面的服务器,并且 plesk 似乎不使用 /etc/bind/named.conf 作为配置文件(尽管它存在),但它使用 chroot 目录 /var/ 中的文件命名/运行根/等。令人困惑的是,第一个目录中不存在符号链接...您的建议帮助我找到了原因,所以我将向您授予赏金。 (2认同)