GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer systemd-resolved et systemd-networkd pour utiliser le serveur DNS local pour résoudre les domaines locaux et le serveur DNS distant pour les domaines distants ?

Dans le fichier de configuration de l'interface réseau local (un fichier correspondant au modèle de nom /etc/systemd/network/*.network ) nous devons soit spécifier que nous voulons obtenir l'adresse du serveur DNS local à partir du serveur DHCP en utilisant DHCP= choix :

[Network]
DHCP=yes

ou spécifiez son adresse explicitement en utilisant DNS= choix :

[Network]
DNS=10.0.0.1

De plus, nous devons spécifier (dans la même section) les domaines locaux en utilisant Domains= possibilité

Domains=domainA.example domainB.example ~example

Nous spécifions les domaines locaux domainA.example domainB.example pour obtenir le comportement suivant (à partir de systemd-resolved.service, systemd-resolved page de manuel):

Les recherches d'un nom d'hôte se terminant par l'un des domaines par interface sont exclusivement acheminées vers les interfaces correspondantes.

Par ici hostX.domainA.example sera résolu exclusivement par notre serveur DNS local.

Nous spécifions avec ~example que tous les domaines se terminant par example doivent être traités comme des domaines de routage uniquement pour obtenir le comportement suivant (d'après la description de ce commit) :

Les serveurs DNS qui ont des domaines de routage uniquement ne doivent être utilisés que pour les domaines spécifiés.

Par ici hostY.on.the.internet sera résolu exclusivement par notre serveur DNS global et distant.

Remarque

Idéalement, lors de l'utilisation du protocole DHCP, les noms de domaine locaux doivent être obtenus à partir du serveur DHCP au lieu d'être spécifiés explicitement dans le fichier de configuration de l'interface réseau ci-dessus. Voir UseDomains= option. Cependant, il existe encore des problèmes avec cette fonctionnalité - voir le problème de l'option des domaines de recherche DHCP systemd-networkd.

Nous devons spécifier le serveur DNS distant comme notre serveur DNS global à l'échelle du système. Nous pouvons le faire en /etc/systemd/resolved.conf fichier :

[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

N'oubliez pas de recharger la configuration et de redémarrer les services :

$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-networkd
$ sudo systemctl restart systemd-resolved

Attention !

Les garanties ci-dessus s'appliquent uniquement lorsque les noms sont résolus par systemd-resolved – voir la page de manuel pour nss-resolve, libnss_resolve.so.2 et la page de manuel pour systemd-resolved.service, systemd-resolved.

Voir aussi :

  • La description du routage des requêtes de recherche dans les pages de manuel relatives à systemd n'est pas claire
  • Comment résoudre les problèmes de DNS avec systemd-resolved ?

Références :

  • Page de manuel pour systemd-resolved.service, systemd-resolved
  • Page de manuel pour resolve.conf, resolve.conf.d
  • Page de manuel pour systemd-network

Juste pour développer l'excellente réponse de @piotrDobrogost, n'oubliez pas de configurer /etc/nsswitch.conf utiliser systemd-resolved comme source de résolution DNS. Votre hosts La directive doit ressembler à ce qui suit pour votre cas d'utilisation particulier :

/etc/nsswitch.conf

hosts:  files resolve dns

Donc, si vous limitez la résolution aux seuls domaines spécifiés dans le Domains directive en /etc/systemd/resolved.conf comme le détaille Piotr ci-dessus, le DNS doit ensuite être consulté dans l'ordre des sources de résolution de noms spécifié /etc/nsswitch.conf lorsque les domaines ne sont PAS trouvé dans Domains instruction :

Le lien suivant fait référence à l'exigence de spécifier résoudre en /etc/nsswitch.conf donc systemd-resolved est consulté lors de la résolution du nom :

https://github.com/systemd/systemd/issues/940

Documentation SystemD que j'ai trouvée désastreuse. J'ai dû reconstituer une compréhension à partir de plusieurs liens, y compris la réponse de Piotr ci-dessus;-)


Linux
  1. Comment j'utilise Ansible et anacron pour l'automatisation

  2. Comment activer la journalisation du serveur DNS BIND pour surveiller les requêtes et pour le dépannage ?

  3. Comment installer et configurer Bind pour configurer votre serveur DNS ?

  4. Comment identifier le nom du logiciel du serveur DNS distant et sa version ?

  5. Comment configurer RDP dans Windows Server 2008 R2

Comment installer et utiliser le serveur Xrdp (bureau à distance) sur le système Linux

Comment configurer DNS dans Windows Server 2012

Comment installer et configurer Parse Server sur Ubuntu 20.04

Comment installer et configurer le serveur Sandstorm sur CentOS 8

Comment installer et configurer le pare-feu CSF pour Linux

Comment installer et configurer le serveur DNS sous Linux