Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
configuration_serveur_dns_pour_son_poste_de_travail [Le 24/08/2021, 14:57] sefran Domaine local du poste de travail[Domaine local du poste de travail] |
configuration_serveur_dns_pour_son_poste_de_travail [Le 10/05/2023, 11:47] (Version actuelle) sefran Ajout fin de ligne |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
Pour la résolution des noms, il se base sur les DNS déclarés dans la configuration réseau (/etc/resolv.conf) ou sur le fichier /etc/hosts. Ce qui est bien pratique pour configurer une petite zone lan : il suffit d’éditer le fichier /etc/hosts comme nous le ferions pour une seule machine. | Pour la résolution des noms, il se base sur les DNS déclarés dans la configuration réseau (/etc/resolv.conf) ou sur le fichier /etc/hosts. Ce qui est bien pratique pour configurer une petite zone lan : il suffit d’éditer le fichier /etc/hosts comme nous le ferions pour une seule machine. | ||
- | ===== Installer une interface réseau virtuelle pour le DNS ===== | + | ===== Installer une interface réseau virtuelle pour le serveur DNS ===== |
Éditer /etc/systemd/network/10-virtualeth0.netdev | Éditer /etc/systemd/network/10-virtualeth0.netdev | ||
Ligne 47: | Ligne 47: | ||
===== Configuration du client DHCP ===== | ===== Configuration du client DHCP ===== | ||
+ | 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. | ||
+ | |||
Vérifier les DNS présents : | Vérifier les DNS présents : | ||
<code bash> | <code bash> | ||
Ligne 65: | Ligne 67: | ||
Éditer /etc/dhcp/dhclient.conf | Éditer /etc/dhcp/dhclient.conf | ||
<file> | <file> | ||
- | prepend domaine-perso.fr 10.10.10.1 fd00:: | + | prepend domaine-perso.fr 10.10.10.1 fd00::; |
</file> | </file> | ||
Ligne 82: | Ligne 84: | ||
</code> | </code> | ||
===== Installation de Dnsmasq ===== | ===== Installation de Dnsmasq ===== | ||
+ | Installer les applications de base pour Dnsmasq et sa gestion | ||
+ | <code bash> | ||
+ | $ sudo apt install dnsmasq net-tools | ||
+ | </code> | ||
+ | |||
+ | ===== Configuration serveur DNS de Dnsmasq ===== | ||
+ | Éditer /etc/dnsmasq.conf | ||
+ | <file> | ||
+ | # Ne transmet pas les requêtes ne contenant pas un nom de domaine complet | ||
+ | domain-needed | ||
+ | # "no such domain" pour des adresses IP privées non référencées dans dnsmasq | ||
+ | bogus-priv | ||
+ | # Corrige du spam DNS Microsoft | ||
+ | filterwin2k | ||
+ | # Formate les requêtes DNS suivant l’interface réseau utilisée | ||
+ | localise-queries | ||
+ | |||
+ | # Domaine dns local | ||
+ | local = /domaine-perso.fr/ | ||
+ | # Interfaces DNS | ||
+ | interface = virtualeth0 | ||
+ | exept-interface = lo | ||
+ | exept-interface = enp0sxx | ||
+ | exept-interface = wlx803xxxxx | ||
+ | exept-interface = wlox | ||
+ | # Adresses écoutées | ||
+ | listen-address = 127.0.0.1 | ||
+ | listen-address = 10.10.10.1 | ||
+ | listen-address = fd00:: | ||
+ | # Toutes les interfaces réseau sont en mode serveur DNS c’est ce qui permet de démarrer le serveur DNS | ||
+ | bind-interfaces | ||
+ | # Ajoute le nom de domaine DNS aux entrées /etc/hosts | ||
+ | expand-hosts | ||
+ | # Non de domaine pour extensions "expand-hosts" | ||
+ | domain=domaine-perso.fr | ||
+ | # Taille du cache DNS | ||
+ | cache-size = 1000 | ||
+ | # Désactive le "cache négatif" sur réponses "no such domain" | ||
+ | no-negcache | ||
+ | </file> | ||
+ | |||
+ | Ajout du server DNS local à la liste des serveurs DNS de systemd-resolved. | ||
+ | Éditer /etc/systemd/resolved.conf | ||
+ | <file> | ||
+ | DNS=10.10.10.1 fd00:: | ||
+ | </file> | ||
+ | |||
+ | ===== Relance de Dnsmasq ===== | ||
+ | <code bash> | ||
+ | $ systemctl restart dnsmasq.service | ||
+ | $ systemctl enable dnsmasq.service | ||
+ | $ systemctl restart systemd-resolved.service | ||
+ | $ nmcli general reload | ||
+ | </code> | ||
+ | |||
+ | ===== Ouvrir avec le pare feu les ports DNS pour les rendre accessibles depuis le réseau lan ===== | ||
+ | Ouvrir le port DNS sur l'interface d'ip xxx.xxx.xxx.xxx avec UFW. Si UFW est activé, ouvrez le port DNS 53, UDP. | ||
+ | <code bash> | ||
+ | $ sudo ufw allow from xxx.xxx.0.0/16 to any port 53 proto udp | ||
+ | </code> | ||
+ | |||
+ | ===== Tests du serveur DNS ===== | ||
+ | Vérifier que le port 53 est utilisé par Dnsmasq | ||
+ | <code bash> | ||
+ | $ sudo lsof -i:53 | ||
+ | COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME | ||
+ | systemd-r 53916 systemd-resolve 12u IPv4 99537 0t0 UDP localhost:domain | ||
+ | systemd-r 53916 systemd-resolve 13u IPv4 99538 0t0 TCP localhost:domain (LISTEN) | ||
+ | dnsmasq 53732 dnsmasq 4u IPv4 95141 0t0 UDP MachineUbuntu:domain | ||
+ | dnsmasq 53732 dnsmasq 5u IPv4 95142 0t0 TCP MachineUbuntu:domain (LISTEN) | ||
+ | dnsmasq 53732 dnsmasq 6u IPv4 95151 0t0 UDP localhost:domain | ||
+ | dnsmasq 53732 dnsmasq 7u IPv4 95152 0t0 TCP localhost:domain (LISTEN) | ||
+ | dnsmasq 53732 dnsmasq 8u IPv6 95153 0t0 UDP MachineUbuntu:domain | ||
+ | dnsmasq 53732 dnsmasq 9u IPv6 95154 0t0 TCP MachineUbuntu:domain (LISTEN) | ||
+ | dnsmasq 53732 dnsmasq 10u IPv6 95155 0t0 UDP MachineUbuntu:domain | ||
+ | dnsmasq 53732 dnsmasq 11u IPv6 95156 0t0 TCP MachineUbuntu:domain (LISTEN) | ||
+ | </code> | ||
+ | |||
+ | Vérifier que Dnsmasq écoute les requettes DNS sur les bonnes interfaces | ||
+ | <code bash> | ||
+ | $ sudo netstat -alnp | grep -i :53 | ||
+ | tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 53916/systemd-resol | ||
+ | tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 53732/dnsmasq | ||
+ | tcp 0 0 10.10.10.1:53 0.0.0.0:* LISTEN 53732/dnsmasq | ||
+ | tcp6 0 0 fd00:::53 :::* LISTEN 53732/dnsmasq | ||
+ | tcp6 0 0 fe80::b817:faff:fe21:53 :::* LISTEN 53732/dnsmasq | ||
+ | udp 0 0 127.0.0.53:53 0.0.0.0:* 53916/systemd-resol | ||
+ | udp 0 0 127.0.0.1:53 0.0.0.0:* 53732/dnsmasq | ||
+ | udp 0 0 10.10.10.1:53 0.0.0.0:* 53732/dnsmasq | ||
+ | udp 0 0 0.0.0.0:5353 0.0.0.0:* 772/avahi-daemon: r | ||
+ | udp6 0 0 fd00:::53 :::* 53732/dnsmasq | ||
+ | udp6 0 0 fe80::b817:faff:fe21:53 :::* 53732/dnsmasq | ||
+ | udp6 0 0 :::5353 :::* 772/avahi-daemon: r | ||
+ | </code> | ||
+ | |||
+ | Vérifier que le poste de travail écoute les résolution DNS de Dnsmasq | ||
+ | <code bash> | ||
+ | $ 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 | ||
+ | </code> | ||
+ | |||
+ | Vérifier la résolution DNS | ||
+ | <code bash> | ||
+ | $ dig MachineUbuntu +noall +answer | ||
+ | MachineUbuntu. 0 IN A 127.0.1.1 | ||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig MachineUbuntu.domaine-perso.fr +noall +answer | ||
+ | MachineUbuntu.domaine-perso.fr. 0 IN A 127.0.1.1 | ||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig bidon.domaine-perso.fr +noall +answer | ||
+ | |||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig bidon +noall +answer | ||
+ | |||
+ | </code> | ||
+ | |||
+ | Éditer /etc/hosts pour définir les alias DNS | ||
+ | <file> | ||
+ | 127.0.0.1 localhost | ||
+ | 127.0.1.1 MachineUbuntu | ||
+ | … | ||
+ | # Alias DNS | ||
+ | 10.10.10.5 courriel | ||
+ | 10.10.10.10 serveur | ||
+ | 10.10.10.20 documentation | ||
+ | </file> | ||
+ | |||
+ | Vérifier la résolution DNS ([[configuration_serveur_dns_pour_son_poste_de_travail#relance_de_dnsmasq|relancer Dnsmasq si nécessaire]]) | ||
+ | <code bash> | ||
+ | $ dig courriel.domaine-perso.fr +noall +answer | ||
+ | courriel.domaine-perso.fr. 0 IN A 10.10.10.5 | ||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig courriel +noall +answer | ||
+ | courriel. 0 IN A 10.10.10.5 | ||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig serveur.domaine-perso.fr +noall +answer | ||
+ | serveur.domaine-perso.fr. 0 IN A 10.10.10.10 | ||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig serveur +noall +answer | ||
+ | serveur. 0 IN A 10.10.10.10 | ||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig documentation.domaine-perso.fr +noall +answer | ||
+ | documentation.domaine-perso.fr. 0 IN A 10.10.10.20 | ||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig documentation +noall +answer | ||
+ | documentation. 0 IN A 10.10.10.20 | ||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig bidon.domaine-perso.fr +noall +answer | ||
+ | |||
+ | </code> | ||
+ | |||
+ | <code bash> | ||
+ | $ dig bidon +noall +answer | ||
+ | |||
+ | </code> | ||
+ | |||
+ | Résolution DNS externe : | ||
+ | <code bash> | ||
+ | $ dig google.com +noall +answer | ||
+ | google.com. 16 IN A 216.58.223.110 | ||
+ | </code> | ||