A menudo me conecto a múltiples redes simultáneamente. Cada una de estas redes proporciona la configuración del servidor de nombres a través de dhcp. Ej. Red 1: (eth0):
domain company1.corp #
nameserver 192.168.0.253
nameserver 192.168.0.254
Red 2 (tun0):
domain company2.corp #
nameserver 10.102.204.51
nameserver 10.102.208.51
# Nombres cambiados
Cuando se conecta a ambas redes simultáneamente:
# resolv.conf from NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Resolver service.company2.corp no funciona porque el servidor de nombres solo conoce los nombres de company1.corp.
Entonces, inspirado en este artículo , configuré openresolv (una implementación resolvconf) configurando un servicio dnsmasq local en mi instalación de Arch Linux.
Si configuro los servidores de nombres manualmente usando resolvconf:
# resolvconf -d NetworkManager
# echo "domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
" | resolvconf -a eth0
# echo "domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
" | resolvconf -a tun0
Entonces puedo resolver nombres de company1.corp y company2.corp (el servidor local dnsmasq maneja esto).
Tenga en cuenta que después de la configuración manual, resolveconf -l muestra las 2 configuraciones por separado:
~ # resolvconf -l
# resolv.conf from tun0
domain company2.corp
nameserver 10.102.204.51
nameserver 10.102.208.51
# resolv.conf from eth0
domain company1.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
Sin embargo, al permitir que el administrador de red haga la configuración, las 2 configuraciones no están separadas, como lo sería si el administrador de red escribiera en /etc/resolve.conf
~ # resolvconf -l
# resolv.conf from NetworkManager
# Generated by NetworkManager
domain company1.corp, company2.corp
nameserver 192.168.0.253
nameserver 192.168.0.254
nameserver 10.102.204.51
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 10.102.208.51
Mi pregunta es cómo puedo hacer que el administrador de red llame correctamente a resolveconf para que los servidores de nombres de cada interfaz se registren por separado. (Desafortunadamente, buscar en Google esto es inútil porque Google piensa que "resolveconf" == "resolve.conf")
fuente
"resolvconf"
con las comillas. Siempre ponga comillas alrededor de los nombres propios en Google.Respuestas:
NetworkManager tiene la funcionalidad para administrar un servidor dnsmasq local integrado. No es necesario usar resolvconf / openresolv para hacer esto.
Para habilitar esto:
dns=dnsmasq
a/etc/NetworkManager/NetworkManager.conf
.Una vez que haya hecho esto, verá que NetworkManager ha iniciado un proceso dnsmasq:
/etc/resolve.conf
debería apuntar a la instancia local de dnsmasq:y podemos ver qué servidores está usando dnsmasq:
fuente
ubound
por lo que DNSSEC también está funcionando, vea fedoraproject.org/wiki/Networking/NameResolution/DNSSECParece que NetworkManager simplemente está sobrescribiendo
/etc/resolv.conf
y no está usando openresolv. De acuerdo con FS # 24635 , NetworkManager tiene soporte para openreslov, pero inicialmente no estaba habilitado en la compilación. ¿Qué versión de Arch Linux está ejecutando y cuál es la versión del paquete networkmanager?fuente
Haz lo que respondió Gary van der Merwe, pero en
/etc/NetworkManager/NetworkManager.conf
Tuve que agregar
al archivo No solo
dns=dnsmasq
Esto se debe a que todas las configuraciones en ese archivo deben estar bajo una sección, y mi distribución, manjaro (archlinux), la versión del paquete NetworkManager no llena el archivo de configuración. (Supongo que la distribución de Gary lo hace ya que su línea sugerida funcionó para él y otros)
Otra nota, cualquier configuración de dnsmasq debe ir en un archivo de configuración en este
/etc/NetworkManager/dnsmasq.d/
directorio. Puede ser un directorio diferente en su máquina. Aprendí el directorio que se está usando mirando la línea que NetworkManager usa para iniciar el demonio dnsmasq. Puedes ver esta línea corriendo
ps aux|grep dnsmasq
. Debe esperar para ejecutar esto hasta después de modificar la configuración de NetworkManager y reiniciar su servicio.fuente