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.
1. 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.
- /etc/dhcpcd.conf
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
2. Définir le nom du serveur
L'ordinateur s'appellera rpinas. A adapter avec votre configuration
sudo hostnamectl set-hostname rpinas
3. Installation
$ sudo apt install dnsmasq
4. Configurer dnsmasq
Décommenter la ligne suivante dans le fichier /etc/dnsmasq.conf
avec les droits root
:
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
:
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
5. 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
6. 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