BIND9의 특정 도메인에 대해 A 레코드를 반환하지만 AAAA 레코드는 반환하지 않습니다.

BIND9의 특정 도메인에 대해 A 레코드를 반환하지만 AAAA 레코드는 반환하지 않습니다.

루트 힌트 방법(예:이것). 원하는 대로 작동하지만 IPv6 트래픽이 우리나라 외부의 게이트웨이를 통과하므로 Netflix가 우리가 다른 나라에서 방문하고 있다고 생각하게 만들고 이로 인해 우리 아이들이 좋아하는 프로그램을 시청할 수 없게 됩니다. 그래서 저는 Bind9가 netflix.com에 대해 AAAA 레코드를 반환하는 것을 방지할 수 있다면 클라이언트는 Netflix에 대한 IPv4 연결만 시도할 것이라고 생각합니다.

즉, netflix.com에 대한 유효한 A 레코드 결과가 반환되는 동안 netflix.com에 대한 AAAA 레코드 조회가 억제되도록 바인딩9를 어떻게 구성합니까?

Netflix 도메인만으로 영역 파일을 생성할 수 있으며 여기에는 AAAA 레코드 없이 찾을 수 있는 netflix.com의 모든 A 레코드가 포함되어 있습니다. 하지만 위의 내용이 가능하므로 영역 파일의 A 레코드를 업데이트된 상태로 유지할 필요가 없는지 궁금합니다.

답변1

나는 이것이 오래된 게시물이라는 것을 알고 있지만 (적어도) 내 바인드 버전(Ubuntu 18.04의 9.11)에서는 뷰에서 일치 대상과 결합된 filter-aaaa-on-v4를 사용할 수 있다는 것을 발견했습니다.

여전히 2개의 IP 주소에 대한 바인딩 수신이 필요하지만 최소한 여러 인스턴스가 필요하지는 않습니다.

192.168.1.1은 일반 DNS 서버입니다. 192.168.1.2는 ipv6 차단 주소입니다.

내 구성은 다음과 같습니다(일부).

options {
    listen-on port 53 { 192.168.1.1; };
    listen-on port 5353 { 192.168.1.2; };
};

view "ipv4only" {
  match-destinations { 192.168.1.2/24; };
  filter-aaaa-on-v4 yes;
};

view "normal" {
  match-clients { 192.168.1.1/24; };
  zone "netflix.com" {
    type forward;
    forward only;
    forwarders { 192.168.1.2 port 5353; };
  };
};

그러면 도메인이 netflix.com과 일치할 때 바인딩이 다른 IP에서 자신에 대한 정방향 조회를 수행하게 됩니다.

이렇게 하면 두 개의 인스턴스가 필요하지 않지만 안타깝게도 2개의 내부 IP 주소가 필요합니다. "match-destinations"에 포트 번호를 지정할 수도 있으면 좋을 것 같습니다.

답변2

주석에서 알 수 있듯이 바인드는 이를 수행하지 못할 수도 있습니다. 그러나 해결 방법을 통해 문제를 해결했습니다.

먼저 다음 구성 파일을 사용하여 포트 5353에서 수신 대기하는 두 번째 바인드 서비스를 추가했습니다.

acl mynetworks {
    localhost;
    (And a list with my various LAN networks such as 192.168.0.0/24;)
};

acl everyone {
    any;
};

options {
    directory "/var/cache/bind-ipv4limited";
    filter-aaaa-on-v4 yes;
    #dnssec-validation auto;
    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;
    dnssec-lookaside . trust-anchor dlv.isc.org.;
    recursion yes;
    allow-query { mynetworks; };

    forwarders {
        8.8.8.8;
        8.8.4.4;
    };
    forward only;

    auth-nxdomain no;    # conform to RFC1035
    listen-on port 5353 { any; };
};

여기서 핵심은 "filter-aaaa-on-v4 yes;"를 사용하는 것입니다. 따라서 AAAA 요청을 무시합니다.

그런 다음 원래 바인드 서비스에서 위의 DNS 서비스를 사용하는 netflix.com에 대한 영역을 추가했습니다.

zone "netflix.com" {
    type forward;
    forward only;
    forwarders {
        127.0.0.1 port 5353;
    };
};

추악한 해킹이지만 작동하는 것 같습니다.

관련 정보