Prefiere búsquedas DNS A (IPv4) antes que búsquedas AAAA (IPv6)

44

En el aviso, mi Ubuntu 10.10 recién instalado siempre realiza una búsqueda de DNS AAAA antes de las búsquedas de registros A. ¿Hay alguna forma de que pueda configurar el sistema para hacer búsquedas A primero?

(Si bien varios navegadores y otras aplicaciones pueden contener sus propios resolvers, estoy hablando de los que están en glibc)

nos
fuente
Para aclarar, ¿desea tener tanto IPv4 como IPv6 presentes?
belacqua
Preferiblemente sí. Pero como solo tengo un enlace IPv6 local, es un desperdicio pedir, por ejemplo, el registro AAAA de google.com cada vez, y luego pedir el registro A después.
nos

Respuestas:

53

Es el estándar priorizar IPv6 sobre IPv4 para permitir el control de IP de la próxima generación :)

Puede cambiar esto editando los bloques de precedencia en /etc/gai.conf(gai significa getaddrinfo, la llamada estándar del sistema para resolver nombres de host). Simplemente comente la línea como se describe en el archivo:

# Para sitios que prefieren conexiones IPv4, cambie la última línea a

#precedence :: ffff: 0: 0/96 100

Se gai.confpuede encontrar una explicación detallada en la página del manual.

freddyb
fuente
gracias, me salvaste el día! uno de mi servidor sigue obteniendo resultados de ipv6 del servidor dns pero mi servidor simplemente no podía funcionar correctamente con ipv6
Boon
Hola, ¿esta configuración requiere un sysctl o alguna recarga de servicio o un reinicio para que surta efecto? Tu respuesta me pareció útil, pero puedes editarla para solucionar esas dudas.
Marco
La página de manual gai.confdice que debe descomentar todas las líneas, no solo la IPv4, para obtener el comportamiento modificado correcto. De gai.conf(5): "Una vez más, la presencia de una sola línea de precedencia en el archivo de configuración hace que no se use la tabla predeterminada". Si desea que las otras líneas de tabla predeterminadas sigan funcionando, también debe descomentarlas.
Ian D. Allen
10

Mi problema era el mismo, tenía consultas IPV6 hechas antes de IPV4 y estaban desperdiciando recursos, así que cambié mi archivo /etc/gai.conf como freddyb publicado, pero mi escenario es un poco diferente, mi servidor es Natted, así que IPv4 no tendrá prioridad sobre IPv6 con solo esa línea. La solución también está comentando otras líneas en gai.conf para que se vea así

#For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96 100
...
#    For sites which use site-local IPv4 addresses behind NAT there is
#    the problem that even if IPv4 addresses are preferred they do not
#    have the same scope and are therefore not sorted first.  To change
#    this use only these rules:
#
scopev4 ::ffff:169.254.0.0/112  2
scopev4 ::ffff:127.0.0.0/104    2
scopev4 ::ffff:0.0.0.0/96       14

¡Entonces su servidor probará primero ipv4 incluso si es Natted!

Carlos Ho Continy
fuente
2
El /etc/gai.confarchivo en Ubuntu 15.04 "vívido" dice que esas tres scopev4líneas que sugiere arriba ya son las predeterminadas. Solo hice el precedence ::ffff:0:0/96 100cambio de una línea y eso funcionó incluso detrás de NAT.
Ian D. Allen
1

Si no desea habilitar IPv6, puede deshabilitar IPv6 para lograr esto. http://www.webupd8.org/2010/05/how-to-disable-ipv6-in-ubuntu-1004.html

si no, puedes intentar agregar

options single-request

A su archivo /etc/resolv.conf. (Ver http://udrepper.livejournal.com/20948.html para detalles sangrientos)

ipv6_twit
fuente
1
La página del manual para resolv.conf indica que la opción que sugiere hace exactamente lo contrario "Esta opción [...] hace que glibc realice las solicitudes de IPv6 e IPv4 de forma secuencial (a costa de alguna desaceleración del proceso de resolución)". - man7.org/linux/man-pages/man5/resolver.5.html
ndemou
secuencial = primero uno, luego el otro, en oposición al paralelo. Funciona bien aquí.
cweiske