En este momento tengo la siguiente línea en dnsmasq.conf, que maneja bien todas las solicitudes ( /#/
coincide con cualquier dominio; esto es obligatorio):
address=/#/127.0.0.1
Sin embargo, hay algunos dominios que deben resolverse en direcciones IP distintas a 127.0.0.1
.
Como solución temporal se han añadido a /etc/hosts
:
209.85.148.95 ajax.googleapis.com
207.97.227.245 underscorejs.org
72.21.194.31 s3.amazonaws.com
Desafortunadamente, esta es una solución muy temporal: dejará de funcionar tan pronto como cambie la dirección IP de cualquier dominio de destino.
Mi pregunta es: ¿cómo hacer que dnsmasq utilice un servidor DNS ascendente para resolver las direcciones IP de algunos nombres de dominio (especificados)?
Respuesta1
Puedes hacer esto usando la server=
directiva, por ejemplo
server=/ajax.googleapis.com/8.8.8.8
consultaría el servidor DNS público de Google para el dominio ajax.googleapis.com, de manera similar
server=/amazonaws.com/209.244.0.3
consultaría el servidor DNS público de Level3 para el dominio amazonaws.com.
Puedes agrupar varios dominios
server=/co.uk/com/8.8.4.4
Enviaría los dominios .co.uk y .com al servidor DNS en 8.8.4.4
También puedes tener varias server=
directivas.
−S, --server=[/[<dominio>]/[dominio/]][<ipaddr>[#<puerto>][@<fuente>[#<puerto>]]]
Especifique la dirección IP de los servidores ascendentes directamente. Establecer este indicador no suprime la lectura de /etc/resolv.conf; use -R para hacerlo. Si se proporcionan uno o más dominios opcionales, ese servidor se usa solo para esos dominios y se consultan solo usando el servidor especificado. Esto está destinado a servidores de nombres privados: si tiene un servidor de nombres en su red que trata con nombres del formato xxx.internal.thekelleys.org.uk en 192.168.1.1, entonces indique la bandera -S /internal.thekelleys.org.uk/ 192.168.1.1 enviará todas las consultas de las máquinas internas a ese servidor de nombres, todo lo demás irá a los servidores en /etc/resolv.conf. Una especificación de dominio vacía // tiene el significado especial de "sólo nombres no calificados", es decir, nombres sin puntos. Se puede especificar un puerto no estándar como parte de la dirección IP utilizando el carácter #. Se permite más de un indicador -S, con partes repetidas de dominio o ipaddr según sea necesario.
También se permite un indicador -S que proporciona un dominio pero no una dirección IP; esto le dice a dnsmasq que un dominio es local y puede responder consultas desde /etc/hosts o DHCP, pero nunca debe reenviar consultas en ese dominio a ningún servidor ascendente. local es sinónimo de servidor para aclarar los archivos de configuración en este caso.
La segunda dirección IP opcional después del carácter @ le dice a dnsmasq cómo configurar la dirección de origen de las consultas a este servidor de nombres. Debe ser una dirección que pertenezca a la máquina en la que se ejecuta dnsmasq; de lo contrario, esta línea del servidor se registrará y luego se ignorará. El indicador de puerto de consulta se ignora para cualquier servidor que tenga una dirección de origen especificada, pero el puerto se puede especificar directamente como parte de la dirección de origen.