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?
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.
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:
Sauvegardez /etc/resolv.conf: Sudo cp /etc/resolv.conf /etc/resolv.conf.auto
Editez /etc/dhcp[3]/dhclient.conf (Ubuntu 14.04 omet le 3): Sudo vi /etc/dhcp/dhclient.conf
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;
ifdown eth0 && ifup eth0
Maintenant, redémarrez tous les clients réseau que vous utilisez (comme chrome ou tout le reste)
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