바인딩9, 결과에서 외부 인터페이스 주소 제외

바인딩9, 결과에서 외부 인터페이스 주소 제외

안녕하세요. 저는 내부 인터페이스 1개, 외부 인터페이스 1개로 구성된 Zentyal을 사용하고 있습니다. 서버 호스트 이름과 별칭을 해결할 때 바인딩은 결과에 외부 주소를 무작위로 반환합니다. 물론 문제는 로컬 넷이 외부 넷과 통신할 수 없고 서비스가 무작위로 중단된다는 것입니다. 예:

dig proxy.private.example.com

;; ANSWER SECTION:
proxy.private.example.com. 259200 IN   CNAME   zentyal.private.example.com.
zentyal.private.example.com. 900 IN    A       192.168.122.73
zentyal.private.example.com. 900 IN    A       10.10.20.40

10.10.20.40은 내부 네트워크에 있으며 우리가 항상 확인해야 하는 주소입니다.

결과에서 "192.168.122.73" 인터페이스를 제외하려면 어떻게 해야 합니까? 내 바인드 구성은 어떤 모습일까요?

추신: 지금까지 3일 동안 검색했습니다. 내가 잘못된 것을 찾고 있을 수도 있습니다.

귀하의 도움에 감사드립니다.

답변1

지금 구성한 것은 A동일한 리소스에 대한 다중 레코드입니다. Bind는 이를 라운드 로빈으로 처리하고 zentyal.private.example.com에 대한 DNS 요청에 대해 192.168.122.73 또는 10.10.20.40을 교대로 반환합니다.

원하는 것은 DNS 요청이 시작된 인터페이스/IP 주소에 따라 다른 응답이 일관된 방식으로 반환된다는 것입니다. Bind에서는 이를 뷰라고 합니다.

외부 클라이언트용으로 두 개의 서로 다른 영역 파일을 설정하고 내부 클라이언트용으로 두 번째 영역 파일을 설정하고 언제 어떤 영역 파일을 사용할지 바인딩을 구성해야 합니다. 구성의 관련 구성 섹션은 다음과 비슷할 수 있습니다.

view "internal" {
        match-clients { localnets; };
        recursion yes;          /* this is the default */

        zone "private.example.com" {
                type master;
                file "db.private.example.com.internal";
                allow-transfer { any; };
    };
};

view "external" {
    match-clients { any; };
    recursion no;

    zone "example.com" {
        type master;
        file "db.example.com.external";
            allow-transfer { none; };
    };
};

그런 다음 10.x IP 주소를 가진 A 레코드를 db.private.example.com.internal에 추가하고 192.x IP 주소를 가진 A 레코드만 공개 db.example.com.external에 남아 있는지 확인하세요. 영역 파일.

관련 정보