명명된 재귀 쿼리를 어떻게 방지할 수 있습니까?

명명된 재귀 쿼리를 어떻게 방지할 수 있습니까?

내 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";
};

이 구성을 사용하면 클라이언트가 다른 DNS 서버로 전달하여 바인딩을 해결해야 하는 재귀 쿼리를 만들 수 있습니다. 나는 추적을 한다:

dig @192.168.12.90 wikipedia.org +trace

Get: 하단에 다음과 같은 긴 트레이스가 출력됩니다.

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(Recursion Available) 비트가 설정되어 있는지 확인합니다.

예: Google DNS 서버의 경우

#dig @8.8.8.8 wikipedia.org
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

관련 정보