iptables 'reescrever' pedidos em uma determinada porta?

1

Tudo bem, minha situação é basicamente esta ... Eu tenho uma caixa que está agindo como um roteador, com 2 interfaces, eth0 e eth1 . eth1 é meu uplink, ou seja, é a interface através da qual a caixa está obtendo 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 você 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 um resposta, a máquina que enviou o pedido deve fazer parecer que a resposta veio do endereço para o qual eles enviaram o pacote.

Exemplo, digamos que há uma máquina conectada a eth0 configurado para usar 8.8.8.8 como o servidor DNS. O servidor DNS da máquina de roteamento tem um registro para example.com apontando para 192.0.2.1 . Alguém na máquina conectada a eth0 executa dig example.com @8.8.8.8 . Eles recebem uma resposta que parece vir de 8.8.8.8 , mas REALMENTE veio da caixa de roteamento, e essa resposta diz que o registro A de 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 .

    
por AppleDash 30.04.2015 / 21:51

1 resposta

0

Você precisa de um software específico para isso e é considerado o Mal. Quebrar a Internet executando um ataque man-in-the-middle no tráfego de DNS é exatamente o motivo pelo qual coisas como o DNSSec estão sendo implementadas.

Se pretender continuar, pode querer verificar os resultados de "DNS Interception" e "Transparent DNS Proxy". Algumas coisas que vêm à mente são os firewalls Barracuda, dnschef e talvez uma variedade de pacotes de filtragem da Web ofereçam esse recurso.

    
por 30.04.2015 / 22:06