# DHCP et DNS En solution de DNS, j'en connais deux : **Bind9** et **dnsmasq**. **Bind9** (appelé également **bind** ou **named**) est mondialement connu et utilisé, mais il demande une gymnastique intellectuelle assez avancée pour le maîtriser. Quant à **dnsmasq**, plus rapide de configuration, il permet également de configurer un service DHCP. Il a également l'avantage de s'appuyer sur le fichier `/etc/hosts` pour déclarer des adresses locales. Configuration testée sous **Debian** et **Raspbian**. ## - Configurer l'adresse IP du serveur Il faut fixer l'adresse IP de l'ordinateur. Il est impératif de ne pas être en DHCP pour cet ordinateur. Le fichier `/etc/dhcpcd.conf` doit être modifié afin de faire apparaître les options suivantes. Les lignes suivantes ont été décommentées (suppression du symbole #) et les paramètres modifiés. ```ini interface eth0 static ip_address=192.168.100.1/24 #static ip6_address=fd51:42f8:caae:d92e::ff/64 static routers=192.168.100.254 static domain_name_servers=127.0.0.1 9.9.9.9 1.1.1.1 ``` ## - Définir le nom du serveur L'ordinateur s'appellera **rpinas**. A adapter avec votre configuration sudo hostnamectl set-hostname rpinas ## - Installation ``` $ sudo apt install dnsmasq ``` ## - Configurer dnsmasq Décommenter la ligne suivante dans le fichier `/etc/dnsmasq.conf` avec les droits `root` : ```ini conf-dir=/etc/dnsmasq.d/,*.conf ``` Ajouter ça propre configuration dans un nouveau fichier de configuration avec les droits `root`. Par exemple `/etc/dnsmasq.d/acegrp.conf` : ```ini alias=8.8.8.8,192.168.100.1 listen-address=127.0.0.1,192.168.100.1 domain-needed bogus-priv filterwin2k localise-queries local=/lan/ domain=acegrp.lan expand-hosts no-negcache resolv-file=/etc/resolv.personal dhcp-authoritative dhcp-leasefile=/tmp/dhcp.leases # use /etc/ethers for static hosts; same format as --dhcp-host #read-ethers # activez le serveur DHCP: # Plage DHCP dhcp-range=192.168.100.1,192.168.100.254,1h # Netmask dhcp-option=1,255.255.255.0 # Route dhcp-option=3,192.168.100.254 # Serveur DNS dhcp-option=6,192.168.100.1 #IP reserved dhcp-host=00:24:1d:8b:b4:74,srv5,192.168.100.5,infinite # ancien serveur dhcp-host=b8:27:eb:2b:f9:6e,rpiapt001,192.168.100.3 # cache apt dhcp-host=00:22:4d:9d:47:03,dskcdc001,192.168.100.100,infinite # poste fixe Cédric dhcp-host=64:51:06:4e:b0:c3,dskosm001,192.168.100.101,infinite # poste fixe Osseam dhcp-host=00:21:5a:5f:a5:bd,dsktmp001,192.168.100.102,infinite # poste ? dhcp-host=b8:27:eb:94:a5:67,rpisalon,192.168.100.103,infinite # Raspberry Pi Salon dhcp-host=b8:27:eb:7b:d0:83,rpiampere,192.168.100.104,infinite # Raspberry Pi Ampere dhcp-host=80:fa:5b:49:c1:38,dskluc001,192.168.100.105,infinite # Poste fixe Lux dhcp-host=00:21:b7:6d:ae:65,lexmark41,192.168.100.106,infinite # Imprimante Lexmark41 dhcp-host=34:27:92:85:cb:78,fbxply001,192.168.100.107,infinite # freebox delta player dhcp-host=00:0f:3d:12:7e:a7,di602,192.168.100.254,infinite # routeur # LOG #log-dhcp #log-queries log-facility=/var/log/dnsmasq.log ``` Modifier le fichier `/etc/resolv.personal` ``` nameserver 1.1.1.1 nameserver 9.9.9.9 ``` Il faut redémarrer l'appareil : sudo reboot ## Gérer le service dnsmasq Démarrer le service : $ sudo systemctl restart dnsmasq Configurer le service en démarrage automatique $ sudo systemctl enable dnsmasq Vérifier le fonctionnement du service `dnsmasq` sudo systemctl enable dnsmasq ## - Alias DNS Le fichier `/etc/hosts` est lu par **DNSmasq** afin d'établir un référentiel `adresse IP / nom de domaine`. Il convient de déclarer son ordinateur tel quel et d'autres références : ``` 127.0.1.1 rpinas rpinas.acegrp.lan 192.168.100.3 rpiapt001.acegrp.lan pi.hole 192.168.100.254 di604.acegrp.lan ``` ## - DNS menteur Vous pouvez répondre une bêtise à la place de la réponse DNS mondial. Créer un fichier `/etc/dnsmasq.d/deny.conf` pour de fausses résolutions : ``` # bloque un site à éviter parmi tant d'autres address=/facebook.com/127.0.0.1 address=/double-click.net/127.0.0.1 address=/gstatic.com/127.0.0.1 address=/aticdn.net/127.0.0.1 address=/googletagmanager.com/127.0.0.1 address=/consensu.org/127.0.0.1 address=/google.com/127.0.0.1 address=/youtube.com/127.0.0.1 ``` Il faudra redémarrer dnsmasq : sudo systemctl restart dnsmasq # Bilbiographie - [Quad9, un résolveur DNS public, et avec sécurité](https:*www.bortzmeyer.org/quad9.html) - [Choisir son résolveur DNS, pas si facile](https:*www.bortzmeyer.org/choix-resolveur-dns.html) - [https:*www.bortzmeyer.org/google-dns.html](https:*www.bortzmeyer.org/google-dns.html) - - [Changer de serveur résolveur DNS facilement](https:*www.bortzmeyer.org/changer-dns.html) - [dnssec-trigger, un outil pour mettre DNSSEC à la disposition de M. Toutlemonde](https:*www.bortzmeyer.org/dnssec-trigger.html) - [RPZ, un moyen simple de configurer un résolveur DNS BIND pour qu'il mente](https:*www.bortzmeyer.org/rpz-faire-mentir-resolveur-dns.html) - [Utiliser un résolveur DNS public ?](https://www.bortzmeyer.org/dns-resolveurs-publics.html)