Redirecionando a porta DNS para um servidor DNS específico

1

Eu uso um servidor Ubuntu como roteador para meus usuários em uma rede NAT. Eu quero forçar todos os usuários a usar uma configuração de servidor de DNS local na rede. Mesmo se eles usarem um servidor DNS público em suas máquinas cliente, a porta DNS deve ser redirecionada (DNAT) para o meu servidor DNS local. Foi isso que eu criei:

iptables -t nat -A PREROUTING -i eth5 -p udp --dport 53 -j DNAT --to 192.168.1.1:53
iptables -A FORWARD -d 192.168.1.1 -i eth5 -p udp --dport 53 -j ACCEPT

A interface voltada para a rede NAT é eth5 . As regras acima não estavam funcionando para mim. Existe alguma solução melhor?

EDIT 1: Meu objetivo é implementar o filtro Opndns para evitar o tráfego bittorrent na rede. O filtro está funcionando muito bem no momento e os usuários obtêm o servidor de DNS local porque usam o DHCP. Mas temo que eles possam descobrir uma solução, como especificar o endereço IP e o ip do servidor de DNS manualmente.

EDIT 2: O código a seguir implementa o recurso no firmware do tomate:

 if (nvram_match("dns_intcpt", "1")) {
     ipt_write("-A PREROUTING -p udp -s %s/%s ! -d %s/%s --dport 53 -j DNAT --to-destination %s\n",
          lanaddr, lanmask,
          lanaddr, lanmask,
          lanaddr);
}

Aqui está mais sobre isso.

    
por nixnotwin 05.08.2011 / 16:49

3 respostas

4

Are there any better solutions?

Sim - não está fazendo nada.

Brincar com resolução normal de DNS quase nunca é a resposta certa, seja qual for o problema que você está tentando resolver.

EDITAR re: sua atualização. Você está tentando inapropriadamente usar a tecnologia para resolver um problema de política. Não.

    
por 05.08.2011 / 19:11
3

Não está funcionando porque a resposta do seu servidor DNS está ignorando o firewall. Os clientes então (corretamente) descartarão essas respostas, pois não correspondem ao que foi enviado.

Você precisa adicionar outra regra à sua tabela POSTROUTING para enviar os pacotes SNAT para o servidor DNS ao IP do roteador.

Como alternativa, colocar o servidor DNS em uma rede separada resolveria o problema, pois as respostas seriam forçadas a voltar pelo roteador.

    
por 05.08.2011 / 19:35
2

Por que não abandonar o tráfego DNS em qualquer servidor DNS externo? Aqueles que especificam explicitamente um servidor externo simplesmente notarão que isso não está funcionando.

    
por 07.08.2011 / 08:37