
私のbind9設定は次のとおりです:
acl allowed {
192.168.12.0/24;
10.10.0.0/24;
};
options {
listen-on port 53 { 127.0.0.1; 192.168.12.90; 10.10.0.21; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-notify { localnets; };
allow-query { none; };
allow-recursion { allowed; };
allow-query-cache { allowed; };
allow-transfer { 192.168.12.117; };
allow-update { none; };
blackhole { none; };
forward only;
forwarders {
192.168.12.4;
};
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
この構成では、クライアントが再帰クエリを実行できるようにし、bind は別の DNS サーバーに転送して解決する必要があります。トレースを実行します。
dig @192.168.12.90 wikipedia.org +trace
取得: 下部に次の内容を含む長いトレースを出力します:
wikipedia.org. 600 IN A 91.198.174.192
;; Received 86 bytes from 208.80.154.238#53(ns0.wikimedia.org) in 140 ms
ローカルDNSサーバーは、クエリを転送するだけの命令があったにもかかわらず、解決を行うためにルートサーバーからns0.wikimediaまで再帰クエリを実行していることは明らかです(forward only;
指令)。
DNS サーバーに再帰クエリを許可せずに、純粋な転送を維持するにはどうすればよいでしょうか?
ありがとう。
答え1
マニュアルによるとdig
:
+[なし]トレース- 検索対象の名前のルートネームサーバーからの委任パスのトレースを切り替えます。トレースはデフォルトでは無効になっています。トレースを有効にすると、digは検索対象の名前を解決するために反復的なクエリを実行します。ルート サーバーからの紹介に従い、検索を解決するために使用された各サーバーからの回答を表示します。
したがって、サーバーが再帰クエリをサポートしているかどうかを確認するには、次のコマンドを実行します。
#dig @192.168.12.90 wikipedia.org
応答ヘッダーに RA (再帰利用可能) ビットが設定されているかどうかを確認します。
例: Google DNS サーバーの場合
#dig @8.8.8.8 wikipedia.org
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1