Recherche de site Web

Comment configurer un serveur DNS/DHCP à l'aide de dnsmasq sur CentOS/RHEL 8/7


Un serveur Dynamic Host Configuration Protocol (DHCP) attribue de manière dynamique des adresses IP et d'autres paramètres de configuration réseau à chaque périphérique d'un réseau. Un redirecteur DNS sur un réseau local transmet les requêtes DNS pour les noms de domaine non locaux aux serveurs DNS en amont (en dehors de ce réseau). Un serveur de mise en cache DNS répond aux requêtes récursives des clients afin que la requête DNS puisse être résolue plus rapidement, améliorant ainsi les vitesses de recherche DNS sur les sites précédemment visités.

dnsmasq est un redirecteur DNS léger et facile à configurer, un logiciel de serveur DHCP et un sous-système de publicité de routeur pour les petits réseaux. Dnsmasq prend en charge Linux, *BSD, Mac OS X ainsi qu'Android.

Il comporte un sous-système DNS qui fournit un serveur DNS local pour le réseau, avec transfert de tous les types de requêtes vers des serveurs DNS récursifs en amont et mise en cache des types d'enregistrements courants. Le sous-système DHCP prend en charge DHCPv4, DHCPv6, BOOTP, PXE et un serveur TFTP. Et le sous-système de publicité du routeur prend en charge la configuration automatique de base pour les hôtes IPv6.

Dans cet article, nous vous guiderons à travers les instructions sur la façon d'installer et de configurer le serveur DNS/DHCP à l'aide de dnsmasq sur CentOS/RHEL 8/7 . distributions.

Installation de dnsmasq dans CentOS et RHEL Linux

1. Le package dnsmasq est disponible dans les référentiels par défaut et peut être facilement installé à l'aide du gestionnaire de packages YUM, comme indiqué.

yum install dnsmasq

2. Une fois l'installation du package dnsmasq terminée, vous devez démarrer le service dnsmasq pour le moment et lui permettre de démarrer automatiquement au démarrage du système. En outre, vérifiez son état pour vous assurer qu’il est opérationnel à l’aide des commandes systemctl suivantes.

systemctl start dnsmasq
systemctl enable dnsmasq
systemctl status dnsmasq

Configuration du serveur dnsmasq dans CentOS et RHEL Linux

3. Le serveur dnsmasq peut être configuré via le fichier /etc/dnsmasq.conf (qui contient des options bien commentées et expliquées), et l'utilisateur -les fichiers de configuration définis peuvent également être ajoutés dans le répertoire /etc/dnsmasq.d.

DNS est activé par défaut, donc avant d'apporter des modifications, assurez-vous de créer une sauvegarde du fichier /etc/dnsmasq.conf.

cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

4. Ouvrez maintenant le fichier /etc/dnsmasq.conf à l'aide de votre éditeur de texte préféré et effectuez les paramètres de configuration suggérés suivants.

vi /etc/dnsmasq.conf 

L'option listen-address est utilisée pour définir l'adresse IP sur laquelle dnsmasq écoutera. Pour utiliser votre serveur CentOS/RHEL pour écouter les requêtes DHCP et DNS sur le LAN, définissez le listen-address à ses adresses IP LAN (n'oubliez pas d'inclure 127.0.0.1), comme indiqué. Notez que l'adresse IP du serveur doit être statique.

listen-address=::1,127.0.0.1,192.168.56.10

En relation avec ce qui précède, vous pouvez restreindre l'interface sur laquelle Dnsmasq écoute en utilisant l'option interface (ajouter plus de lignes pour plusieurs interfaces).

interface=eth0

5. Si vous souhaitez qu'un domaine (que vous pouvez définir comme indiqué ci-dessous) soit automatiquement ajouté aux noms simples dans un fichier hosts, décommentez le expand- option hôtes.

expand-hosts

6. Pour définir le domaine pour dnsmasq, ce qui signifie que les clients DHCP auront des noms de domaine complets tant que le domaine défini correspond, et définit le « domaine ” Option DHCP pour tous les clients.

domain=tecmint.lan

7. Ensuite, définissez également le serveur DNS en amont pour les domaines non locaux à l'aide de l'option server (sous la forme server=dns_server_ip), comme indiqué. .

