Tengo una instalación sencilla con Debian como invitado en Virtualbox. Instalé el resolvconf
paquete. El archivo resolv.conf es este:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 10.3.x.x
nameserver 10.219.x.x
Agregué servidores de nombres a través de GUI (Aplicaciones/Herramientas del sistema/Herramientas de red).
El 8.8.8.8 es el DNS de Google y quiero usarlo para resolver direcciones de Internet. Se necesitan 10.3.xx y 10.219.xx para resolver dominios internos como teleportal.company.intra.
Cuando tengo estos servidores de nombres en resolv.conf (y 8.8.8.8 es el primero), aparece un error al consultar una dirección interna:
> host teleportal.company.intra
Host teleportal.company.intra not found: 3(NXDOMAIN)
Sin embargo, si configuro explícitamente la nameserver
dirección del segundo como servidor de nombres para nslookup, funciona:
» nslookup teleportal.company.intra 10.3.x.x
Server: 10.3.x.x
Address: 10.3.x.x#53
teleportal.company.intra canonical name = proxy.dummy1.dummy2.private.
Name: proxy.dummy1.dummy2.private
Address: 172.27.x.x
Name: proxy.dummy1.dummy2.private
Address: 172.27.x.x
La documentación resolv.conf indica que las nameserver
entradas se probarán en orden, si una de ellas no puede resolver la consulta. Sin embargo, si activo la depuración cuando uso, nslookup
veo que nslookup
ni siquiera prueba otras entradas, solo la primera.
Si cambio el orden de las nameservers
direcciones internas, las direcciones internas se resolverán correctamente (nslookup todavía usa solo la primera entrada).
¿Cómo puedo configurar 3 servidores de nombres para que las utilidades los utilicen todos en orden?
Respuesta1
La resolv.conf
lista de servidores de nombres se contacta uno tras otro sólo en caso de tiempo de espera. No cuando un servidor de nombres dice con autoridad "no existe tal dominio" ( NXDOMAIN
). En su caso, el DNS 8.8.8.8
aparentemente no lo sabe teleportal.company.intra
y el solucionador se detuvo cuando obtuvo el archivo NXDOMAIN
.
Si es posible, debe configurar un servidor DNS y usarlo para toda su resolución y dejar que el servidor DNS decida cómo resolver el nombre. Si 10.3.x.x
es el servidor DNS de su intranet, probablemente también podrá resolver los nombres de host de Internet.
Dicho esto, si realmente desea transmitir las solicitudes a diferentes servidores DNS según los nombres, puede probarpdnsd. Es un programa de proxy DNS de almacenamiento en caché que se ejecutaría localmente. Instálelo ( apt-get install pdnsd
) y agregue su localhost ( 127.0.0.1
) a resolv.conf. En el pdnsd.conf
archivo de configuración puede especificar con qué servidores DNS contactar según la coincidencia de nombres. Un párrafo de ejemplo para su /etc/pdnsd.conf
:
server {
label= "google";
exclude = ".company.intra";
ip = 8.8.8.8;
}
server {
label= "intra";
include = ".company.intra";
ip = 10.3.x.x;
}
Eliminé muchos otros parámetros en el archivo anterior. Debe seguir la documentación y el archivo de configuración de ejemplo que se incluye con el paquete Debian para configurar su pdnsd.conf
.
Respuesta2
Ipensarque el solucionador recurra al DNS secundario (o terciario o...)sólo si el primero (o el segundo o...) falla.
En este caso la consultano falla, devuelve correctamente NXDOMAIN
, es decir, el nombre de dominio no existe.
Si realmente desea utilizar el DNS de Google (o cualquier otro DNS) para resolver dominios externos (en lugar de sus servidores de nombres internos), puede configurar sus servidores 10.3.x.x
para 10.219.x.x
que sean authoritative
solo para sus nombres internos y para reenviar todas las demás consultas a DNS externo, luego use sus servidores de nombres internos como susoloservidores de nombres en sus computadoras internas.