Retorna registros A, mas não registros AAAA em domínio específico em bind9

Retorna registros A, mas não registros AAAA em domínio específico em bind9

Eu configurei um servidor DNS de cache com bind9 usando um método root-hints (comoesse). Funciona como desejado, mas nosso tráfego IPv6 passa por um gateway fora do meu país que faz a Netflix pensar que estamos visitando esse outro país, e isso impede que meus filhos assistam aos seus programas favoritos. Então, estou pensando que, se eu puder evitar que o bind9 retorne quaisquer registros AAAA para netflix.com, os clientes só tentarão conexões IPv4 com o Netflix.

Ou seja: como configuro o bind9 para que as pesquisas de registros AAAA para netflix.com sejam suprimidas enquanto os resultados válidos do registro A são retornados para netflix.com?

Sei que posso criar um arquivo de zona apenas com o domínio Netflix e fazer com que ele contenha todos os registros A do netflix.com que posso encontrar e nenhum registro AAAA. Mas estou me perguntando se talvez o que foi dito acima seja possível, para que eu não precise manter os registros A no arquivo de zona atualizados.

Responder1

Eu sei que este é um post antigo, mas (pelo menos) na minha versão do bind (9.11 no Ubuntu 18.04) descobri que você pode usar filter-aaaa-on-v4 combinado com match-destinations em uma visualização.

Ainda requer que você tenha escuta vinculada em 2 endereços IP, mas pelo menos você não precisa de várias instâncias.

192.168.1.1 é o servidor DNS normal. 192.168.1.2 é o que bloqueia o ipv6.

Minha configuração é mais ou menos assim (parcial):

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

Isso faz com que o bind faça uma pesquisa direta em outro IP, quando o domínio corresponder a netflix.com.

Isso elimina a necessidade de duas instâncias, mas infelizmente requer 2 endereços IP internos. Seria bom se também pudéssemos especificar um número de porta em "match-destinations".

Responder2

Como é indicado pelos comentários, o bind pode não ser capaz disso. No entanto, consegui resolver o problema com uma solução alternativa:

Primeiramente, adicionei um segundo serviço de ligação escutando na porta 5353 com apenas o seguinte arquivo de configuração:

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

A chave aqui é usar "filter-aaaa-on-v4 yes;" então ignora solicitações AAAA.

Então, no serviço de ligação original, adicionei uma zona para netflix.com que usa o serviço DNS acima:

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

É um hack feio, mas parece funcionar.

informação relacionada