{"id":22348,"date":"2024-03-20T15:57:00","date_gmt":"2024-03-20T14:57:00","guid":{"rendered":"https:\/\/infoloup.no-ip.org\/?p=22348"},"modified":"2024-04-07T16:08:34","modified_gmt":"2024-04-07T14:08:34","slug":"dns-dynamique-debian11","status":"publish","type":"post","link":"https:\/\/infoloup.no-ip.org\/dns-dynamique-debian11\/","title":{"rendered":"DNS dynamique \/ Debian 11"},"content":{"rendered":"
<\/div>\n

M\u00e9mento 7.31 - Maj du DNS via DHCP<\/h2>\n\n\n\n

Migration du DNS statique install\u00e9 sur la VM srvlan<\/mark> en DNS dynamique via le service DHCP.<\/p>\n\n\n\n\n\n

1 - Pr\u00e9ambule<\/h3>\n\n\n\n

R\u00e9f\u00e9rence : DNS dynamique \/ Debian 10<\/a>. <\/p>\n\n\n\n

Toutes les VM doivent \u00eatre d\u00e9marr\u00e9es sauf srvdmz<\/mark>.<\/p>\n\n\n\n

1.1 - R\u00f4le du service DNS dynamique via DHCP<\/em><\/h4>\n\n\n\n

Modifier en temps r\u00e9el les fichiers de zones DNS via le service DHCP en utilisant les d\u00e9mons named de bind9 et dhcpd de isc-dhcp-server.<\/p>\n\n\n\n

2 - Configuration du DNS dynamique<\/h3>\n\n\n\n

2.1 - Configuration actuelle<\/em><\/h4>\n\n\n\n

Vous avez, lors de la configuration DHCP (m\u00e9mento 7.21<\/a>)<\/em>, supprim\u00e9 volontairement les enregistrements des VM debian11-vm*<\/mark> et conteneurs LXC ctn*<\/mark> dans les fichiers de zone DNS directe et inverse.<\/p>\n\n\n\n

La r\u00e9solution DNS interne est donc cass\u00e9e : <\/p>\n\n\n\n

[srvlan@srvlan:~$] ping debian11-vm1<\/pre>\n\n\n\n

Retour :<\/p>\n\n\n\n

ping: debian11-vm1: \u00c9chec temporaire<\/mark> dans la r\u00e9solution du nom<\/code><\/pre>\n\n\n\n
[srvlan@srvlan:~$] ping ctn2.intra.loupipfire.fr <\/pre>\n\n\n\n

Retour :<\/p>\n\n\n\n

ping: ctn2.intra.loupipfire.fr: Nom ou service inconnu<\/mark><\/code><\/pre>\n\n\n\n

Seule la r\u00e9solution DNS externe fonctionne :<\/p>\n\n\n\n

[srvlan@srvlan:~$] ping lemonde.fr<\/pre>\n\n\n\n

Retour :<\/p>\n\n\n\n

PING lemonde.fr<\/mark> (151.101.2.137) 56(84) bytes of d...\n64 bytes from 151.101.2.137 (151.101.2.137): icmp...\n64 bytes from 151.101.2.137 (151.101.2.137): icmp...\n--- lemonde.fr ping statistics ---\n2 packets transmitted, 2 received, 0% packet loss<\/mark>...\nrtt min\/avg\/max\/mdev = 15.730\/16.145\/16.560\/0.415 ms\n<\/code><\/pre>\n\n\n\n

2.2 - Cr\u00e9ation d'une cl\u00e9 secr\u00e8te TSIG<\/em><\/h4>\n\n\n\n

TSIG (Transaction Signature)<\/em> est un m\u00e9canisme permettant de s\u00e9curiser la communication avec un serveur DNS, ceci \u00e0 base d'une cl\u00e9 secr\u00e8te partag\u00e9e.<\/p>\n\n\n\n

Il peut \u00eatre utilis\u00e9 pour authentifier la source des requ\u00eates et r\u00e9ponses DNS \u00e9chang\u00e9es lors d'une MAJ dynamique des fichiers de zones DNS via DHCP.<\/p>\n\n\n\n

TSIG requiet, pour fonctionner correctement sur un r\u00e9seau, une bonne synchronisation du temps (voir addendum NTP<\/a> pour les plus curieux)<\/em>.<\/p>\n\n\n\n

Dans le cas pr\u00e9sent, vous pouvez laisser VirtualBox g\u00e9rer par d\u00e9faut cette synchronisation du temps pour l'ensemble du r\u00e9seau virtuel, \u00e0 vous de voir.<\/p>\n\n\n\n

Ceci dit, vous allez commencer par g\u00e9n\u00e9rer la cl\u00e9 secr\u00e8te partag\u00e9e de TSIG.<\/p>\n\n\n\n

Entrez pour cela les Cdes suivantes :<\/p>\n\n\n\n

[srvlan@srvlan:~$] cd \/etc\/bind\n[srvlan@srvlan:~$] su root\n\n[root@srvlan:~$] sudo tsig-keygen -a HMAC-SHA256 tsig.key  > tsig.key \n\n[root@srvlan:~$] chown bind:bind tsig.key\n[root@srvlan:~$] chmod 640 tsig.key\n[root@srvlan:~$] exit<\/pre>\n\n\n\n

La Cde tsig-keygen est fournie avec le paquet bind9.<\/p>\n\n\n\n

V\u00e9rifiez ensuite le contenu du fichier tsig.key cr\u00e9\u00e9 :<\/p>\n\n\n\n

[srvlan@srvlan:~$] sudo cat tsig.key<\/pre>\n\n\n\n

Retour :<\/p>\n\n\n\n

key \"tsig.key\" {\nalgorithm hmac-sha256;\nsecret \"z1iGvZ6fqgHtwlQVsltfMqvtBB24rxk2VpZ...<\/mark>\";\n};<\/code><\/pre>\n\n\n\n

L'\u00e9l\u00e9ment secret contient la valeur de la cl\u00e9 TSIG.<\/p>\n\n\n\n

2.3 - Configuration c\u00f4t\u00e9 serveur DNS<\/em> <\/h4>\n\n\n\n

Editez le fichier named.conf : <\/p>\n\n\n\n

[srvlan@srvlan:~$] sudo nano \/etc\/bind\/named.conf <\/pre>\n\n\n\n

et ajoutez les 3 lignes suivantes en fin de celui-ci :<\/p>\n\n\n\n

# D\u00e9claration de la cl\u00e9 TSIG qui sera utilis\u00e9e pour\n# la mise \u00e0 jour dynamique du DNS\ninclude \"\/etc\/bind\/tsig.key\"; <\/code><\/pre>\n\n\n\n

Pour \u00e9viter de rencontrer par la suite des probl\u00e8mes de permission d'\u00e9criture, d\u00e9placez les fichiers actuels de zone DNS vers le dossier \/var\/lib\/bind\/ comme suit :<\/p>\n\n\n\n

[srvlan@srvlan:~$] cd \/var\/lib\/bind\n[srvlan@srvlan:~$] sudo mv \/etc\/bind\/*.directe \/var\/lib\/bind\/\n[srvlan@srvlan:~$] sudo mv \/etc\/bind\/*.inverse \/var\/lib\/bind\/<\/pre>\n\n\n\n

Sous Debian, ce dossier est destin\u00e9 aux fichiers de zone et journaux mis \u00e0 jour dynamiquement.<\/p>\n\n\n\n

Cette configuration tient compte du profil de s\u00e9curit\u00e9 apparmor associ\u00e9 \u00e0 l'application bind et param\u00e9tr\u00e9 dans le fichier \/etc\/apparmor.d\/usr.sbin.named.<\/p>\n\n\n\n

Editez ensuite le fichier named.conf.local : <\/p>\n\n\n\n

[srvlan@srvlan:~$] sudo nano \/etc\/bind\/named.conf.local<\/pre>\n\n\n\n

puis modifiez la zone de recherche directe comme suit : <\/p>\n\n\n\n

file \"\/var\/lib\/bind\/db.intra.loupipfire.fr.directe\";\nallow-update { key \"tsig.key\"; };<\/code><\/pre>\n\n\n\n

et la zone de recherche inverse comme ci-dessous : <\/p>\n\n\n\n

file \"\/var\/lib\/bind\/db.intra.loupipfire.fr.inverse\";\nallow-update { key \"tsig.key\"; }; <\/code><\/pre>\n\n\n\n

Le param\u00e8tre allow-update autorise les MAJ DNS si authentifi\u00e9es avec la cl\u00e9 <\/em>TSIG tsig.key.<\/p>\n\n\n\n

2.4 - Configuration c\u00f4t\u00e9 serveur DHCP<\/em> <\/h4>\n\n\n\n

Le service DHCP doit utiliser la m\u00eame cl\u00e9 TSIG que le service DNS.<\/p>\n\n\n\n

Pour cela, copiez le fichier tsig.key dans \/etc\/dhcp\/ et g\u00e9rez ses permissions :<\/p>\n\n\n\n

[srvlan@srvlan:~$] cd \/etc\/bind\n[srvlan@srvlan:~$] sudo cp tsig.key \/etc\/dhcp\/\n\n[srvlan@srvlan:~$] cd \/etc\/dhcp\n[srvlan@srvlan:~$] sudo chown root:root tsig.key\n[srvlan@srvlan:~$] sudo chmod 640 tsig.key <\/pre>\n\n\n\n

Editez ensuite le fichier dhcpd.conf : <\/p>\n\n\n\n

[srvlan@srvlan:~$] sudo nano \/etc\/dhcp\/dhcpd.conf<\/pre>\n\n\n\n

et modifiez son contenu comme indiqu\u00e9 ci-dessous : <\/p>\n\n\n\n

### Fichier \/etc\/dhcpd\/dhcpd.conf\n\n## D\u00e9clarations optionnelles :\n# Domaine que les clients doivent utiliser pour r\u00e9soudre\n# les noms d'h\u00f4te via le DNS.\noption domain-name \"intra.loupipfire.fr\";\n\n# Liste des serveurs DNS disponibles pour les clients.\noption domain-name-servers srvlan.intra.loupipfire.fr;\n\n## Bail :\n# Dur\u00e9e du bail (lease time) si le client ne sp\u00e9cifie rien.\n# Ex : 1 jour = 86400 secondes. \ndefault-lease-time 86400;\n\n# Dur\u00e9e maxi du bail que peut demander le client.\n# Ex : 7 jours = 604800 secondes.\nmax-lease-time 604800;\n\n# Activation de la MAJ dynamique des zone DNS.\nddns-updates on;\n\n# M\u00e9thode utilis\u00e9e = interim pour une MAJ\n# sur un serveur DNS local.\nddns-update-style interim;\n \n# Ignorer les demandes de MAJ du serveur DNS\n# provenant des clients.\nignore client-updates;\n\n# Autoriser la MAJ des enregistrements DNS statiques.\nupdate-static-leases on;\n\n# Autoriser l'attribution d'une adresse IP aux clients inconnus.\nallow unknown-clients; \n\n\n# Serveur DHCP faisant autorit\u00e9 pour le sous-r\u00e9seau local.\nauthoritative;\n\n# Envoi des logs DHCP sur un fichier autre que\n# le fichier \/var\/log\/syslog.\nlog-facility local7;\n\n## Plage d'adresses IP et passerelle IP :\n# D\u00e9claration basique du sous-r\u00e9seau local \u00e0 traiter\n# incluant sous-r\u00e9seau et masque de sous-r\u00e9seau.\nsubnet 192.168.3.0 netmask 255.255.255.0 {\n\n# Etendue de la plage DHCP.\nrange 192.168.3.30 192.168.3.50;\n\n# Passerelle par d\u00e9faut.\noption routers srvlan.intra.loupipfire.fr;\n}\n\n## R\u00e9servation d'une IP fixe pour le conteneur LXC ctn1 :\n# Cde \"ip address\" sur ctn1 pour relever l'adresse MAC de eth0.\nhost ctn1 {\n       hardware ethernet 4a:49:43:49:79:bf; # Adresse MAC\n       fixed-address 192.168.3.20;\n}\n\n## MAJ dynamique de la zone DNS intra.loupipfire.fr  :\n# Informations sur le serveur DNS \u00e0 mettre \u00e0 jour.\ninclude \"\/etc\/dhcp\/tsig.key\";\n\nzone intra.loupipfire.fr. {\nprimary srvlan.intra.loupipfire.fr;\nkey tsig.key;\n}\n\nzone 3.168.192.in-addr.arpa. {\nprimary srvlan.intra.loupipfire.fr;\nkey tsig.key;\n} <\/code><\/pre>\n\n\n\n

Enfin, relancez dans l'ordre les services DNS et DHCP : <\/p>\n\n\n\n

[srvlan@srvlan:~$] sudo systemctl restart bind9\n[srvlan@srvlan:~$] sudo systemctl status bind9\n\n[srvlan@srvlan:~$] sudo systemctl restart isc-dhcp-server \n[srvlan@srvlan:~$] sudo systemctl status isc-dhcp-server<\/pre>\n\n\n\n

3 - Contr\u00f4le de bon fonctionnement<\/h3>\n\n\n\n

3.1 - Client debian11-vm1<\/em><\/h4>\n\n\n\n

Au pr\u00e9alable, ouvrez 2 terminaux sur le bureau de srvlan<\/mark>.<\/p>\n\n\n\n

Connectez-vous ensuite sur ceux-ci en tant qu'utilisateur root<\/mark> (Cde su root)<\/em>.<\/p>\n\n\n\n

Entrez sur le terminal 1 cette demande de tra\u00e7age :<\/p>\n\n\n\n

[root@srvlan:~#] tail -f \/var\/log\/dhcp\/isc-dhcp-server.log<\/pre>\n\n\n\n

et sur le terminal 2 celle ci-dessous :<\/p>\n\n\n\n

[root@srvlan:~#] tail -f \/var\/log\/syslog<\/pre>\n\n\n\n

Red\u00e9marrez maintenant la VM debian11-vm1<\/mark>.<\/p>\n\n\n\n

V\u00e9rifiez ensuite sur le terminal 1 pour le d\u00e9mon dhcpd :
- La pr\u00e9sence de la mention Added new forward map.
- La pr\u00e9sence de la mention Added reverse map.<\/p>\n\n\n\n

Feb 21 14:43:51 srvlan dhcpd<\/mark>: DHCPREQUEST for 192.168.3.32 from 08:00:27... (debian11-vm1) via enp0s8\n\nFeb 21 14:43:51 srvlan dhcpd: DHCPACK on 192.168.3.32 to 08:00:27... (debian11-vm1) via enp0s8\n\nFeb 21 14:43:51 srvlan dhcpd: Added new forward map<\/mark> from debian11-vm1.intra.loupipfire.fr to 192.168.3.32\n\nFeb 21 14:43:51 srvlan dhcpd: Added reverse map<\/mark> from 32.3.168.192.in-addr.arpa. to debian11-vm1.intr...<\/code><\/pre>\n\n\n\n

Puis sur le terminal 2 pour le d\u00e9mon named :
- L'approbation de la cl\u00e9 tsig.key.
- L'existence de 3 adding an RR de type A, TXT et PTR.<\/p>\n\n\n\n

Feb 21 14:43:51 srvlan named<\/mark>: client @0x7...24e8 192.168.3.1#6...\/key tsig.key<\/mark>: signer \"tsig.key\" approved<\/mark>\n\nFeb 21 14:43:51 srvlan named: client @0x7...24e8 192.168.3.1#6...\/key tsig.key: updating zone 'intra.loupipfire.fr\/IN': adding an RR<\/mark> at 'debian11-vm1.intra.loupipfire.fr' A<\/mark> 192.168.3.32\n\nFeb 21 14:43:51 srvlan named: client @0x7...24e8 192.168.3.1#6...\/key tsig.key: updating zone 'intra.loupipfire.fr\/IN': adding an RR<\/mark> at 'debian11-vm1.intra.loupipfire.fr' TXT<\/mark> \"3164da5294afbe...\"\n\nFeb 21 14:43:51 srvlan named: client @0x7...1a48 192.168.3.1#4...\/key tsig.key<\/mark>: signer \"tsig.key\" approved<\/mark>\n\nFeb 21 14:43:51 srvlan named: client @0x7...1a48 192.168.3.1#4...\/key tsig.key: updating zone '3.168.192.in-addr.arpa\/IN': deleting rrset at '32.3.168.192.in-addr.arpa' PTR\n\nFeb 21 14:43:51 srvlan named: client @0x7...1a48 192.168.3.1#4...\/key tsig.key: updating zone '3.168.192.in-addr.arpa\/IN': adding an RR<\/mark> at '32.3.168.192.in-addr.arpa' PTR<\/mark> debian11-vm1.intr...<\/code><\/pre>\n\n\n\n

Acc\u00e9dez ensuite au dossier \/var\/lib\/bind\/, attendez quelques minutes et v\u00e9rifiez dans le fichier DNS db.intra.loupipfire.fr.directe l'ajout automatique :
- d'enregistrements A et TXT pour debian11-vm1<\/mark>. <\/p>\n\n\n\n

$ORIGIN .\n$TTL 86400\t; 1 day\nintra.loupipfire.fr  IN SOA srvlan.intra.loup... (\n\t8          ; serial\n\t604800     ; refresh (1 week)\n\t84600      ; retry (23 hours)\n\t2419200    ; expire (4 weeks)\n\t604800     ; minimum (1 week)\n\t)\n                     NS\tsrvlan.intra.loupipfire.fr.\n$ORIGIN intra.loupipfire.fr.\n$TTL 3600\t; 1 hour\nctn1\t\t        A\t192.168.3.20\n\t\t\tTXT\t\"318b3ddc97...\"\nctn2\t\t\tA\t192.168.3.31\n\t\t\tTXT\t\"31eefe30c9...\"\ndebian11-vm1<\/mark>\t\tA<\/mark>\t192.168.3.32\n\t\t\tTXT<\/mark>\t\"3164da5294...\"\ndebian11-vm2\t\tA\t192.168.3.33\n\t\t\tTXT\t\"316e74b10f...\"\n$TTL 86400\t; 1 day\novs\t\t\tA\t192.168.3.15\nsrvlan\t\t\tA\t192.168.3.1<\/code><\/pre>\n\n\n\n

V\u00e9rifiez dans le fichier DNS db.intra.loupipfire.fr.inverse l'ajout pour debian11-vm1<\/mark> :
- d'un enregistrement PTR. <\/p>\n\n\n\n

$ORIGIN .\n$TTL 86400\t; 1 day\n3.168.192.in-addr.arpa IN SOA srvlan.intra.loup... (\n\t\t7          ; serial\n\t\t604800     ; refresh (1 week)\n\t\t86400      ; retry (1 day)\n\t\t2419200    ; expire (4 weeks)\n\t\t604800     ; minimum (1 week)\n\t\t)\n\t\t       NS srvlan.intra.loupipfire.fr.\n$ORIGIN 3.168.192.in-addr.arpa.\n1\tPTR\tsrvlan.intra.loupipfire.fr.\n15\tPTR\tovs.intra.loupipfire.fr.\n$TTL 3600\t; 1 hour\n20\tPTR\tctn1.intra.loupipfire.fr.\n31\tPTR\tctn2.intra.loupipfire.fr.\n32\tPTR<\/mark>\tdebian11-vm1<\/mark>.intra.loupipfire.fr.\n33\tPTR\tdebian11-vm2.intra.loupipfire.fr.<\/code><\/pre>\n\n\n\n

Le bail attribu\u00e9 a \u00e9t\u00e9 mis en cache dans le fichier \/var\/lib\/dhcp\/dhcpd.leases de la VM srvlan<\/mark>.<\/p>\n\n\n\n

Effectuez \u00e0 pr\u00e9sent des pings entre srvlan<\/mark> et debian11-vm1<\/mark> pour v\u00e9rifier que la r\u00e9solution DNS interne fonctionne de nouveau correctement.<\/p>\n\n\n\n

3.2 - Clients debian11-vm2, ovs, ctn1 et ctn2<\/em><\/h4>\n\n\n\n

Idem client debian11-vm1<\/mark>, rebootez chacun d'eux et v\u00e9rifiez la MAJ auto des fichiers de zone DNS ainsi que le fonctionnement correct de la r\u00e9solution DNS interne entre toutes les VM et conteneurs LXC de la zone LAN.<\/p>\n\n\n\n

4 - Bilan<\/h3>\n\n\n\n

Les \u00e9changes entre les serveurs DNS et DHCP, tous deux situ\u00e9s sur le m\u00eame h\u00f4te, sont maintenant s\u00e9curis\u00e9s par cl\u00e9 TSIG.<\/p>\n\n\n\n

Cette s\u00e9curit\u00e9 peut \u00e9videmment \u00eatre appliqu\u00e9e pour des serveurs distants l'un de l'autre.<\/p>\n\n\n

\n
\"Image<\/figure><\/div>\n\n\n


Voil\u00e0 une bonne chose de faite.
Le m\u00e9mento 8.11 vous attend pour la
mise en place d'un serveur Web PHP
MySQL sur la VM srvdmz.<\/p>\n\n\n\n

\n
M\u00e9mento 8.11<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

M\u00e9mento 7.31 … Idem Debian 10, configuration pour une mise \u00e0 jour dynamique des enregistrements du serveur DNS via DHCP, le tout s\u00e9curis\u00e9 par cl\u00e9 TSIG … <\/p>\n

Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":23708,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"none","_seopress_titles_title":"%%post_title%% %%sep%% %%sitetitle%%","_seopress_titles_desc":"Idem Debian 10, configuration pour une mise \u00e0 jour dynamique des enregistrements du serveur DNS via DHCP, le tout s\u00e9curis\u00e9 par cl\u00e9 TSIG","_seopress_robots_index":"","footnotes":""},"categories":[10],"tags":[],"class_list":["post-22348","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-services-dns-dhcp"],"_links":{"self":[{"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/posts\/22348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/comments?post=22348"}],"version-history":[{"count":0,"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/posts\/22348\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/media\/23708"}],"wp:attachment":[{"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/media?parent=22348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/categories?post=22348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infoloup.no-ip.org\/wp-json\/wp\/v2\/tags?post=22348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}