
Tudo bem, minha situação é basicamente esta... Tenho uma caixa que funciona como roteador, com 2 interfaces eth0
e eth1
. eth1
é o meu uplink, ou seja, é a interface através da qual a caixa obtém uma conexão com a Internet. eth0
é o downlink, que é a interface através da qual outro dispositivo / um switch / um AP sem fio / o que quer que seja, estaria conectado.
Eu quero de alguma forma, com o iptables, fazer com que todas as solicitações para a porta 53 de qualquer endereço originado em eth0
sejam enviadas para o servidor DNS em execução em 127.0.0.1
e, quando esse servidor DNS enviar uma resposta, a máquina que enviou a solicitação deve fazer com que pareça que a resposta veio do endereço para o qual eles realmente enviaram o pacote.
Por exemplo, digamos que haja uma máquina conectada eth0
configurada para ser usada 8.8.8.8
como servidor DNS. O servidor DNS da máquina de roteamento possui um registro para example.com
apontar para 192.0.2.1
. Alguém na máquina conectada a é eth0
executado dig example.com @8.8.8.8
. Eles recebem uma resposta que PARECE vir de 8.8.8.8
, mas NA VERDADE veio da caixa de roteamento, e esta resposta diz que o registro A para example.com é 192.0.2.1
.
Como posso fazer isso?
Observe que isso precisa funcionar para QUALQUER endereço de servidor DNS, não apenas 8.8.8.8
.
Responder1
Você precisa de um software específico para fazer isso, e isso é considerado Maligno. Quebrar a Internet realizando um ataque man-in-the-middle no tráfego DNS é exatamente o motivo pelo qual coisas como o DNSSec estão sendo implementadas.
Se você pretende procurar, verifique os resultados de "Interceptação de DNS" e "Proxy DNS transparente". Algumas coisas que vêm à mente são os firewalls Barracuda, dnschef
e talvez uma variedade de suítes de filtragem da web ofereçam esse recurso.