Medio ambiente
Mi configuración de LAN es bastante básica:
- Un enrutador conectado al módem del ISP e Internet
- Mi PC de desarrollo directamente conectada al enrutador
El enrutador proporciona DHCP pero no ejecuta su propio servidor DNS. De hecho, no hay ningún servidor DNS alojado en ninguna parte de mi LAN (configuración típica de la red doméstica). El enrutador está configurado para enviar los servidores DNS del ISP como parte de la información de arrendamiento de DHCP.
Configuré una máquina VirtualBox en mi PC de desarrollo e instalé Debian Squeeze (6.0.4) en ella. El modo de red VirtualBox es Bridged Adapter
simular un servidor independiente en mi LAN. Ser un servidor VirtualBox en lugar de un servidor físico no es realmente importante, pero lo menciono por completo.
El problema
Cada vez que una operación de red ejecuta una búsqueda inversa DNS de una IP de LAN antes de la ejecución, el servidor tiene largas demoras. Algunos ejemplos de operaciones lentas de red:
- Conexión SSH al servidor desde mi PC de desarrollo
- Conexión al puerto de administración del servidor Glassfish
netstat -l
(netstat -nl
es muy rápido)Starting MTA: exim4
en el arranque tarda mucho tiempo en completarse
Algunos de estos tienen soluciones alternativas como agregar Ip de mi pc de desarrollo /etc/hosts
o agregar una opción específica de comando para evitar realizar búsquedas inversas de DNS. Obviamente, el uso /etc/hosts
solo llega tan lejos porque está en desacuerdo con DHCP.
Sin embargo, no puedo evitar pensar que me falta algo. ¿ Realmente necesito configurar un servidor DNS en algún lugar de mi LAN? Parece un esfuerzo enorme e inútil para mis necesidades y no puedo creer que no haya otra opción en un entorno DHCP como el mío.
Busqué mucho en la red para esto y tal vez no tengo los términos de búsqueda correctos, pero no puedo encontrar la solución ...
actualización 1 después de la respuesta de BillThor
Usando host (dig da los mismos resultados):
# ip of stackoverflow.com
$ time host -v 64.34.119.12
Trying "12.119.34.64.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15537
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;12.119.34.64.in-addr.arpa. IN PTR
;; ANSWER SECTION:
12.119.34.64.in-addr.arpa. 143 IN PTR stackoverflow.com.
Received 74 bytes from 192.168.1.1#53 in 15 ms
real 0m0.020s
user 0m0.008s
sys 0m0.000s
# ip of dev pc
$ time host -v 192.168.1.50
Trying "50.1.168.192.in-addr.arpa"
;; connection timed out; no servers could be reached
real 0m10.004s
user 0m0.004s
sys 0m0.000s
Mi /etc/resolv.conf (se creó automáticamente durante la instalación)
nameserver 192.168.1.1
Tanto el host como la excavación regresan muy rápido para una IP pública, pero tardan 10 segundos en agotar el tiempo de espera para una IP LAN. Supongo que 10s es mi valor de tiempo de espera actual.
actualización 2
Con el dev-pc
archivo / etc / hosts:
$ time getent hosts 192.168.1.50
192.168.1.50 dev-pc
real 0m0.001s
user 0m0.000s
sys 0m0.000s
Sin el dev-pc
archivo / etc / hosts:
$ time getent hosts 192.168.1.50
real 0m10.012s
user 0m0.004s
sys 0m0.000s
¡Parece cada vez más que tendré que encontrar opciones o parámetros de programa por partes para cada uno que intente hacer búsquedas DNS inversas! Ninguna de las máquinas (virtuales o no) puede actuar como un servidor DNS en mi LAN ya que no siempre están activas. Desafortunadamente, el firmware del enrutador no incluye un servidor DNS.
fuente
8.8.8.8
y8.8.4.4
) en su lugar?Las búsquedas fallidas de DNS deberían fallar rápidamente. Sin embargo, generalmente ejecuto dnsmasq que leerá el archivo de hosts y servirá esas entradas para búsquedas directas e inversas. También actúa como un servidor de almacenamiento en caché DNS para reducir la carga en sus servidores DNS ascendentes.
Es posible que desee utilizar el comando
host
odig
para ver qué búsquedas son lentas. Si es redirigido a un servidor DNS que no está ejecutando DNS, tardará bastante tiempo en fallar. Puede sintonizar los tiempos de espera y los reintentos/etc/resolv.conf
para acelerar las fallas.EDITAR: Para probar la respuesta de resolución, intente usar
time getent hosts 192.168.1.50
. Esto debería devolver búsquedas de su/etc/hosts
archivo, así como de DNS. Los comandoshost
ydig
solo verifican DNS. Si esto regresa pero demora unos segundos, es posible que desee cambiar el orden de lahosts
entrada en/etc/nsswitch.conf
mover archivos al frente de la lista.Configurarlo
dnsmasq
y usarlo como su servidor de nombres DNS principal/etc/resolve.conf
debería resolver el problema si tiene algún programa que se base solo en DNS para buscar nombres. Exim debería usar el solucionador para sus búsquedas básicas Necesitará un/etc/hosts
archivo, a menos que pueda deshabilitar el servidor DHCP en su enrutador, puede usarlodnsmasq
para DHCP.dnsmasq
registrará automáticamente los nombres si se proporcionan en las solicitudes DHCP que maneja.EDIT2: si ninguna de sus computadoras está siempre activa, puede que desee ver la instalación de samba y su uso
wins
en la configuración de nsswitch. Debe ser rápido, por lo que puede funcionar si lo coloca por delantedns
en la entrada de hosts.También podría considerar instalar las
avahi
utilidades que permitirán el descubrimiento automático en redes de enlace local. Lo tengo trabajando en el lado IPv6, pero no está publicando direcciones IPv4. El dominio predeterminado para los hosts es '.local'. Esto puede no ser adecuado en su caso, pero puede anularse. También parece más lento hacer búsquedas que,wins
por lo tanto, ponermdns
delante dedns
la configuración de nsswitch puede no ser adecuado.fuente
Si no desea realizar el ejercicio de configurar un servidor DNS local (y potencialmente DHCP) para su red doméstica, puede decirle a los servicios donde sea posible que no realice búsquedas DNS inversas.
Por ejemplo, para deshabilitar la búsqueda DNS inversa para SSHD, agregue lo siguiente al
sshd_config
archivo (o similar según la distribución):UseDNS no
Puede eliminar esta línea de la configuración de Exim, aunque no estoy claro si esto tendrá un impacto en la velocidad de inicio, evitará la búsqueda inversa de DNS en la conexión de clientes:
host_lookup = *
Parece que puede exportar esta variable de entorno para el usuario que inicia el proceso Glassfish:
export AS_NO_REVERSE_DNS=true
fuente
AS_NO_REVERSE_DNS
opción de Glassfish, así que echaré un vistazo.Tuve el mismo problema después de cambiar de IP dinámica a IP estática. Mi red configurada ahora: ESTÁTICA - NO IPv6 y no tiene la intención de usar un servidor de correo.
Resolví el problema haciendo:
1: ejecute dpkg-reconfigure exim4-config
2: Cuando llegues a la pregunta de búsqueda de DNS -> Establece las búsquedas de DNS al mínimo (acceso telefónico)
Me dio un error que este tipo de búsquedas no funcionaría y la sugerencia de editar / etc / hosts, pero lo único que hice con / etc / hosts fue comentar las líneas ip6-allnodes e ip6-allrouters.
El reinicio debería ser rápido ahora (para mí es al menos).
fuente