Dnsmasq signifie "abréviation de mascarade DNS" est un redirecteur DNS simple, léger et facile à utiliser utilisé pour un petit réseau. Il peut être configuré en tant que cache DNS et serveur DHCP et prend en charge les protocoles IPv4 et IPv6. Lorsqu'il reçoit des requêtes DNS, il y répond depuis son cache ou les transmet aux différents serveurs DNS.
Dnsmasq est composé de trois sous-systèmes :
- Sous-système DNS : Il est utilisé pour mettre en cache différents types d'enregistrements, notamment A, AAAA, CNAME et PTR.
- Sous-système DHCP : Il prend en charge DHCPv4, DHCPv6, BOOTP et PXE
- Sous-système de publicité de routeur : Il fournit une configuration automatique de base pour les hôtes IPv6. Il peut être utilisé de manière autonome ou en conjonction avec DHCPv6.
Dans ce tutoriel, nous allons vous montrer comment configurer un serveur DNS local avec Dnsmasq sur le serveur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un mot de passe root est configuré sur le serveur.
Mise en route
Tout d'abord, il est recommandé de mettre à jour vos packages système vers la dernière version. Vous pouvez mettre à jour tous les packages en exécutant la commande suivante :
apt-get update -y
Après avoir mis à jour tous les packages, vous devrez désactiver le service résolu par Systemd dans votre système. Le service résolu par Systemd est utilisé pour la résolution de noms de réseau pour les applications locales.
Vous pouvez le désactiver en exécutant la commande suivante :
systemctl disable --now systemd-resolved
Une fois le service désactivé, vous devrez supprimer le fichier resolv.conf par défaut et en créer un nouveau avec les détails de votre serveur DNS personnalisé.
Vous pouvez supprimer le fichier resolv.conf par défaut avec la commande suivante :
rm -rf /etc/resolv.conf
Ensuite, ajoutez le serveur DNS de Google au fichier resolv.conf avec la commande suivante :
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Installer Dnsmasq
Par défaut, Dnsmasq est disponible dans le référentiel par défaut d'Ubuntu 20.04. Vous pouvez l'installer en exécutant simplement la commande suivante :
apt-get install dnsmasq dnsutils ldnsutils -y
Une fois l'installation terminée, les services Dnsmasq seront lancés automatiquement. Vous pouvez vérifier l'état du Dnsmasq avec la commande suivante :
systemctl status dnsmasq
Vous devriez obtenir le résultat suivant :
dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago Main PID: 17726 (dnsmasq) Tasks: 1 (limit: 2282) Memory: 868.0K CGroup: /system.slice/dnsmasq.service ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e> Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - A lightweight DHCP and caching DNS server... Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK. Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150 Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: DNS service limited to local subnets Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi> Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53 Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - A lightweight DHCP and caching DNS server.
Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.
Configurer Dnsmasq
Ensuite, vous devrez configurer Dnsmasq en tant que serveur DNS local. Vous pouvez le faire en éditant le fichier de configuration principal de Dnsmasq :
nano /etc/dnsmasq.conf
Modifiez les lignes suivantes :
port=53 domain-needed bogus-priv listen-address=127.0.0.1,your-server-ip expand-hosts domain=dns-example.com cache-size=1000
Enregistrez et fermez le fichier lorsque vous avez terminé.
Ensuite, vous devrez ajouter l'adresse IP de votre serveur en tant que serveur de noms principal dans votre fichier resolv.conf. Vous pouvez l'ajouter avec la commande suivante :
nano /etc/resolv.conf
Ajoutez la ligne suivante au-dessus de la ligne "nameserver 8.8.8.8":
nameserver your-server-ip
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vérifiez le serveur pour toute erreur de configuration avec la commande suivante :
dnsmasq --test
Si tout va bien, vous devriez obtenir le résultat suivant :
dnsmasq: syntax check OK.
Enfin, redémarrez le service Dnsmasq pour appliquer les modifications :
systemctl restart dnsmasq
À ce stade, Dnsmasq est démarré et écoute sur le port 53. Vous pouvez le vérifier avec la commande suivante :
ss -alnp | grep -i :53
Vous devriez obtenir le résultat suivant :
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=4)) udp UNCONN 0 0 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=6)) tcp LISTEN 0 32 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=5)) tcp LISTEN 0 32 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=7))
Ajouter des enregistrements DNS au serveur Dnsmasq
Ensuite, vous devrez modifier votre fichier /etc/hosts et ajouter l'entrée du serveur DNS local.
nano /etc/hosts
Ajoutez la ligne suivante :
your-server-ip host1.dns-example.com
Enregistrez et fermez le fichier lorsque vous avez terminé.
Vérifier la résolution du serveur Dnsmasq
À ce stade, Dnsmasq est installé et configuré. Non, il est temps de vérifier la résolution DNS.
Vous pouvez utiliser la commande dig pour vérifier la résolution DNS comme indiqué ci-dessous :
dig host1.dns-example.com +short
Si tout va bien, vous devriez voir l'adresse IP de votre serveur dans la sortie suivante :
your-server-ip
Vous pouvez également vérifier la résolution DNS externe avec la commande suivante :
dig howtoforge.com +short
Vous devriez obtenir le résultat suivant :
172.67.68.93 104.26.3.165 104.26.2.165
Configurer le client distant pour utiliser le serveur DNS Dnsmasq
Ensuite, vous devrez configurer un client distant pour utiliser votre serveur DNS Dnsmasq comme serveur DNS par défaut.
Tout d'abord, installez les outils DNS avec la commande suivante :
apt-get install dnsutils ldnsutils -y
Une fois installé, vous devrez modifier le fichier /etc/resolv.conf et votre entrée de serveur DNS Dnsmasq.
nano /etc/resolv.conf
Ajoutez la ligne suivante au début du fichier :
nameserver your-server-ip
Enregistrez et fermez le fichier lorsque vous avez terminé.
Ensuite, vérifiez la résolution DNS locale avec la commande suivante :
dig host1.dns-example.com
Vous devriez voir le résultat suivant :
; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com ;; global options: +cmd ;; Got answer: ;; HEADER opcode: QUERY, status: NOERROR, id: 26401 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;host1.dns-example.com. IN A ;; ANSWER SECTION: host1.dns-example.com. 0 IN A 45.58.32.165 ;; Query time: 301 msec ;; SERVER: 45.58.32.165#53(45.58.32.165) ;; WHEN: Mon Nov 02 16:49:37 IST 2020 ;; MSG SIZE rcvd: 66
Ensuite, vous devrez vérifier votre serveur DNS pour la mise en cache. Vous pouvez le vérifier à l'aide de l'utilitaire de forage.
Tout d'abord, exécutez la commande suivante :
drill google.com | grep "Query time"
Vous devriez voir le résultat suivant :
;; Query time: 290 msec
Ensuite, exécutez à nouveau la commande pour vérifier si la mise en cache fonctionne ou non :
drill google.com | grep "Query time"
Vous devriez voir que le temps de requête diminue maintenant à 4 msec :
;; Query time: 4 msec
Conclusion
Toutes nos félicitations! vous avez installé et configuré avec succès Dnsmasq en tant que serveur DNS local et Ubuntu 20.04. J'espère que vous pourrez désormais l'implémenter facilement dans votre réseau local pour la résolution de noms.