web-dev-qa-db-fra.com

Comment définir une adresse de serveur de noms DNS statique sur Ubuntu Server?

J'essaie de manière statique de définir des adresses de serveur DNS sur mon serveur Ubuntu qui s'exécute en tant que machine virtuelle. J'ai suivi toutes les recommandations sur les pages officielles de support Ubuntu, mais je ne peux tout simplement pas me débarrasser des serveurs DNS de mon FAI définis par DHCP.

J'ai attribué l'interface br0 sur l'adresse IP statique de mon ordinateur hôte et eth0 sur VM pour utiliser Google DNS et mon propre DNS local s'exécutant sur la deuxième machine virtuelle en le configurant dans /etc/network/interfaces. J'ai essayé de tripoter les fichiers de base et de queue dans /etc/resolvconf/resolv.conf.d/ et j'ai essayé de mélanger ordre d'interface dans /etc/resolvconf/interface-order, mais lorsque j'ai redémarré le service réseau, les adresses DNS du FAI ont été renvoyées à chaque fois.

Existe-t-il un moyen de désactiver resolvconf et de configurer mon fichier resolv.conf manuellement, comme je le faisais toujours sous Red Hat? Ou à l'adresse pouvez-vous me dire quel script de raccordement continue de placer les DNS du fournisseur de services Internet dans le fichier resolv.conf? Mon fournisseur d'accès ne me permet pas de modifier les paramètres DHCP de mon routeur, je ne peux donc pas le faire de cette façon.

Pourquoi une chose aussi simple, telle que la configuration des serveurs DNS, est-elle devenue si compliquée?

7
Aleks

1: Resolvconf écrit son fichier resolv.conf dynamique à /run/resolvconf/resolv.conf. /etc/resolv.conf est un lien symbolique vers ce dernier emplacement. Si vous souhaitez utiliser un fichier resolv.conf statique, remplacez simplement le lien symbolique /etc/resolv.conf par un fichier. Ceci est actuellement pris en charge mais non recommandé.

2: Si je comprends bien, la machine affectée exécute Ubuntu Server Edition. Dans ce cas, il configure les interfaces à l'aide du programme ifup dont le fichier de configuration est /etc/network/interfaces. Pour les interfaces configurées via la méthode dhcp, ifup (normalement) utilise dhclient du package isc-dhcp-client. Dhclient reçoit les informations du serveur de noms du serveur DHCP et son script de raccordement, /etc/dhcp/dhclient-enter-hooks.d/resolvconf, envoie ces informations à resolvconf, qui les place dans resolv.conf.

Une chose que vous pouvez faire est de modifier /etc/resolvconf/interface-order de telle sorte que eth0.dhcp vienne avant eth0.dhclient. (Je suppose que l'interface pertinente est eth0.) Si vous avez le interface-order par défaut, vous pouvez par exemple simplement ajouter une ligne eth0.dhcp avant la ligne eth*.

--- interface-order_ORIG    2012-11-06 10:12:47.630529145 +0100
+++ interface-order 2012-11-06 10:13:16.410529800 +0100
@@ -9,6 +9,7 @@
 hso*
 em+([0-9])?(_+([0-9]))*
 p+([0-9])p+([0-9])?(_+([0-9]))*
+eth0.dhcp
 eth*
 ath*
 wlan*

Ajoutez ensuite une ligne dns-nameservers à la strophe iface eth0 dans /etc/network/interfaces avec l'adresse du serveur de noms correcte.

iface eth0 inet dhcp
    dns-nameservers 1.2.3.4

Étant donné que eth0.dhcp vient avant eth0.dhclient, l'adresse du serveur de noms correcte sera incluse dans resolv.conf avant l'adresse incorrecte.

Un autre moyen de remplacer le comportement indésirable d'inclure l'adresse du serveur de noms fourni par le serveur DHCP consiste à modifier le script de raccordement de dhclient. Par exemple, vous pouvez ajouter une ligne comme celle-ci (où 1.2.3.4 est une adresse de serveur de noms que vous souhaitez supprimer).

--- resolvconf_ORIG 2012-03-29 22:37:14.000000000 +0200
+++ resolvconf  2012-11-05 20:53:33.312681077 +0100
@@ -54,6 +54,7 @@
            fi
            shopt -s nocasematch
            for nameserver in $new_dhcp6_name_servers ; do
+               [ "$nameserver" = "1.2.3.4" ] && continue

Une autre possibilité (légèrement statique car totalement statique) consiste à ajouter une option de serveur de noms à /etc/resolvconf/resolv.conf.d/head.

3: La configuration des adresses de serveur de noms DNS est devenue plus compliquée, car les machines deviennent mobiles, de plus en plus d'interfaces et la configuration statique est progressivement remplacée par la configuration automatique.

5
jdthood

Tirez simplement parti de dhclient (Google DNS est utilisé à titre d'exemple). C'est beaucoup plus propre que les autres réponses de l'OMI:

  1. Sauvegardez /etc/resolv.conf: Sudo cp /etc/resolv.conf /etc/resolv.conf.auto

  2. Editez /etc/dhcp[3]/dhclient.conf (Ubuntu 14.04 omet le 3): Sudo vi /etc/dhcp/dhclient.conf

  3. S'il existe une ligne contenant des serveurs de noms de domaines, notez les adresses IP pour référence ultérieure.
  4. Remplacez cette ligne par la ligne suivante ou ajoutez-la: Pour IPv4: prepend domain-name-servers 8.8.8.8, 8.8.4.4; Pour IPv6: prepend domain-name-servers 2001:4860:4860::8888, 2001:4860:4860::8844;
  5. Maintenant, relâchez et renouvelez IP: ifdown eth0 && ifup eth0

Maintenant, redémarrez tous les clients réseau que vous utilisez (comme chrome ou tout le reste)

3
rynop

OMI: c'est un bug dans l'outil de configuration graphique.

Ma solution la plus simple consiste à commenter (ou supprimer) la ligne commençant par "request ..." dans le fichier /etc/dhcp/dhclient.conf

0
ubuntu_new69