Las búsquedas inversas de DNS ralentizan las operaciones de red en LAN

9

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 Adaptersimular 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 -nles 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/hostso agregar una opción específica de comando para evitar realizar búsquedas inversas de DNS. Obviamente, el uso /etc/hostssolo 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-pcarchivo / 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-pcarchivo / 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.

bernie
fuente

Respuestas:

3

¿192.168.1.1 es la dirección IP de su enrutador?

nameserver 192.168.1.1 sugiere que su enrutador se anuncie como un servidor DNS, en lugar de "enviar los servidores DNS del ISP".

¿Qué marca y modelo de enrutador tienes? ¿La interfaz web muestra mensajes de registro?

Me pregunto si su enrutador está reenviando la solicitud a los servidores de nombres de su ISP, pero los servidores de nombres de su ISP están descartando la solicitud, porque no quieren que sepa cómo 192.168.1.50se llama su máquina con IP .

Sugerencias:

  • Verifique la configuración de su enrutador. Debería responder las solicitudes de su propia red privada . ¿Quizás pueda agregar una entrada de host estático en la interfaz web de su enrutador?
  • Intente instalar Avahi en todos los sistemas de su red.
  • Dígale a su enrutador que use Google Public DNS ( 8.8.8.8y 8.8.4.4) o OpenDNS
Mikel
fuente
Mi enrutador es un "NETGEAR Router WNR3500L" @ 192.168.1.1. Los registros solo muestran arrendamientos DHCP e inicios de sesión en la interfaz de administración. Tiene razón, el enrutador envía 192.168.1.1 como el servidor DNS cuando maneja los arrendamientos DHCP (confirmado con Wireshark). En la interfaz de administración del enrutador, estoy usando "Obtener automáticamente del ISP" para las direcciones DNS. La otra opción es especificar directamente los servidores DNS por IP. Supongo que esto significa que el enrutador reenvía las solicitudes de DNS.
bernie
Sí, supongo que reenvía las solicitudes de DNS. ¿Qué sucede si lo cambia para usar el DNS público de Google ( 8.8.8.8y 8.8.4.4) en su lugar?
Mikel
¡Guau, esto realmente hace una GRAN diferencia! Aparentemente, estos servidores DNS (Google y OpenDNS ') fallan rápidamente cuando se les da una dirección IP privada. ¡Haré algunas pruebas más, pero creo que esto resuelve mi problema!
bernie
Marcar esto como respuesta aceptada. Las 3 respuestas fueron útiles, pero cambiar los servidores DNS resolvió el problema "en general".
bernie
4

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 hosto digpara 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.confpara 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/hostsarchivo, así como de DNS. Los comandos hosty digsolo verifican DNS. Si esto regresa pero demora unos segundos, es posible que desee cambiar el orden de la hostsentrada en /etc/nsswitch.confmover archivos al frente de la lista.

Configurarlo dnsmasqy usarlo como su servidor de nombres DNS principal /etc/resolve.confdeberí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/hostsarchivo, a menos que pueda deshabilitar el servidor DHCP en su enrutador, puede usarlo dnsmasqpara DHCP. dnsmasqregistrará 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 winsen la configuración de nsswitch. Debe ser rápido, por lo que puede funcionar si lo coloca por delante dnsen la entrada de hosts.

También podría considerar instalar las avahiutilidades 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, winspor lo tanto, poner mdnsdelante de dnsla configuración de nsswitch puede no ser adecuado.

BillThor
fuente
Creo que dijo que todas (y solo) las búsquedas de LAN son lentas, y está tratando de evitar un archivo de hosts por completo.
ckhan
Dado que este es solo un servidor de prueba (¡y también uno virtual!), No puedo confiar en él como un servidor DHCP para toda la LAN. También hay otros clientes inalámbricos ocasionales que necesitan una IP incluso cuando mi PC de desarrollo, y por lo tanto el servidor de prueba, no se está ejecutando.
bernie
Actualicé mi publicación nuevamente. Gracias por su ayuda hasta ahora.
bernie
3

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_configarchivo (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

George M
fuente
Desearía poder configurar un servidor DNS con el equipo real que tengo, pero no es realmente factible a menos que cargue un firmware alternativo en el enrutador. Gracias por las opciones de configuración; No había descubierto la AS_NO_REVERSE_DNSopción de Glassfish, así que echaré un vistazo.
bernie
1

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).

SIERRA
fuente