Google's nameservers
server=8.8.8.8
server=8.8.4.4

8. Ensuite, vous pouvez forcer votre domaine local à une ou plusieurs adresses IP en utilisant l'option adresse comme indiqué.

address=/tecmint.lan/127.0.0.1 
address=/tecmint.lan/192.168.56.10

9. Enregistrez le fichier et vérifiez la syntaxe du fichier de configuration pour détecter les erreurs, comme indiqué.

dnsmasq --test

Configuration de Dnsmasq avec le fichier /etc/resolv.conf

10. Dans cette étape, vous devez effectuer toutes les requêtes à envoyer à dnsmasq en ajoutant les adresses localhost comme seuls serveurs de noms dans le fichier /etc/resolv.conf.

vi /etc/resolv.conf

11. Le fichier /etc/resolv.conf est maintenu par un démon local, en particulier le NetworkManager, donc toutes les modifications apportées par l'utilisateur seront écrasées. Pour éviter cela, protégez-le en écriture en définissant l'attribut de fichier immuable (désactivant l'accès en écriture au fichier) à l'aide de la commande chattr, comme indiqué.

chattr +i /etc/resolv.conf
lsattr /etc/resolv.conf

Définir des hôtes et des noms DNS

12. Le Dnsmasq lit tous les hôtes et noms DNS du fichier /etc/hosts, ajoutez donc les adresses IP et les paires de noms de vos hôtes DNS. comme montré.

127.0.0.1       dnsmasq
192.168.56.10 	dnsmasq 
192.168.56.1   	gateway
192.168.56.100	maas-controller 
192.168.56.20 	nagios
192.168.56.25 	webserver1

Important : les noms DNS locaux peuvent également être définis en important des noms à partir du sous-système DHCP ou en configurant un large éventail de types d'enregistrements utiles.

13. Pour appliquer les modifications ci-dessus, redémarrez le service dnsmasq comme indiqué.

systemctl restart dnsmasq

14. Si le service firewalld est en cours d'exécution, vous devez ouvrir les services DNS et DHCP dans la configuration du pare-feu. , pour permettre aux requêtes des hôtes de votre réseau local de passer au serveur dnsmasq.

firewall-cmd --add-service=dns --permanent
firewall-cmd --add-service=dhcp --permanent
firewall-cmd --reload

Test du DNS local

15. Pour tester si le serveur DNS local ou le transfert fonctionne correctement, vous devez utiliser des outils tels que dig ou nslookup pour effectuer des requêtes DNS. Ces outils sont fournis par le package bind-utils qui n'est peut-être pas préinstallé sur CentOS/RHEL 8, mais vous pouvez l'installer comme indiqué.

yum install bind-utils

16. Une fois l'installation effectuée, vous pouvez exécuter une simple requête sur votre domaine local, comme indiqué.

dig tecmint.lan
OR
nslookup tecmint.lan

17. Vous pouvez également essayer d'interroger le FQDN de l'un des serveurs.

dig webserver1.tecmint.lan
OR
nslookup webserver1.tecmint.lan

18. Pour tester une recherche IP inversée, exécutez une commande similaire.

dig -x 192.168.56.25
OR
nslookup 192.168.56.25

Activer le serveur DHCP à l'aide de dnsmasq

19. Vous pouvez activer le serveur DHCP en décommentant l'option dhcp-range et en fournissant la plage d'adresses disponibles en location et éventuellement une durée de location. par exemple (répéter pour plusieurs réseaux).

dhcp-range=192.168.0.50,192.168.0.150,12h

20. L'option suivante définit où le serveur DHCP conservera sa base de données de baux, cela vous aidera à vérifier facilement les adresses IP qu'il a attribuées.

dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

21. Pour faire passer le serveur DHCP en mode faisant autorité, décommentez l'option.

dhcp-authoritative

22. Enregistrez le fichier et redémarrez le service dnsmasq pour appliquer les modifications récentes.

systemctl restart dnsmasq

Cela nous amène à la fin de ce guide. Pour nous contacter pour toute question ou réflexion que vous souhaitez partager sur ce guide, utilisez le formulaire de commentaires ci-dessous.