66 votes

Comment gérer les DNS dans NetworkManager via la console (nmcli) ?

J'ai CentOS 7.2 (invité dans VirtualBox, boîte vagrant centos/7 (pas d'interface graphique).

Je vois qu'il y a un serveur de noms dans le fichier :

$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.2.3

Mais comment l'ajouter ou le remplacer par un nouveau ?

Je l'ai fait manuellement directement dans le réseau :

$ vi /etc/sysconfig/network-scripts/ifcfg-eth0
PEERDS=no
DNS1=8.8.4.4
DNS2=8.8.8.8

Et cela fonctionne.

Mais existe-t-il un moyen de le faire par le biais de nmcli ?

P.S. Non nmtui installé (dans un système sélectionné).

100voto

Pear Points 11

Voici la commande pour modifier une connexion existante.

nmcli con mod $connectionName ipv4.dns "8.8.8.8 8.8.4.4"

connectionName peuvent être trouvés par commande : nmcli con . Dans le cas de la question, il s'agira de "System eth0"

Si vous souhaitez ignorer les serveurs de noms et les domaines de recherche configurés automatiquement, c'est-à-dire les paramètres transmis par DHCP.

nmcli con mod $connectionName ipv4.ignore-auto-dns yes

Enfin, pour activer les changements, rétablissez la connexion puis rétablissez-la :

nmcli con down $connectionName
nmcli con up $connectionName

Vérifier avec cat /etc/resolv.conf . Vous ne devez pas modifier /etc/resolv.conf manuellement, car il est généré par le service NetworkManager, il est susceptible d'être remplacé à tout moment.

Manuel nmcli utile

13voto

infinite-etcetera Points 673

Il existe un bon outil d'interface utilisateur développé par red hat appelé nmtui que vous devriez vraiment essayer. il est pré-installé sur diverses distros, de nos jours, mais s'il ne l'est pas sur la vôtre, essayez :

  sudo yum install networkmanager-tui

il utilise une interface texte basée sur curses - accessible à partir de la ligne de commande. nmcli n'est particulièrement nécessaire que lors de l'écriture de scripts, et offre une plus grande marge d'erreur en raison de la plus grande variété d'entrées possibles.

9voto

Brien Points 71

En plus de la propriété ipv4.dns décrite ci-dessus...

Pour exclure les serveurs DNS fournis par le DHCP, réglez la propriété ipv4.ignore-auto-dns sur yes.

nmcli con mod <connectionName> ipv4.ignore-auto-dns yes

Pour activer les modifications, abaissez puis relevez la connexion :

nmcli con down <connectionName>
nmcli con up <connectionName>

Vérifier avec cat /etc/resolv.conf

6voto

Yannig Perre Points 11

Juste au cas où, j'ai fait un petit script pour faire cela automatiquement (ici avec google DNS) pour chaque connexion ethernet/sans fil :

nmcli -g name,type connection  show  --active | awk -F: '/ethernet|wireless/ { print $1 }' | while read connection
do
  nmcli con mod "$connection" ipv6.ignore-auto-dns yes
  nmcli con mod "$connection" ipv4.ignore-auto-dns yes
  nmcli con mod "$connection" ipv4.dns "8.8.8.8 8.8.4.4"
  nmcli con down "$connection" && nmcli con up "$connection"
done

À la fin, les connexions sans fil seront perdues. Il faut se reconnecter et voilà !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X