私は、Debian Jessieで信頼できるBIND 9.9.5-9 + deb8u8-Debianを実行しています。正常に動作するrobin.info
のワーキングゾーンがあります(pingdom.comのDNSチェックツールのテストなど、さまざまなテストで成功が報告されています)
私はそれをdnssecで保護しようとしています。私は BIND DNSSEC Guide の第4章にある説明に従って、簡単に始めます。 ZSKとKSKを正常に生成し、ゾーンを更新して太字の行を追加しました。
zone "robin.info" { type master; file "/etc/bind/zones/robin.info"; include"/etc/bind /include-zones/acls"; キーディレクトリ "/etc/bind/dnssec/robin.info/2016"; inline-signing yes; auto-dnssec maintain; };
.jnl
、.jbk
、.signed
、.signed.jnl
ファイルがゾーンファイルに存在しないことを確認してから、rndc reload
でバインドを再開し、ゾーンがが読み込まれ、DNSKEYエントリがありましたが、ログにいくつかのエラーがありました:
11-Dec-2016 13:54:20.742 zone robin.info/IN/internal (signed): loaded serial 2016121111
11-Dec-2016 13:54:20.742 zone robin.info/IN/external (signed): loaded serial 2016121111
11-Dec-2016 13:54:20.750 zone robin.info/IN/external (signed): receive_secure_serial: unchanged
11-Dec-2016 13:54:20.750 zone robin.info/IN/external (signed): reconfiguring zone keys
11-Dec-2016 13:54:20.766 zone robin.info/IN/external (signed): next key event: 11-Dec-2016 14:54:20.750
11-Dec-2016 13:54:20.796 zone robin.info/IN/internal (signed): receive_secure_serial: unchanged
11-Dec-2016 13:54:20.796 zone robin.info/IN/internal (signed): reconfiguring zone keys
11-Dec-2016 13:54:20.805 malformed transaction: /etc/bind/zones/robin.info.signed.jnl last serial 2016121113 != transaction first serial 2016121111
11-Dec-2016 13:54:20.805 zone robin.info/IN/internal (signed): zone_rekey:dns_journal_write_transaction -> unexpected error
これらのシリアルエラーは、ゾーンを更新するときに問題を引き起こす可能性があります。署名なしゾーン/etc/bind/zones/robin.info
に変更を加え、シリアル番号を2016121121
に増やします
11-Dec-2016 13:57:58.658 zone robin.info/IN/internal (signed): serial 2016121121 (unsigned 2016121121)
11-Dec-2016 13:57:58.658 zone robin.info/IN/internal (signed): could not get zone keys for secure dynamic update
11-Dec-2016 13:57:58.658 zone robin.info/IN/internal (signed): receive_secure_serial: not found
11-Dec-2016 13:57:58.659 malformed transaction: /etc/bind/zones/robin.info.jnl last serial 2016121121 != transaction first serial 2016121111
11-Dec-2016 13:57:58.659 zone robin.info/IN/external (unsigned): not loaded due to errors.
11-Dec-2016 13:57:58.659 all zones loaded
11-Dec-2016 13:57:58.659 running
11-Dec-2016 13:57:58.661 zone robin.info/IN/internal (signed): reconfiguring zone keys
11-Dec-2016 13:57:58.670 malformed transaction: /etc/bind/zones/robin.info.signed.jnl last serial 2016121115 != transaction first serial 2016121111
11-Dec-2016 13:57:58.670 zone robin.info/IN/internal (signed): zone_rekey:dns_journal_write_transaction -> unexpected error
11-Dec-2016 13:57:58.670 zone robin.info/IN/external (signed): reconfiguring zone keys
11-Dec-2016 13:57:58.671 zone robin.info/IN/external (signed): next key event: 11-Dec-2016 14:57:58.670
古いゾーンがまだロードされていることをDig
で確認できます(SOAおよび変更が表示されていない場合))。
ここにいくつかのエラーメッセージがあります:
1)キーに問題があることを示唆しています(「安全な動的更新のためにゾーンキーを取得できませんでした」)。ただし、bindは最初のロード時に問題がなく、私のキーファイルはbindによって読み取り可能です(名前は、グループbind
のメンバーであるユーザーbind
として実行されます):
xavier@dent:/etc/bind/zones$ ls -l /etc/bind/dnssec/robin.info/2016
total 17k
-rw-r--r-- 1 root bind 603 Dec 10 17:23 Krobin.info.+008+43324.key
-rw-r----- 1 root bind 1.8k Dec 10 17:23 Krobin.info.+008+43324.private
-rw-r--r-- 1 root bind 604 Dec 10 17:22 Krobin.info.+008+44679.key
-rw-r----- 1 root bind 1.8k Dec 10 17:22 Krobin.info.+008+44679.private
2)シリアルのエラーを示唆しています(最初のエラーはlast serial 2016121113 != transaction first serial 2016121111
でした)。しかし、ISCのKBで次のように読むことができるので、シリアルについてあまり心配する必要はないと思いました。
この応答のシリアル番号は、example.com.dbファイルのシリアル番号と同じではないことに注意してください。 Namedは、ゾーンの署名されたバージョンのシリアル番号を、署名されていないバージョンとは無関係に追跡します。署名されていないゾーンが署名されたコピーのシリアル番号より大きい新しいシリアル番号で更新される場合、署名されたコピーはそれに一致するように増加しますが、それ以外は2つは別々に保持されます。 [1]
これまでのところ、ゾーンを更新するために見つけた唯一の方法は、バインドを停止し、.jnl
、.jbk
、.signed
および.signed.jnl
ファイルを削除して、バインドを再開することです。これは間違っているようで、新しいゾーンをアクティブにするためにシリアルを十分に増やす必要があります。私は何を間違っていますか、そしてどのように私のdnssecを修正できますか?
ようやく問題の根本的な原因を見つけたと思います。同じマスターゾーンファイルを2回含むように構成された2つのビューがあります。
2つのゾーンに同じファイルを使用することはできません。したがって、これは無効であり、問題が発生しました。
view "internal" {
match-clients ...;
zone "example.com" {
type master;
file "/etc/bind/zones/example.net";
};
};
view "external" {
match-clients ...;
zone "example.com" {
type master;
file "/etc/bind/zones/example.net";
};
};
ゾーンを共有する適切な方法は、「例によるBIND 9のビューの理解」ガイドの第4章で説明されています。 基本的に、ゾーンの1つだけがマスターゾーンでなければならず、もう1つはマスターゾーンでなければなりません。奴隷でなければなりません。いくつかのACL、キーを追加し、適切な場所にローカルホストを通知した後、これらのエラーを取り除きました。
最後に、これは私の最終的な構成です:
key "internal" {
// TSIG Key generated with dnssec-keygen -a HMAC-MD5 -b 512 -n USER internal
algorithm hmac-md5;
secret "XXXX";
};
view "internal" {
match-clients { key internal; ...IPs...; }; // our network
zone "robin.info" {
type slave;
file "/etc/bind/slave-zones/robin.info"; // Not the same file as external view!
masters { 127.0.0.1; };
};
};
view "external" {
match-clients { !key internal; "any"; }; // everyone else
server 127.0.0.1 {
/* Deliver notify messages to internal view with internal key. */
keys { internal; };
};
zone "robin.info" {
type master;
file "/etc/bind/zones/robin.info";
// ACL file with allow-transfer and also-notify
// including secondary DNS servers and 127.0.0.1
include "/etc/bind/acls";
key-directory "/etc/bind/dnssec/robin.info/2017";
inline-signing yes;
auto-dnssec maintain;
};
};
コアはcould not get zone keys for secure dynamic update
エラーメッセージのようで、署名なしにフォールバックします。また、SOA署名用に自動バンプする署名パスを経由していないため、SOAは古くなっています。
3つのゾーンに署名を追加するときに同じエラーメッセージが表示され、頭を掻いた後、ため息をつき、名前を付けて再起動しました。それで解決しました。 9.11.0P3をバインドします。
署名を追加するときに過去にこの問題が発生したことは覚えていませんが、他のすべてのゾーンは、以前のバージョンのBindでの移行により、かなり前に署名されていました。また、これらの3つのゾーンは逆DNSファイルであるため、ファイル名が少し変わっています。私が説明しなければならないのは、これだけです。
つまり、バグをバインドし、named全体を再起動して、実際のキーファイルを見つけてから署名します。
私も同様の問題に見舞われており、debian jessieのbindも使用しています。私はいくつかのビューも共有ファイルも持っていませんが、bindは次の場合と同じ種類のエラーで不平を言いました:
11-Dec-2016 13:54:20.796 zone robin.info/IN/internal (signed): reconfiguring zone keys
11-Dec-2016 13:54:20.805 malformed transaction: /etc/bind/zones/robin.info.signed.jnl last serial 2016121113 != transaction first serial 2016121111
11-Dec-2016 13:54:20.805 zone robin.info/IN/internal (signed): zone_rekey:dns_journal_write_transaction -> unexpected error
私の解決策は使用することでした
rndc sync -clean
バインドの再読み込みとともに(動的更新が有効になっていない場合でも!)男から:
Sync changes in the journal file for a dynamic zone to the master file. If the
"-clean" option is specified, the journal file is also removed. If no zone is
specified, then all zones are synced.