Estoy tratando de configurar, para llamarlo de alguna manera, un servidor DNS "mentiroso".
Quiero decir: un servidor DNS que actúa como un caché DNS (esclavo) para un servidor existente pero que tiene su propio subconjunto de registros para algunos nombres de dominio.
El comportamiento deseado es, por ejemplo:
Cuando se le preguntó por "host.domain.com". Si tiene una entrada para él en su propia base de datos, responda con ella.
Si no está en su base de datos, pregúntele al maestro (y, opcionalmente, guarde en caché esa respuesta).
Sé que puedo poner bind9 como servidor esclavo pero, de esta manera, todas las consultas serán respondidas con la misma respuesta que se respondería al servidor real.
Por supuesto, es una configuración complicada, lo sé, pero tiene un propósito útil:
Imagine que tiene servicios complejos (por ejemplo, la configuración de respaldo de Bacula y los scripts en mi caso) y desea probarlo en servidores de producción reales antes de ponerlo en producción real.
Si pudiera redirigir temporalmente el DNS a ese DNS "mentiroso" de manera que todos los nombres se resuelvan como de costumbre, excepto algunos subconjuntos de hosts "enmascarados", se comportará como una configuración "real", pero sin realmente crear una copia de seguridad real Almacenamiento de servidores con copias de seguridad de prueba.
Por supuesto, podría usar una lista de entradas en / etc / hosts , pero requiere más configuración y es más propenso a errores (tengo los entornos de prueba totalmente automatizados con Vagrant, pero las IP pueden cambiar algunas veces).
Clonar el servidor y usarlo para hacer la prueba, también requiere más trabajo y recursos y, una vez más, es más propenso a errores porque después de las pruebas, tendré que reconfigurar el servidor real a mano mientras que, con el enfoque "dns mentiroso", Solo necesito restaurar el archivo resolv.conf original.
Configuré con éxito un servidor DNS principal para nuestro dominio y resuelve correctamente sus propias entradas y consultas a otros dominios, pero no conoce los datos de los servidores de dominio reales.
Creo que debería ser posible acercarse con Bind, pero no sé dónde buscar ...
allow-query {none;};
línea . Pero, si lo agrego, entonces no resuelve los nombres de host en su propia base de datos. Por supuesto, solo tengo registros A, pero usar solo CNAME no es una opción porque los servidores de prueba no están registrados en el DNS de producción incluso con otros nombres.Respuesta parcial (funciona para mi configuración pero no es tan genérica como mi pregunta original):
En mi caso, solo necesito anular las direcciones de un subdominio en particular, específicamente bacula.ourDomain.com .
Como dije, configuré con éxito el enlace como maestro para bacula.ourDomain.com , pero no pude resolver ningún otro host de ourDomain.com .
Ahora acabo de agregar esto:
De esta manera, mi servidor resuelve bacula.ourDomain.com , pero para el resto de ourDomain.com pide <real_ns_ip> .
Como dije, no es una solución genérica porque no permite elegir solo direcciones particulares del dominio, pero actualmente es suficiente para mis propósitos.
@Zoredache probablemente sería una mejor solución, pero aún no tuve éxito en ponerlo en práctica.
fuente