바인딩: 재귀가 허용되지 않으면 전달 영역이 작동하지 않습니다.

바인딩: 재귀가 허용되지 않으면 전달 영역이 작동하지 않습니다.

나는 다음과 같은 설정을 가지고 있습니다 :

  • DNS 서버는 인터넷에서 액세스할 수 있으며 영역에 대한 권한이 있습니다.foo.com
  • DNS 서버는 로컬에서만 액세스할 수 있으며 해당 영역에 대한 권한이 있어야 합니다.test.lab.foo.com

내가 달성하려는 것 :

외부 세계의 DNS 쿼리가 첫 번째 DNS 서버에 도달하여 해당 영역에 속한 레코드를 가져오면 test.lab.foo.com두 번째 DNS 서버에 재귀 요청을 한 다음 레코드를 전달하기를 원합니다.

특히 영역 전송을 수행하거나 인터넷에서 두 번째 DNS 서버에 액세스할 수 있도록 만들고 싶지 않습니다.

내 구성은 다음과 같습니다. (여기에는 중요하다고 생각되는 부분만 복사했습니다.)

첫 번째 DNS 서버에서

options {
    allow-recursion {
        localnets;
        localhost;
        internal;
        my-datacenter;
        mc-office;
    };
};

zone "test.lab.foo.com" {
        forward only;
        forwarders {
            <private IP of second DNS server>;
        };
        type forward;
    };

   zone "foo.com" {
        file "/etc/bind/zones/foo.com.zone";
        type master;
    };

내 질문:

allow-recursion블록에 허용된 로컬 네트워크에 있으면 예상대로 작동합니다. 인터넷에서 DNS 조회를 시도하면 NOERROR가 발생하고 빈 응답이 표시됩니다.

allow-recursion디버깅하는 동안 목록을 조정 하고 추가했습니다 any. 그런 다음 작동하기 시작했습니다. 하지만 내 DNS 서버가 어떤 종류의 재귀도 허용하는 것을 원하지 않습니다. 사실 저는 "외부" 조회가 이 특정 영역에 대해서만 재귀적으로 이루어지기를 원합니다.

allow-recursion한 지역만 설정하는 방법은 무엇인가요 ?

답변1

이 문제는 2a0a:e5c0:2:f::a에서 호스팅되는 예제 도메인으로 c1.k8s.ooo를 사용하여 다음 구성으로 해결될 수 있습니다.

options {
    ...
    allow-recursion { ::/0; 0.0.0.0/0; };                                                        
};

zone "c1.k8s.ooo"  {                                                                             
   type forward;                                                                                 
   forward only;                                                                                 
   forwarders { 2a0a:e5c0:2:f::a; };                                                             
};       

zone "." {                                                                                       
        type hint;                                                                               
        file "/dev/null";                                                                        
};                                                                                                                                                                                              

그 기능은 다음과 같습니다:

  • 먼저 바인딩을 개방형 리졸버로 바꿉니다(나쁜 일입니다).
  • 목적지가 있는 지역을 정의합니다.
  • 이를 사용하면 zone "."기본 제공 루트 힌트 지원이 제거되어 바인딩이 필수 도메인 외에는 아무것도 확인할 수 없게 됩니다.

다음과 같은 것을 사용하는 것에 유의하십시오.

zone "." {                                                                                       
        type forward;                                                                            
        forward only;                                                                            
        forwarders { };                                                                          
};            

바인드에는 루트 영역이 내장되어 있으므로 외부로부터의 재귀는 중단되지 않습니다.

관련 정보