{{tag>serveur réseau dns}} ====== 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: 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 ==== À faire ===== 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) (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.