Utilisez dnsmasq pour fournir des services DNS et DHCP

De nombreux passionnés de technologie trouvent importante la possibilité de contrôler la résolution de leur nom d’hôte. La configuration de serveurs et de services nécessite généralement une certaine forme d’adresse fixe, et nécessite parfois également des formes spéciales de résolution telles que la définition de serveurs Kerberos ou LDAP, de serveurs de messagerie, etc. Tout cela peut être réalisé avec dnsmasq.

dnsmasq est un programme léger et simple qui permet d’émettre des adresses DHCP sur votre réseau et d’enregistrer le nom d’hôte & adresse IP dans DNS. Cette configuration permet également une résolution externe, de sorte que l’ensemble de votre réseau pourra également se parler et trouver des sites externes.

Cet article couvre l’installation et la configuration de dnsmasq sur une machine virtuelle ou une petite machine physique comme un Raspberry Pi afin qu’il puisse fournir ces services dans votre réseau domestique ou votre laboratoire. Si vous avez une configuration existante et que vous avez juste besoin d’ajuster les paramètres de votre poste de travail local, lisez l’article précédent qui couvre la configuration du plugin dnsmasq dans NetworkManager.

Installer dnsmasq

Tout d’abord, installez le paquet dnsmasq:

sudo dnf install dnsmasq

Ensuite, activez et démarrez le service dnsmasq:

sudo systemctl enable --now dnsmasq

Configurez dnsmasq

Tout d’abord, effectuez une copie de sauvegarde du dnsmasq.fichier de configuration:

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

Ensuite, modifiez le fichier et apportez les modifications suivantes pour refléter votre réseau. Dans cet exemple, mydomain.org est le nom de domaine, 192.168.1.10 est l’adresse IP du serveur dnsmasq et 192.168.1.1 est la passerelle par défaut.

sudo vi /etc/dnsmasq.conf

Insérer le contenu suivant:

domain-neededbogus-privno-resolvserver=8.8.8.8server=8.8.4.4local=/mydomain.org/listen-address=::1,127.0.0.1,192.168.1.10expand-hostsdomain=mydomain.orgdhcp-range=192.168.1.100,192.168.1.200,24hdhcp-option=option:router,192.168.1.1dhcp-authoritativedhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases

Testez la configuration pour vérifier les fautes de frappe et les erreurs de syntaxe:

$ sudo dnsmasq --testdnsmasq: syntax check OK.

Éditez maintenant le fichier hosts, qui peut contenir à la fois des hôtes alloués de manière statique et dynamique. Les adresses statiques doivent se trouver en dehors de la plage DHCP que vous avez spécifiée précédemment. Les hôtes utilisant DHCP mais qui ont besoin d’une adresse fixe doivent être entrés ici avec une adresse dans la plage DHCP.

sudo vi /etc/hosts

Les deux premières lignes devraient déjà être là. Ajoutez les lignes restantes pour configurer le routeur, le serveur dnsmasq et deux serveurs supplémentaires.

127.0.0.1 localhost localhost.localdomain::1 localhost localhost.localdomain192.168.1.1 router192.168.1.10 dnsmasq192.168.1.20 server1192.168.1.30 server2

Redémarrez le service dnsmasq:

sudo systemctl restart dnsmasq

Ajoutez ensuite les services au pare-feu pour permettre aux clients de se connecter:

sudo firewall-cmd --add-service={dns,dhcp}
sudo firewall-cmd --runtime-to-permanent

Résolution du nom du test

Tout d’abord, installez bind-utils pour obtenir les paquets nslookup et dig. Ceux-ci vous permettent d’effectuer des recherches avant et arrière. Vous pouvez utiliser ping si vous préférez ne pas installer de paquets supplémentaires. mais ces outils valent la peine d’être installés pour la fonctionnalité de dépannage supplémentaire qu’ils peuvent fournir.

sudo dnf install bind-utils

Maintenant, testez la résolution. Tout d’abord, testez la résolution forward (nom d’hôte vers adresse IP):

$ nslookup server1Server: 127.0.0.1Address: 127.0.0.1#53Name: server1.mydomain.orgAddress: 192.168.1.20

Ensuite, testez la résolution inverse (adresse IP vers nom d’hôte):

$ nslookup 192.168.1.2020.1.168.192.in-addr.arpa name = server1.mydomain.org.

Enfin, testez la résolution des noms d’hôte en dehors de votre réseau:

$ nslookup fedoramagazine.orgServer: 127.0.0.1Address: 127.0.0.1#53Non-authoritative answer:Name: fedoramagazine.orgAddress: 35.196.109.67

Test des baux DHCP

Pour tester les baux DHCP, vous devez démarrer une machine qui utilise DHCP pour obtenir une adresse IP. Toute variante Fedora le fera par défaut. Une fois que vous avez démarré la machine cliente, vérifiez qu’elle a une adresse et qu’elle correspond au fichier de location pour dnsmasq.

De la machine exécutant dnsmasq:

$ sudo cat /var/lib/dnsmasq/dnsmasq.leases1598023942 52:54:00:8e:d5:db 192.168.1.100 server3 01:52:54:00:8e:d5:db1598019169 52:54:00:9c:5a:bb 192.168.1.101 server4 01:52:54:00:9c:5a:bb

Extension de la fonctionnalité

Vous pouvez attribuer aux hôtes une adresse IP fixe via DHCP en l’ajoutant à votre fichier hosts avec l’adresse souhaitée (dans votre plage DHCP). Pour ce faire, ajoutez-le dans le dnsmasq.conf file la ligne suivante, qui attribue l’adresse IP répertoriée à tout hôte portant ce nom:

dhcp-host=myhost

Vous pouvez également spécifier une adresse MAC à laquelle une adresse IP fixe doit toujours être attribuée:

dhcp-host=11:22:33:44:55:66,192.168.1.123

Vous pouvez spécifier un serveur de démarrage PXE si vous devez automatiser les builds de machine

tftp-root=/tftpboot
dhcp-boot=/tftpboot/pxelinux.0,boothost,192.168.1.240

Cela devrait pointer vers l’URL réelle de votre serveur TFTP.

Si vous devez spécifier des enregistrements SRV ou TXT, par exemple pour LDAP, Kerberos ou similaires, vous pouvez les ajouter :

srv-host=_ldap._tcp.mydomain.org,ldap-server.mydomain.org,389
srv-host=_kerberos._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos._tcp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-master._udp.mydomain.org,krb-server.mydomain.org,88
srv-host=_kerberos-adm._tcp.mydomain.org,krb-server.mydomain.org,749
srv-host=_kpasswd._udp.mydomain.org,krb-server.mydomain.org,464
txt-record=_kerberos.mydomain.org,KRB-SERVER.MYDOMAIN.ORG



+