
Muy bien, mi situación es básicamente esta... Tengo una caja que actúa como enrutador, con 2 interfaces eth0
y eth1
. eth1
es mi enlace ascendente, es decir, es la interfaz a través de la cual la caja obtiene una conexión a Internet. eth0
es el enlace descendente, que es la interfaz a través de la cual se conectaría otro dispositivo/un conmutador/un AP inalámbrico/lo que sea.
Quiero de alguna manera, con iptables, hacer que todas las solicitudes al puerto 53, cualquier dirección que se origine en, eth0
se envíen al servidor DNS que se ejecuta en 127.0.0.1
, y cuando ese servidor DNS envíe una respuesta, la máquina que envió la solicitud debería haga que parezca que la respuesta vino de la dirección a la que realmente enviaron el paquete.
Por ejemplo, digamos que hay una máquina conectada y eth0
configurada para usarla 8.8.8.8
como servidor DNS. El servidor DNS de la máquina de enrutamiento tiene un registro para example.com
apuntar a 192.0.2.1
. Alguien en la máquina conectada a eth0
ejecuta dig example.com @8.8.8.8
. Reciben una respuesta que PARECE provenir de 8.8.8.8
, pero REALMENTE proviene del cuadro de enrutamiento, y esta respuesta dice que el registro A de example.com es 192.0.2.1
.
¿Cómo puedo hacer esto?
Tenga en cuenta que esto debe funcionar para CUALQUIER dirección de servidor DNS, no solo 8.8.8.8
.
Respuesta1
Se necesita un software específico para realizar esto y se considera Maligno. Romper Internet realizando un ataque de intermediario al tráfico DNS es exactamente la razón por la que se están implementando cosas como DNSSec.
Sin embargo, si tiene la intención de buscar, es posible que desee verificar los resultados de "Interceptación de DNS" y "Proxy DNS transparente". Algunas cosas que me vienen a la mente son los firewalls Barracuda dnschef
y quizás una variedad de suites de filtrado web ofrezcan esta característica.