※ ChatGPTを利用し、要約された質問です(原文:再帰的クエリについて)
再帰的クエリに関するドメイン解決の問題
このQ&Aのポイント
VineLinux6.2でネームサーバを立ち上げているが、ドメインが解決されない問題が発生
named.confのoptionsの設定を変更しても問題が解決せず、自分のネットワークを許可する方法がわからない
ドメイン解決には再再帰的クエリが必要だが、セキュリティ上の理由から許可されない
VineLinux6.2(kernel-3.4.87-2vl6)でネームサーバを立ち上げています。
Vertion bind-9.6
プライマリとセカンダリを公開していますが、急に自分のドメインが解決しなくなりました。
[root@ns ~]# nslookup hoge.hoge
;; Got recursion not available from プライマリネームサーバIPアドレス, trying next server
;; Got recursion not available from セカンダリネームサーバIPアドレス, trying next server
Server: プロバイダネームサーバIPアドレス
Address: プロバイダネームサーバIPアドレス#53
Non-authoritative answer:
Name: hoge.hoge
Address: プライマリネームサーバIPアドレス,
ここで、named.confのoptionsにあるrecursionを no から yes に変更すると、何事も無くプライマリネームサーバが応答します。
しかしこれでは再再帰的クエリーを許可する為、あまり好ましくありません。
そこで、
acl my-network {
自分のネットワーク;
};
recursion no;
allow-recursion {
my-network;
};
としてみたのですが、効果はありませんでした。
nslookup hogehoge 127.0.0.1
も同じ結果でした。
どこをどう触れば自分のネットワークが許可できるのかわかりません。
すみませんが、ご存知の方、よろしくお願いいたします。
---- named.conf acl and options -----
acl my-network {
192.168.99.0/24;
127.0.0.1/32;
};
options {
recursion yes; <-- no ではDNSの回答を得られません。
allow-recursion {
my-network;
};
directory "/var/ns";
listen-on port 53 {
127.0.0.1/32;
192.168.99.0/24;
};
allow-query {
my-network;
};
allow-transfer { none; };
forwarders {
プロバイダDNS;
};
empty-zones-enable no;
listen-on-v6 {none; };
recursive-clients 40;
};
お礼
maesenさん、回答ありがとうございました。 想定どおりの動きにはなっているのですが、外部からの当方のドメイン以外返事を返さないようにしようと思うと recursion は no でないといけないと思っていました。本やホームページでも「再帰的攻撃を避けるためには recursion no とする」と記載がありましたので。実は過去に、とんでもない数のDSNのリクエストを受けてメールが流れてこないことがありました。iptableなどを駆使してみたのですが、結局 recursionを設定したことが効果的だったのでやっていました。(後からkernelのアップデートで問題は解決したのですが) 考え方としては recursion no として許可するところは allow-recursion で対応しようとしていたのですが、それもうまくいかないのでずっと悩んでいました。kernelで解決したことから安定させようとしたので、今までの情報をまとめて recursion no が最適と思ったのですが、実際は自分でもdnsの応答が無いということになり、何が本当に最適な設定かわかりませんでした。 maesenさんのおかげで、答えが出たのであちこち(友人宅やスマホなど)で nslookup を試してみて allow-recursion 以外のポイントでは拒否されたので想定どおりの設定になったと思います。 どうもありがとうございました。