Ubuntu: ¿Cómo configurar los servidores DNS en / etc / network / interfaces correctamente para resolvconf?

14

Todos los ejemplos que he visto de configuraciones ( /etc/network/interfaces) mostraron que configuras una interfaz y luego debajo que daban dns-*líneas como:

auto eth0
iface eth0 inet static
        ...
        dns-nameservers 127.0.0.2
        dns-search example.com my.example.com

Ahora sé que el protocolo DNS es independiente del mecanismo de transporte. Por lo tanto, no debería estar mal agregar una dirección IPv6 en la dns-nameserverslínea.

Sin embargo, dado que también estoy configurando la interfaz para IPv6 de todos modos, tenía sentido agregar la dns-nameserverslínea allí:

iface eth0 inet6 static
        ...
        dns-nameservers ::2
        dns-search example.com my.example.com

... o lo hizo? Porque cuando se resolvconfcrea /etc/resolv.confsimplemente ignora todos los servidores DNS IPv6. También parece ignorar dns-searchy dns-domain. La única línea que parece respetar es la dns-nameserverslínea de la configuración de IPv4 eth0.

¿Cuál es el método correcto para configurar servidores DNS?


Evidencia circunstancial adicional de por qué debería ser parte de cada ifaceestrofa respectiva . Cita de man 8 resolvconf:

El ifup(8) programa se puede utilizar para configurar interfaces de red de acuerdo con la configuración en /etc/network/interfaces(5). Para hacer ifupque la información del servidor de nombres push resolvconfse configure cuando se configura una interfaz, agregue dns-líneas a la ifacesección correspondiente /etc/network/interfaces. Para agregar direcciones de servidores de nombres, agregue una línea que comience por dns-nameservers.

0xC0000022L
fuente
Si todavía tiene este problema, publique todo su archivo / etc / network / interfaces y la salida de / usr / share / resolvconf / dump-debug-info que se incluye en el paquete resolvconf en Ubuntu 15.04.
jdthood

Respuestas:

9

Es correcto poner opciones dns- * en la iface eth0 inet staticestrofa o la iface eth0 inet6 staticestrofa. Las opciones se activan cuando la definición de interfaz lógica a la que pertenecen se activa.

Acabo de probar esto en mi propia máquina Ubuntu 15.04 que normalmente configuro con DHCP. Inhabilité NetworkManager y edité / etc / network / interfaces para que se vea así:

iface eth0 inet static
        address 192.168.178.22
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8
        dns-search foo

iface eth0 inet6 static
        address fe80::390:f5ff:fef7:96b9/64
        dns-nameservers ::2
        dns-search bar

Entonces lo hice

$ sudo ifup eth0

Los resultados:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:90:f5:f7:96:b9  
      inet addr:192.168.178.22  Bcast:192.168.178.255  Mask:255.255.255.0
      inet6 addr: fe80::390:f5ff:fef7:96b9/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2114609 errors:0 dropped:1 overruns:0 frame:0
      TX packets:1757693 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2033346950 (2.0 GB)  TX bytes:1318685445 (1.3 GB)
      Interrupt:20 Memory:f7e00000-f7e20000 

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver ::2
nameserver 8.8.8.8
search bar foo

Tenga en cuenta que las direcciones, los servidores de nombres DNS y las opciones de búsqueda DNS de ambas secciones ahora están activas.

[Actualizado el 30 de mayo de 2015]

jdthood
fuente
1

En mi RPi con Ubuntu 16.04.2 LTS, mis hallazgos fueron los siguientes:

Nota: desinstalé NetworkManager y simplemente dejé resolvconf para hacer sus cosas. (Este es un servidor fijo, por lo que las cosas no cambian mucho en cuanto a la red).

SI tuviera las líneas dns-search y dns-nameserver en UNA sola interfaz (la principal, la cableada) pero no la otra (wlan0) luego en el reinicio, aproximadamente el 95% del tiempo mi archivo /etc/resolv.conf sería vacío.

Por ejemplo, cuando mi archivo de interfaces se veía así:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

ENTONCES después de reiniciar mi resolv.conf se vería así:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

Sin embargo, en uno o dos reinicios me di cuenta de que tenía lo que quería, por ejemplo

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

Solución Cuando le di a AMBAS interfaces (cableadas y wlan0) las líneas dns-search y dns-nameserver, todo funcionó bien en cada reinicio (de todos modos hasta ahora)

es decir, el siguiente archivo de interfaces me funciona:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

y me da el siguiente resolv.conf correcto después de cada reinicio (hasta ahora)

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

Supongo que esta configuración duplicada es normal, aunque algo redundante.

Conclusión: si una interfaz (que no sea lo0) carece de información dns-search y dns-nameserver, resolvconf no pone nada en su archivo resolv.conf. (Es como si ifup hiciera la interfaz wlan0 en segundo lugar y ifup borrara resolv.conf o algo así).

