Auteur Sujet: Pourquoi déclarer les serveurs DNS pour chaque interface réseau ?  (Lu 2304 fois)

0 Membres et 1 Invité sur ce sujet

Leon

  • Client SFR sur réseau Numericable
  • Modérateur
  • *
  • Messages: 5 983
Bonjour à tous,
Voici une nouvelle question à 1.50$... Ca faisait longtemps.

Je n'arrive pas à comprendre pourquoi, sur un OS classique (Windows, Ubuntu), on déclare les serveurs DNS à utiliser interface par interface.
Chaque interface réseau a son (ou ses) champ "serveur DNS".

Un serveur DNS, c'est pas censé être quelque chose de "global"?

Du coup, comment faire pour faire cohabiter 2 interfaces avec 2 réseaux sur 1 PC?
Est-ce qu'on peut avoir en même temps:
* un serveur DNS "internet" (genre 9.9.9.9) sur l'interface réseau Internet
* un serveur DNS "local" sur une autre interface réseau, avec quelques sous réseaux, mais aucune "route par défaut".

Si je tente une configuration comme ça, comment l'OS fait pour choisir lequel des 2 serveurs il va interroger?
Est-ce qu'il interroge les 2 serveurs DNS successivement s'il n'a rien trouvé sur la première interface?
Comment l'OS fait pour prioriser un serveur par rapport à l'autre?
Est-ce que déclarer un "domain name" pour l'une ou l'autre des interface réseau va aider l'OS à trouver la bonne interface réseau et le bon serveur DNS?

Leon.

buddy

  • Expert
  • Abonné Free fibre
  • *
  • Messages: 15 127
  • Alpes Maritimes (06)
Pourquoi déclarer les serveurs DNS pour chaque interface réseau ?
« Réponse #1 le: 14 juillet 2020 à 14:53:32 »
Bonjour,

dans mon cas au travail, j'ai bien 2 dns différents.

La connexion "normale" pour l'accès à internet (comme la majorité de mes collègues) puis sur une 2eme carte réseau, l'accès à un réseau local sur lequel on a des serveurs auquel tout le monde n'a pas accès.

Sur mon PC la route par défaut est la connexion "sortante" avec un DNS et sur la 2eme interface réseau, elle est utilisée uniquement pour le sous réseau 10.x.0.0/16 avec un serveur DNS local pour résoudre les noms de domaines locaux. serveur*.interne.xxxxxx.com (xxxxx.com n'existant pas, c'est un NDD "local", non enregistré, non déclaré)

bon après, il y a d'autres sécurités aussi derrière pour "renforcer" la sécurité et que même via mon PC on ne puisse pas tout pomper et l'envoyer sur le net.

Le but principal étant que seuls les personnes "nécessaires" aient accès aux serveurs/fichiers "protégés".

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
Pourquoi déclarer les serveurs DNS pour chaque interface réseau ?
« Réponse #2 le: 14 juillet 2020 à 16:20:05 »
Bonjour à tous,
Voici une nouvelle question à 1.50$... Ca faisait longtemps.

Je n'arrive pas à comprendre pourquoi, sur un OS classique (Windows, Ubuntu), on déclare les serveurs DNS à utiliser interface par interface.
Chaque interface réseau a son (ou ses) champ "serveur DNS".

Un serveur DNS, c'est pas censé être quelque chose de "global"?

Du coup, comment faire pour faire cohabiter 2 interfaces avec 2 réseaux sur 1 PC?
Est-ce qu'on peut avoir en même temps:
* un serveur DNS "internet" (genre 9.9.9.9) sur l'interface réseau Internet
* un serveur DNS "local" sur une autre interface réseau, avec quelques sous réseaux, mais aucune "route par défaut".

Si je tente une configuration comme ça, comment l'OS fait pour choisir lequel des 2 serveurs il va interroger?
Est-ce qu'il interroge les 2 serveurs DNS successivement s'il n'a rien trouvé sur la première interface?
Comment l'OS fait pour prioriser un serveur par rapport à l'autre?
Est-ce que déclarer un "domain name" pour l'une ou l'autre des interface réseau va aider l'OS à trouver la bonne interface réseau et le bon serveur DNS?

