次のような行が表示されます
Feb 13 21:45:48 srv named[2355]: address not available resolving 'secure.gravatar.com/A/IN': 2a04:fa87:ffff::c6b5:7405#53
Feb 13 21:42:29 srv named[2355]: address not available resolving 'la1.akamaiedge.net/AAAA/IN': 2001:500:a8::e#53
/var/log/syslog
IPv4モードでのみbind
を実行しているにもかかわらず
srv # cat /etc/default/bind9
# run resolvconf?
RESOLVCONF=no
# startup options for the server
OPTIONS="-u bind -4"
なぜそうなのですか?
システムがsystemdを使用している場合、/etc/default/bind9
を編集しても効果はありません。
代わりに/lib/systemd/system/bind9.service
ファイルを編集し、ExecStart
変数に-4
オプションを追加します。私はUbuntu 16を使用しており、それを行わなければなりませんでした。
ExecStart=/usr/sbin/named -f -4 -u bind
また、再起動後、named
が-4
オプションで実行されていることを再確認してください。
この構成の混乱について実際に満たされたバグがあります https://bugs.launchpad.net/ubuntu/+source/bind9/+bug/156506
-4
オプションの変更のみが、IPv4パケットをリッスンして応答するようにbindに指示します。 AAAA
レコードの使用は無効になりません。
バインドでIPv6アドレスを破棄する方法はありますか?
それが本当に必要な場合は、バインド構成を調整して以下を含めることができます。有効なレコードをドロップしているため、dnssec検証を無効にする必要があります。
options {
...
dnssec-enable no;
filter-aaaa-on-v4 yes;
...
};
-4
をnamed
コマンドラインに追加する代わりに(これは機能しますが、named
の起動方法によっては不便な場合があります)、以下を追加することもできます。 IPv6を介して接続を試行しないことに関して同様の効果を持つ構成:
server ::/0 {
bogus yes;
};
これは、IPv6アドレスを持つサーバーにbogusとしてフラグを立て、これらのアドレスへのクエリを防止します。
おそらく言うまでもありませんが、これらのオプションは両方とも、グローバルIPv6接続のない環境でのみ使用する必要があります。named
は、これらすべての種類のエラーを常にログに記録します。
特定のサーバーへの接続に時々発生する問題に遭遇しただけの場合、それはあなた自身の側でプロトコル全体の使用を無効にする理由にはなりません。