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.