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

14

Tous les exemples que j'ai vus de configurations ( /etc/network/interfaces) ont montré que vous configurez une interface puis en dessous qui a donné les dns-*lignes 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 faux en soi d'ajouter une adresse IPv6 sur la dns-nameserversligne.

Cependant, comme je configure également l'interface pour IPv6 de toute façon, il était logique d'y ajouter la dns-nameserversligne:

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

... ou l'a fait? Parce que lors de la resolvconfcréation, /etc/resolv.confil ignore simplement tous les serveurs DNS IPv6. Il semble également ignorer dns-searchet dns-domain. La seule ligne qu'il semble honorer est la dns-nameserversligne de la configuration IPv4 pour eth0.

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


D'autres preuves circonstancielles expliquant pourquoi elles devraient faire partie de chaque ifacestrophe respective . Citation de man 8 resolvconf:

Le ifup(8) programme peut être utilisé pour configurer les interfaces réseau selon les paramètres de /etc/network/interfaces(5). Pour des ifupinformations push serveur de noms resolvconfquand il configure une interface, ajouter des dns-lignes à la pertinente ifacestrophe /etc/network/interfaces. Pour ajouter des adresses de serveurs de noms, ajoutez une ligne commençant par dns-nameservers.

0xC0000022L
la source
Si vous rencontrez toujours ce problème, veuillez publier l'intégralité de votre fichier / etc / network / interfaces et la sortie de / usr / share / resolvconf / dump-debug-info qui est incluse dans le package resolvconf dans Ubuntu 15.04.
jdthood

Réponses:

9

Il est correct de placer les options dns- * dans la iface eth0 inet staticstrophe ou la iface eth0 inet6 staticstrophe. Les options deviennent actives lorsque la définition d'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 pour 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  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

Notez que les adresses, les serveurs DNS et les options de recherche DNS des deux strophes sont maintenant actives.

[Mis à jour le 30 mai 2015]

jdthood
la source
1

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

Remarque: j'ai désinstallé NetworkManager et je viens de quitter resolvconf pour faire son travail. (Il s'agit d'un serveur fixe, donc les choses ne changent pas beaucoup 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 temps mon fichier /etc/resolv.conf serait vide.

Par exemple, lorsque mon fichier 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 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é aux DEUX interfaces (filaires et wlan0) les lignes dns-search et dns-nameserver, tout a bien fonctionné à chaque redémarrage (jusqu'à présent de toute façon)

c'est-à-dire que le fichier d'interface 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, quoique quelque peu redondante.

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

Je ne suis pas sûr que ce soit un bug ou non, je me sens mal.

Volonté
la source
-1

La modification des interfaces réseau afin d'ajouter une utilisation de votre DNS personnalisé est un moyen ... mais pour modifier de façon permanente resolv.conf à l'échelle du système avec votre serveur DNS personnalisé, vous devez installer le package resolvconf (s'il n'est pas déjà installé par défaut) et remplir sa base fichier de configuration avec vos valeurs de serveurs de noms DNS personnalisés. J'espère que ce petit guide vous aidera pour d'autres configurations concernant les entrées DNS resolv.conf http://www.bytelinux.com/make-permanent-changes-to-resolv-conf-file-on-ubuntu/

Matei Cezar
la source
2
Bienvenue sur Unix et Linux! Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure davantage de parties essentielles de ce guide ici et de fournir le lien de référence.
Anthon
@MateiCezar: pourriez-vous s'il vous plaît élaborer? Je ne suis pas sûr que vous ayez même lu ma question jusqu'à la fin. Le package resolvconf est installé. Je voudrais /etc/network/interfacesconfigurer mes serveurs DNS pour IPv4 et IPv6 respectivement.
0xC0000022L
-1

Vous souhaitez utiliser des serveurs DNS IPv6 sur /etc/network/interfaces ... placez simplement vos entrées de noms DNS IPv6 sur l'interface réseau spécifique comme ceci:

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

Pour ajouter définitivement des noms de domaine DNS IPv6 à resolv.conf, utilisez le même lien que j'ai ajouté ci-dessous et modifiez le fichier 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 en tant que 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 
Matei Cezar
la source
Correction de votre mise en forme. Encore une fois, ma question indique clairement que cela n'entraîne pas l'ajout de ces serveurs DNS pour IPv6 /etc/resolv.conf. Si cela fonctionne pour vous, il serait utile de connaître la version exacte du système.
0xC0000022L
permettez-moi de comprendre ceci ... vous voulez utiliser des résolveurs DNS IPv6 à partir de / etc / network / interfaces et les ajouter dans ce fichier ne fonctionne pas pour vous?
Matei Cezar
Je peux les ajouter très /etc/network/interfacesbien. Ce qui ne se produit pas, c'est qu'ils soient transférés /etc/resolv.confcomme ils le devraient. Et j'essaie de comprendre ce que je fais mal, oui.
0xC0000022L
Vous ne l'avez toujours pas compris? Ces entrées DNS de / etc / network / interfaces sont-elles transférées vers /etc/resolv.conf ou non? Généralement, ces entrées de serveurs de noms provenant d'interfaces ne sont jamais transférées ou écrites sur /etc/resolv.com, elles fonctionnent seules à partir de cette carte réseau et ne sont pas implémentées à l'échelle du système. Seul le fichier /etc/resolv.conf DNS est utilisé par les interfaces qui manquent d'entrées dnsnameservers.
Matei Cezar
Désolé ... mais je ne comprends toujours pas ce que vous essayez de réaliser avec ces entrées de serveurs de noms DNS.
Matei Cezar
-1

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

bytelinux com
la source
ce que vous mentionnez dans votre dernière phrase est exactement la raison pour laquelle je ne veux pas utiliser la configuration de base resolvconf et c'est exactement ce que je suis en train. De plus, c'est exactement ce qui échoue.
0xC0000022L
OK j'ai compris! Mais pourquoi voulez-vous implémenter les choses de cette manière? De toute façon, vous avez seulement besoin que ces serveurs de noms DNS soient accessibles à l'échelle du système, y a-t-il une raison de les transférer du réseau / des interfaces vers resolv.conf, alors que vous pouvez simplement les écrire dans les deux fichiers et vous avez terminé!?
bytelinux com
Je ne sais pas combien de machines vous administrez, mais pour moi, c'est suffisant pour essayer de me faciliter la vie. Depuis /etc/network/interfacesest censé faire le travail, j'essaie de comprendre ce que je fais mal.
0xC0000022L