Configurer un Serveur DNS Bind9 pour son poste de travail
Installer une interface réseau virtuelle
Avec systemd
Éditer /etc/systemd/network/10-virtualeth0.netdev
[NetDev] Name = virtualeth0 Kind = dummy
Éditer /etc/systemd/network/10-virtualeth0.network
[Match] Name = virtualeth0 [Network] Address = 10.10.10.1/24 Address = fd00::/8
Relancer le réseau systemd
utilisateur@MachineUbuntu:~$ sudo systemctl start systemd-networkd utilisateur@MachineUbuntu:~$ sudo systemctl enable systemd-networkd
Vérifier la présence de l'interface réseau virtuelle
utilisateur@MachineUbuntu:~$ ip a … 3: virtualeth0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000 link/ether 9a:3c:56:42:f5:c9 brd ff:ff:ff:ff:ff:ff inet 10.10.10.1/24 brd 10.10.10.255 scope global virtualeth0 valid_lft forever preferred_lft forever inet6 fd00::/8 scope global valid_lft forever preferred_lft forever …
Avec netplan
Configuration du client dhcp adaptée au DNS local
Pour pouvoir ajouter le serveur DNS local à /etc/resolv.conf, il faut renseigner l’option prepend qui permet l’ajout du serveur DNS local en début de la liste des serveurs DNS fournit automatiquement par DHCP. Éditer /etc/dhcp/dhclient.conf
prepend domaine-perso.fr 10.10.10.1 fd00::
Vérifier les DNS présents
utilisateur@MachineUbuntu:~$ nmcli dev show | grep DNS IP4.DNS[1]: yyy.yyy.yyy.yyy IP4.DNS[1]: yyy.yyy.yyy.yyy IP6.DNS[1]: yyyy:yyyy:yyyy::yyyy IP6.DNS[2]: yyyy:yyyy:yyyy::yyyy IP6.DNS[3]: yyyy:yyyy:yyyy::yyyy utilisateur@MachineUbuntu:~$ resolvectl dns Global: Link 2 (enp0sxx): Link 3 (wlx803xxxxx): yyyy:yyyy:yyyy::yyyy yyyy:yyyy:yyyy::yyyy yyyy:yyyy:yyyy::yyyy yyy.yyy.yyy.yyy Link 4 (wlo1): yyy.yyy.yyy.yyy Link 6 (virtualeth0):
Définir le domaine local de la machine Ubuntu
utilisateur@MachineUbuntu:~$ sudo hostnamectl set-hostname MachineUbuntu.domaine-perso.fr --static utilisateur@MachineUbuntu:~$ hostname -d domaine-perso.fr
Installer les applications de base
utilisateur@MachineUbuntu:~$ sudo apt install bind9 bind9utils bind9-dnsutils bind9-doc bind9-host net-tools
Tester l'état de Bind9
utilisateur@MachineUbuntu:~$ sudo systemctl status named
Activer le serveur Bind9 au redémarrage
utilisateur@MachineUbuntu:~$ sudo systemctl enable named
Configuration du DNS local
Éditer /etc/bind/named.conf.options
options { directory "/var/cache/bind"; // Pour des raisons de sécurité. // Cache la version du serveur DNS pour les clients. version "Pas pour les crackers"; listen-on { 127.0.0.1; 10.10.10.1; }; listen-on-v6 { ::1; fd00::; }; allow-query { 127.0.0.1; 10.10.10.1; ::1; fd00::; }; // Optionnel - Comportement par défaut de BIND en récursions. recursion yes; // Récursions autorisées seulement pour les interfaces clients allow-recursion { 127.0.0.1; 10.10.10.0/24; ::1; fd00::/8; }; dnssec-validation auto; // Activer la journalisation des requêtes DNS querylog yes; };
Vérifier la validité de la configuration
utilisateur@MachineUbuntu:~$ sudo named-checkconf
Redémarrer le serveur DNS si la configuration est OK.
utilisateur@MachineUbuntu:~$ sudo systemctl restart named
Ajout du server DNS local à la liste des serveurs DNS de systemd-resolved.
Éditer /etc/systemd/resolved.conf
DNS=10.10.10.1 fd00::
Relancer le réseau
utilisateur@MachineUbuntu:~$ sudo systemctl restart systemd-resolved utilisateur@MachineUbuntu:~$ nmcli general reload
Tests du serveur DNS
utilisateur@MachineUbuntu:~$ sudo rndc status version: BIND 9.16.8-Ubuntu (Stable Release) <id:539f9f0> (Pas pour les crackers) running on MachineUbuntu.domaine-perso.fr: Linux x86_64 5.11.0-31-generic #33-Ubuntu SMP Wed Aug 11 13:19:04 UTC 2021 boot time: Thu, 26 Aug 2021 06:13:19 GMT last configured: Thu, 26 Aug 2021 06:13:19 GMT configuration file: /etc/bind/named.conf CPUs found: 4 worker threads: 4 UDP listeners per interface: 4 number of zones: 102 (97 automatic) debug level: 0 xfers running: 0 xfers deferred: 0 soa queries in progress: 0 query logging is ON recursive clients: 0/900/1000 tcp clients: 0/150 TCP high-water: 0 server is up and running
Vérifier le fonctionnement DNS
Vérifier le fonctionnement de Bind9
Vérification de l'exécution de Bind9 sur le port 53
utilisateur@MachineUbuntu:~$ sudo lsof -i:53 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME named 5624 bind 37u IPv4 54315 0t0 UDP localhost:domain named 5624 bind 38u IPv4 54316 0t0 UDP localhost:domain named 5624 bind 39u IPv4 54317 0t0 UDP localhost:domain named 5624 bind 40u IPv4 54318 0t0 UDP localhost:domain named 5624 bind 42u IPv4 51987 0t0 TCP localhost:domain (LISTEN) named 5624 bind 43u IPv4 54319 0t0 UDP MachineUbuntu.domaine-perso.fr:domain named 5624 bind 44u IPv4 54320 0t0 UDP MachineUbuntu.domaine-perso.fr:domain named 5624 bind 45u IPv4 54321 0t0 UDP MachineUbuntu.domaine-perso.fr:domain named 5624 bind 46u IPv4 54322 0t0 UDP MachineUbuntu.domaine-perso.fr:domain named 5624 bind 47u IPv4 51988 0t0 TCP MachineUbuntu.domaine-perso.fr:domain (LISTEN) named 5624 bind 48u IPv6 54323 0t0 UDP ip6-localhost:domain named 5624 bind 49u IPv6 54324 0t0 UDP ip6-localhost:domain named 5624 bind 50u IPv6 54325 0t0 UDP ip6-localhost:domain named 5624 bind 51u IPv6 54326 0t0 UDP ip6-localhost:domain named 5624 bind 52u IPv6 51989 0t0 TCP ip6-localhost:domain (LISTEN) named 5624 bind 53u IPv6 54327 0t0 UDP MachineUbuntu.domaine-perso.fr:domain named 5624 bind 54u IPv6 54328 0t0 UDP MachineUbuntu.domaine-perso.fr:domain named 5624 bind 55u IPv6 54329 0t0 UDP MachineUbuntu.domaine-perso.fr:domain named 5624 bind 56u IPv6 54330 0t0 UDP MachineUbuntu.domaine-perso.fr:domain named 5624 bind 58u IPv6 54331 0t0 TCP MachineUbuntu.domaine-perso.fr:domain (LISTEN) systemd-r 5799 systemd-resolve 12u IPv4 52844 0t0 UDP localhost:domain systemd-r 5799 systemd-resolve 13u IPv4 52845 0t0 TCP localhost:domain (LISTEN)
Vérifier l’écoute réseau sur le port 53
utilisateur@MachineUbuntu:~$ sudo netstat -alnp | grep -i :53 tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 5799/systemd-resol tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 5624/named tcp 0 0 10.10.10.1:53 0.0.0.0:* LISTEN 5624/named tcp6 0 0 fd00:::53 :::* LISTEN 5624/named tcp6 0 0 ::1:53 :::* LISTEN 5624/named udp 0 0 127.0.0.53:53 0.0.0.0:* 5799/systemd-resol udp 0 0 127.0.0.1:53 0.0.0.0:* 5624/named udp 0 0 10.10.10.1:53 0.0.0.0:* 5624/named udp 0 0 0.0.0.0:5353 0.0.0.0:* 771/avahi-daemon: r udp6 0 0 fd00:::53 :::* 5624/named udp6 0 0 ::1:53 :::* 5624/named udp6 0 0 :::5353 :::* 771/avahi-daemon: r
Vérifier que le système Ubuntu écoute le serveur DNS
utilisateur@MachineUbuntu:~$ resolvectl dns Global: 10.10.10.1 fd00:: Link 2 (enp0sxx): yyyy:yyyy:yyyy::yyyy yyy.yyy.yyy.yyy Link 3 (virtualeth0): Link 4 (wlx803xxxxx): yyyy:yyyy:yyyy::yyyy yyyy:yyyy:yyyy::yyyy yyyy:yyyy:yyyy::yyyy yyy.yyy.yyy.yyy Link 5 (wlox): yyy.yyy.yyy.yyy
Tester la résolution DNS
Vérifier la résolution de nom locale
utilisateur@MachineUbuntu:~$ dig MachineUbuntu +noall +answer MachineUbuntu. 0 IN A 127.0.1.1
Vérifier la résolution de nom Bind9
utilisateur@MachineUbuntu:~$ dig MachineUbuntu.domaine-perso.fr +noall +answer MachineUbuntu.domaine-perso.fr. 0 IN A 10.10.10.1 MachineUbuntu.domaine-perso.fr. 0 IN A aaa.aaa.aaa.aaa MachineUbuntu.domaine-perso.fr. 0 IN A bbb.bbb.bbb.bbb …
Vérifier la non résolution de nom de Bind9
utilisateur@MachineUbuntu:~$ dig bidon +noall +answer utilisateur@MachineUbuntu:~$ dig bidon.domaine-perso.fr +noall +answer
Le pare feu
Ouvrir le port DNS sur UFW. si UFW est activé, ouvrez le port DNS 53, UDP.
utilisateur@MachineUbuntu:~$ sudo ufw allow from 192.168.0.0/16 to any port 53 proto udp
Définir une zone DNS locale
Configurer la zone locale
Éditer /etc/bind/named.conf.local pour définir la zone DNS
zone "domaine-perso.fr" { type master; file "/etc/bind/db.domaine-perso.fr"; }; zone "10.10.10.in-addr.arpa" { type master; file "/etc/bind/db.10.10.10"; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.f.ip6.arpa." { type master; file "/etc/bind/db.fd00"; };
Tester la configuration
utilisateur@MachineUbuntu:~$ sudo named-checkconf
Paramétrer la zone locale
Éditer /etc/bind/db.domaine-perso.fr pour définir les alias DNS
$TTL 15m @ IN SOA @ root ( 2021082512 ; n° série 1h ; intervalle de rafraîchissement esclave 15m ; intervalle de réessaie pour l’esclave 1w ; temps d’expiration de la copie esclave 1h ) ; temps de cache NXDOMAIN IN NS @ IN A 10.10.10.10 IN AAAA fd00::a IN MX 2 courriel ; domaine vers adresse IP serveur IN A 10.10.10.1 serveur IN AAAA fd00:: courriel IN A 10.10.10.2 courriel IN AAAA fd00::2 documentation IN A 10.10.10.3 documentation IN AAAA fd00::3 * IN A 10.10.10.10 * IN AAAA fd00::a
Éditer /etc/bind/db.10.10.10 pour définir les alias inverse DNS
$TTL 15m @ IN SOA serveur.domaine-perso.fr. root.domaine-perso.fr. ( 2021082512 ; n° série 1h ; intervalle de rafraîchissement esclave 15m ; intervalle de réessaie pour l’esclave 1w ; temps d’expiration de la copie esclave 1h ) ; temps de cache NXDOMAIN IN NS serveur.domaine-perso.fr. ; IP vers nom de domaine DNS 1 IN PTR serveur.domaine-perso.fr. 2 IN PTR courriel.domaine-perso.fr. 3 IN PTR documentation.domaine-perso.fr. 10 IN PTR domaine-perso.fr.
Éditer /etc/bind/db.fd00 pour définir les alias inverse DNS
$TTL 15m @ IN SOA serveur.domaine-perso.fr. root.domaine-perso.fr. ( 2021082512 ; n° série 1h ; intervalle de rafraîchissement esclave 15m ; intervalle de réessaie pour l’esclave 1w ; temps d’expiration de la copie esclave 1h ) ; temps de cache NXDOMAIN IN NS serveur.domaine-perso.fr. ; IPv6 vers nom de domaine DNS 0 IN PTR serveur.domaine-perso.fr. 2 IN PTR courriel.domaine-perso.fr. 3 IN PTR documentation.domaine-perso.fr. a IN PTR domaine-perso.fr.
Valider la configuration de la zone
Pour valider la configuration de la zone il faut relancer le seveur Bind9
utilisateur@MachineUbuntu:~$ sudo systemctl restart named
Tester la zone locale
Vérifier la résolution DNS :
utilisateur@MachineUbuntu:~$ dig ANY domaine-perso.fr +noall +answer domaine-perso.fr. 6444 IN SOA domaine-perso.fr. root.domaine-perso.fr. 2021082512 3600 900 604800 3600 domaine-perso.fr. 6444 IN NS domaine-perso.fr. domaine-perso.fr. 6444 IN A 10.10.10.10 domaine-perso.fr. 6444 IN AAAA fd00::a domaine-perso.fr. 6444 IN MX 2 courriel.domaine-perso.fr. utilisateur@MachineUbuntu:~$ dig ANY serveur.domaine-perso.fr +noall +answer serveur.domaine-perso.fr. 6444 IN A 10.10.10.1 serveur.domaine-perso.fr. 6444 IN AAAA fd00:: utilisateur@MachineUbuntu:~$ dig ANY courriel.domaine-perso.fr +noall +answer courriel.domaine-perso.fr. 6444 IN A 10.10.10.2 courriel.domaine-perso.fr. 6444 IN AAAA fd00::2 utilisateur@MachineUbuntu:~$ dig ANY documentation.domaine-perso.fr +noall +answer documentation.domaine-perso.fr. 6444 IN A 10.10.10.3 documentation.domaine-perso.fr. 6444 IN AAAA fd00::3 utilisateur@MachineUbuntu:~$ dig ANY bidon.domaine-perso.fr +noall +answer bidon.domaine-perso.fr. 6444 IN A 10.10.10.10 bidon.domaine-perso.fr. 6444 IN AAAA fd00::a Résolution DNS externe : utilisateur@MachineUbuntu:~$ dig google.com +noall +answer google.com. 16 IN A 216.58.223.110 google.com. 32 IN AAAA 2a00:…::200e …
Vérifier la résolution inverse : Vous pouvez utiliser la commande «host» ou «dig -x»
utilisateur@MachineUbuntu:~$ host 10.10.10.1 1.10.10.10.in-addr-arpa domain name pointer serveur.domaine-perso.fr. utilisateur@MachineUbuntu:~$ dig -x 10.10.10.1 +noall +answer 1.10.10.10.in-addr.arpa. 900 IN PTR serveur.domaine-perso.fr. utilisateur@MachineUbuntu:~$ dig -x fd00:: +noall +answer a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.f.ip6.arpa. 900 IN PTR serveur.domaine-perso.fr. utilisateur@MachineUbuntu:~$ dig -x 10.10.10.2 +noall +answer 1.10.10.10.in-addr.arpa. 900 IN PTR courriel.domaine-perso.fr. utilisateur@MachineUbuntu:~$ dig -x fd00::2 +noall +answer 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.f.ip6.arpa. 900 IN PTR courriel.domaine-perso.fr. utilisateur@MachineUbuntu:~$ dig -x 10.10.10.3 +noall +answer 1.10.10.10.in-addr.arpa. 900 IN PTR documentation.domaine-perso.fr. utilisateur@MachineUbuntu:~$ dig -x fd00::3 +noall +answer 3.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.f.ip6.arpa. 900 IN PTR documentation.domaine-perso.fr. utilisateur@MachineUbuntu:~$ dig -x 10.10.10.10 +noall +answer 1.10.10.10.in-addr.arpa. 900 IN PTR domaine-perso.fr. utilisateur@MachineUbuntu:~$ dig -x fd00::a +noall +answer a.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.d.f.ip6.arpa. 900 IN PTR domaine-perso.fr.