Ubuntu: Comment configurer correctement les servers DNS dans / etc / network / interfaces pour resolvconf?

Tous les exemples que j'ai vus de configurations ( /etc/network/interfaces ) ont montré que vous configurez une interface, puis en dessous ce qui donnait les lignes dns-* telles que:

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

Maintenant, je suis conscient que le protocole DNS est indépendant du mécanisme de transport. Par conséquent, il ne devrait pas être erroné d'append une adresse IPv6 sur la ligne dns-nameservers .

Cependant, puisque je configure également l'interface pour IPv6, il est logique d'y append la ligne dns-nameservers :

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

… ou l'a fait? Parce que quand resolvconf crée /etc/resolv.conf il ignore simplement tous les servers DNS IPv6. Il semble également ignorer dns-search et dns-domain . La seule ligne qu'elle semble honorer est la ligne dns-nameservers de la configuration IPv4 pour eth0 .

Quelle est la bonne méthode de configuration des servers DNS?


D'autres preuves circonstancielles expliquant pourquoi il devrait faire partie de chaque strophe iface respective. Citation de l' man 8 resolvconf :

Le programme ifup(8) peut être utilisé pour configurer les interfaces réseau en fonction des parameters de /etc/network/interfaces(5) . Pour que ifup transmette les informations du server de noms à resolvconf lors de la configuration d'une interface, ajoutez dns- lines à la strophe iface correspondante dans /etc/network/interfaces . Pour append des adresses de servers de noms, ajoutez une ligne commençant par dns-nameservers .

Il est correct de placer des options dns- * dans la strophe iface eth0 inet static ou la strophe iface eth0 inet static iface eth0 inet6 static . Les options deviennent actives lorsque la définition de l'interface logique à laquelle elles appartiennent devient active.

Je viens de tester cela sur ma propre machine Ubuntu 15.04 que je configure normalement avec DHCP. J'ai désactivé NetworkManager et édité / etc / network / interfaces de sorte qu'il ressemble à ceci:

 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 

J'ai ensuite fait

 $ sudo ifup eth0 

Les resultats:

 $ 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 Mesortingc: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 

Notez que les options d'adresses, dns-nameservers et dns-search des deux stances sont maintenant actives.

[Mis à jour le 30 mai 2015]

Sur mon RPi exécutant Ubuntu 16.04.2 LTS, mes conclusions étaient les suivantes:

Note: J'ai désinstallé NetworkManager et j'ai juste quitté resolvconf pour faire ses affaires. (C'est un server fixe donc les choses ne changent pas grand-chose sur le réseau.)

SI j'avais les lignes dns-search et dns-nameserver sur une seule interface (la principale câblée) mais pas l'autre (wlan0) puis au redémarrage, environ 95% du time mon file /etc/resolv.conf serait vide.

Par exemple lorsque mon file d'interface ressemblait à ceci:

 # 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 

ALORS après un redémarrage mon resolv.conf ressemblerait à ceci:

 # 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 

Cependant, sur un ou deux redémarrages j'ai remarqué qu'il avait DID ce que je voulais, par exemple

 # 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 

Solution Lorsque j'ai donné les deux interfaces (filaire et wlan0) aux lignes dns-search et dns-nameserver, tout fonctionnait bien à chaque redémarrage (jusqu'à présent)

ie le file d'interfaces suivant fonctionne pour moi:

 # 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 

et me donne le resolv.conf correct suivant après chaque redémarrage (jusqu'à présent)

 # 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 

Je suppose que cette configuration en double est normale, mais quelque peu redondante.

Conclusion: Si une interface (autre que lo0) ne contient pas les informations dns-search et dns-nameserver, alors resolvconf ne met rien dans votre file resolv.conf. (C'est comme si ifup avait l'interface wlan0 en second et ifup effacé resolv.conf ou similaire.)

Je ne suis pas sûr que ce soit un bug ou pas, se sent mal à moi cependant.

Modification des interfaces réseau afin d'append l'utilisation de votre DNS personnalisé est un moyen … mais pour modifier définitivement resolv.conf à l'échelle du système avec votre dnsnameserver personnalisé, vous devez installer le package resolvconf (s'il n'est pas déjà installé par défaut) et remplir sa base file de configuration avec vos valeurs de servers DNS personnalisés. Espérons que ce petit guide vous aidera pour d'autres configurations concernant les inputs DNS de resolv.conf http://www.bytelinux.com/make-permanent-changes-to-resolv-conf-file-on-ubuntu/

Vous voulez utiliser les servers DNS IPv6 sur /etc/network/interfaces … mettez simplement vos inputs de noms DNS IPv6 sur l'interface réseau spécifique comme ceci:

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

Pour append des dnsnamesers IPv6 permanents à resolv.conf, utilisez le même lien que j'ai ajouté ci-dessous et éditez le file de base resolvconf en remplissant vos propres noms DNS IPv6:

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

Pour configurer / etc / network / interfaces avec IPv6, utilisez ce guide http://www.bytelinux.com/configure-permanent-static-ip-address-alias-interfaces-debian-based-systems/ et remplacez IPv4 par IPv6 le il suit: 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 

Pourquoi ne pas implémenter ces servers DNS IPv6 directement sur le file système /etc/resolv.conf en éditant le file de base resolvconf comme suggéré dans ma réponse précédente avec le lien et continuer à utiliser le file d'interfaces réseau? Vous pouvez append un set de servers de noms DNS IPv6 dans /etc/resolv.conf et si vous souhaitez utiliser d'autres servers de noms IPv6 pour une carte réseau spécifique, utilisez-les uniquement sur / etc / network / interfaces.