Leon.

oui c'est global:
- la config DNS d'une interface est optionnelle.
- sur Windows, les config DNS sur plusieurs interfaces alimentent la liste globale dans l'ordre de priorité des interfaces (en principe avec la 'metric' ou ordonnées manuellement voir: https://docs.microsoft.com/en-us/windows-server/networking/technologies/network-subsystem/net-sub-interface-metric ). Le fonctionnement est ensuite décrit ici (en gros on tente en 1er le 1er serveur de l'interface prio, puis les 1ers serveurs de toutes les interfaces, puis les 2emes serveurs, etc).

Pour les résolutions d'un domaine précis , elles peuvent être altérées via une nom de domaine propre a une interface (suffixe DNS d'interface dans le jargon Windows, "search domain" en jargon Linux). Si on met 'mondomain.com' sur une interface avec une config DNS sur cette interface, ca va utiliser la config DNS de cette interface pour résoudre '*.mondomain.com' et pas la config globale.

Pour Windows on a aussi "table de routage de résolution DNS" (NRPT) qu'on peut modifier directement avec "Add-DnsClientNrptRule (powershell):

par exemple:
Add-DnsClientNrptRule -Namespace "monddomaine.com" -NameServers "10.1.1.1"va toujours utiliser le serveur DNS 10.1.1.1 pour résoudre *.monddomaine.com quelque soit la config DNS globale.

En pratique on utilise une stratégie d'entreprise (stratégie de groupe) pour modifier la NRPT de toutes les machines d"un même domaine par exemple.

Les distro Linux n'ont pas cet équivalent (du moins de base) mais par contre on peut altérer avec des 'jail' la résolution DNS par application.


Leon

  • Client SFR sur réseau Numericable
  • Modérateur
  • *
  • Messages: 5 983
Pourquoi déclarer les serveurs DNS pour chaque interface réseau ?
« Réponse #3 le: 14 juillet 2020 à 16:41:15 »
Merci à tous les 2. Ca répond bien à la question.

Je vais faire des tests avec Linux, pour voir si le comportement que tu décris kgersen sur la priorité des serveurs DNS sous Windows est équivalent au comportement sous Linux.

Si je comprends bien, la déclaration d'un serveur DNS pour chaque interface, c'est un principe idiot, vu que ça n'est pas exploité comme ça par l'OS.
C'est "pratique" de faire comme ça dans la plupart des situations, mais ça ne correspond pas au mécanisme de l'OS qui traite, les requêtes DNS de manière "globale" (et non indépendamment pour chaque interface).

Leon.

kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
Pourquoi déclarer les serveurs DNS pour chaque interface réseau ?
« Réponse #4 le: 14 juillet 2020 à 17:18:41 »
Merci à tous les 2. Ca répond bien à la question.

Je vais faire des tests avec Linux, pour voir si le comportement que tu décris kgersen sur la priorité des serveurs DNS sous Windows est équivalent au comportement sous Linux.

Si je comprends bien, la déclaration d'un serveur DNS pour chaque interface, c'est un principe idiot, vu que ça n'est pas exploité comme ça par l'OS.
C'est "pratique" de faire comme ça dans la plupart des situations, mais ça ne correspond pas au mécanisme de l'OS qui traite, les requêtes DNS de manière "globale" (et non indépendamment pour chaque interface).

Leon.

de base sur Linux c'est déclaré dans /etc/resolv.conf donc dans un endroit unique ce qui est plus logique que par interface.
apres d'autres logiciels au dessus comme systemd-networkd ou un 'network manager' (ubuntu desktop) peuvent déplacer la déclaration sur une interface mais a l'arrivé c'est fusionné dans /etc/resolv.conf car c'est ca que l'OS utilise.

La déclaration par interface oui est un peu idiot. Apres elle est rarement manuelle puisque ca se fait en général via DHCP ou RDDNS

A noter aussi, sur une machine dual stack IPv6 étant prio, un serveur DNS IPv6 configuré aura précédence sur un serveur IPv4 meme si on cherche à faire un résolution DNS pour obtenir une IPv4. Pas mal de gens oublient ce point.