No estoy seguro de si esto es un error o no, aunque me parece mal.

Será
fuente
-1

Editar interfaces de red para agregar el uso de su DNS personalizado es una forma ... pero para modificar permanentemente todo el sistema resolv.conf con su dnsnameserver personalizado, necesita instalar el paquete resolvconf (si no está instalado de manera predeterminada) y llenar su base archivo de configuración con sus valores de servidores de nombres DNS personalizados. Espero que esta breve guía lo ayude para otras configuraciones relacionadas con las entradas de DNS resolv.conf http://www.bytelinux.com/make-permanent-changes-to-resolv-conf-file-on-ubuntu/

Matei Cezar
fuente
2
¡Bienvenido a Unix y Linux! Si bien esto puede responder teóricamente a la pregunta, sería preferible incluir aquí más partes esenciales de esa guía y proporcionar el enlace para referencia.
Anthon
@MateiCezar: ¿podrías por favor dar más detalles? No estoy seguro de que incluso leas mi pregunta hasta el final. El paquete resolvconf está instalado Me gustaría /etc/network/interfacesconfigurar mis servidores DNS para IPv4 e IPv6 respectivamente.
0xC0000022L
-1

Desea usar servidores DNS IPv6 en /etc/network/interfaces ... simplemente coloque sus entradas de nombres DNS IPv6 en la interfaz de red específica de esta manera:

dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888. 

Para agregar dnsnamesers IPv6 de forma permanente a resolv.conf, use el mismo enlace que agregué a continuación y edite el archivo base resolvconf rellenando con sus propios nombres DNS de IPv6:

nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888 

Para configurar / etc / network / interfaces con IPv6, use esta guía http://www.bytelinux.com/configure-permanent-static-ip-address-alias-interfaces-debian-based-systems/ y reemplace IPv4 con IPv6 como se sigue: auto eth0

iface eth0 inet6 static
        address 2800:210:0:1::3
        netmask 64
        gateway 2800:210:0:1::1
        dns-nameservers 2001:4860:4860::8844 
Matei Cezar
fuente
Se corrigió tu formato. Nuevamente, mi pregunta establece claramente que esto no da como resultado que se agreguen esos servidores DNS para IPv6 /etc/resolv.conf. Si de alguna manera esto funciona para usted, sería útil saber la versión exacta del sistema.
0xC0000022L
permítanme aclarar esto ... ¿Desea usar los solucionadores de DNS IPv6 de / etc / network / interfaces y de alguna manera agregarlos en ese archivo no funciona para usted?
Matei Cezar
Puedo agregarlos a /etc/network/interfacesbien. Lo que no sucede es que se transfieran a /etc/resolv.confellos como deberían. Y estoy tratando de averiguar qué estoy haciendo mal, sí.
0xC0000022L
¿Aún no lo entendiste? ¿Esas entradas DNS de / etc / network / interfaces se transfieren a /etc/resolv.conf o no? Usullay esas entradas de namservers de las interfaces nunca se transfieren o escriben en /etc/resolv.com, funcionan por su cuenta desde esa NIC y no se implementan en todo el sistema. Solo el DNS /etc/resolv.conf es utilizado por las interfaces que carecen de entradas dnsnameservers.
Matei Cezar
Lo siento ... pero aún no entiendo lo que intenta lograr con estas entradas de servidores de nombres DNS.
Matei Cezar
-1

¿Por qué no implementa esos servidores de nombres DNS IPv6 directamente en el archivo /etc/resolv.conf de todo el sistema editando el archivo base resolvconf como se sugirió en mi respuesta anterior con el enlace y aún continúa usando el archivo de interfaces de red? Puede agregar un conjunto de servidores de nombres DNS IPv6 en /etc/resolv.conf y si desea usar otros servidores de nombres IPv6 para una NIC específica, úselos solo en / etc / network / interfaces.

bytelinux com
fuente
lo que mencionas en tu última oración es exactamente la razón por la que no quiero usar la configuración base resolvconf y es exactamente lo que estoy intentando. Además, es exactamente lo que está fallando.
0xC0000022L
ok .. lo tengo Pero, ¿por qué quiere implementar las cosas de esta manera? De cualquier manera, solo necesita que esos servidores de nombres DNS sean accesibles en todo el sistema, ¿hay alguna razón para transferirlos desde la red / interfaces a resolv.conf, cuando simplemente podría escribirlos en ambos? archivos y listo !?
bytelinux com
No estoy seguro de cuántas máquinas administras, pero para mí es suficiente intentar hacerme la vida más fácil. Como /etc/network/interfacesse supone que debe hacer el trabajo, estoy tratando de averiguar qué estoy haciendo mal.
0xC0000022L