
안녕하세요. 저는 내부 인터페이스 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에 남아 있는지 확인하세요. 영역 파일.