Serveur DNS Bind Dynamique Linux/Ubuntu

Le but de cet article est de configurer son DNS bind pour le rendre dynamique... C'est à dire que tous les clients qui utiliserons par défaut ce Serveur DNS seront enregistrés automatiquement dans la base DNS...

Nous partirons du principe que le serveur DNS est dejà installé et fonctionnel, (voir mon article sur l'installation d'un serveur DNS).

Nous nous étions arrété, sur un DNS qui n'autorisait aucune mise à jour, C'est à dire qu'il resolvait les noms en fonctions de pointeurs que nous avions rajouté manuellement..

C'est correct dans un petit réseau, mais dans une structure ou de nouveaux postes se connectent, ou bien qu'il y ait un serveur DHCP pas forcement configuré avec des hotes à ip fixes ceci n'est pas viable.

En effet, pour un même poste il peut se voir attribuer une autre addresse IP une fois que son bail est écoulé, c'est pourquoi il est interessant qu'il s'enregiste dynamiquement dans le DNS afin qu'on puisse le contacter par son nom d'hote n'importe quand et peu importe son ip...

Il existe plusieurs moyens de faire cela... En général soit le client s'enregiste directement dans le DNS soit c'est le serveur DHCP qui vient indiquer au dns l'ip qu'il vient d'attrivuer et à quel nom d'hote...

C'est cette deuxième solution que j'ai mis en oeuvre.

Commencons par reprendre notre fichier de configuration du DHCP

vi /etc/dhcp3/dhcpd.conf

on va alors rajouter quelques lignes...

#Mon Serveur DHCP #Mon domaine option domain-name "appart.lan"; ##Mise à jour des DNS en test ddns-domainname "appart.lan"; #Méthode de mise à jour du DNS ddns-update-style interim; #Mise à jour autorisée ddns-updates on; #ici on force la maj par le dhcp et non par le client ignore client-updates; #on force la maj des ipfixes update-static-leases on;__ #Les serveurs DNS option domain-name-servers 192.168.1.101, 212.27.53.252; #Le serveur Wins option netbios-name-servers 192.168.1.101; #Mon routeur passerelle #option routers 192.168.1.254; #Le bail default-lease-time 21600; #Les sous réseaux #Le sous reseau 192.168.1.0 subnet 192.168.1.0 netmask 255.255.255.0 {  range 192.168.1.110 192.168.1.115; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; } #le sous reseau 192.168.2.0 subnet 192.168.2.0 netmask 255.255.255.0 {  range 192.168.2.110 192.168.2.115; option subnet-mask 255.255.255.0; option broadcast-address 192.168.2.255; option routers 192.168.2.100; } #Le sous reseau 192.168.3.0 subnet 192.168.3.0 netmask 255.255.255.0 {  range 192.168.3.1 192.168.3.2; option subnet-mask 255.255.255.0; option broadcast-address 192.168.3.255; option routers 192.168.3.100; } #Configuration des IP fixes #Mon PC B@rtounet host Bartounet  { hardware ethernet 00:08:54:37:8b:3f; fixed-address 192.168.1.100; } #Le portable host Laptop { hardware ethernet 00:17:31:FA:68:7F; fixed-address 192.168.1.105; } #PC de Pascaline host Pascaline { hardware ethernet 00:e0:4d:0f:37:ef; fixed-address 192.168.1.102; } #PC de Salon host PCSALON { hardware ethernet 00:0f:ea:84:4a:c8; fixed-address 192.168.1.103; } #Les zones gérées zone appart.lan. { 	primary 127.0.0.1; 	} zone 1.168.192.in-addr.arpa. { 	primary 127.0.0.1; 	} zone 2.168.192.in-addr.arpa. { 	primary 127.0.0.1; 	} 

Mon fichier est assez bien commenté pour qu'on puisse comprendre tous les rajouts

Pour plus de sureté on ajoute aussi en fin de fichiers les zones que le dhcp doit gerer.

Nous en avons fini pour le dhcp.

Passons maintenant au DNS

sudo vi /etc/bind/named.conf

Mon fichiers est alors :

// This is the primary configuration file for the BIND DNS server named. // // Please read /usr/share/doc/bind9/README.Debian.gz for information on the // structure of BIND configuration files in Debian, *BEFORE* you customize // this configuration file. // // If you are just adding zones, please do that in /etc/bind/named.conf.local include "/etc/bind/named.conf.options"; // prime the server with knowledge of the root servers zone "." { 	type hint; 	file "/etc/bind/db.root"; }; // be authoritative for the localhost forward and reverse zones, and for // broadcast zones as per RFC 1912 zone "localhost" { 	type master; 	file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { 	type master; 	file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { 	type master; 	file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { 	type master; 	file "/etc/bind/db.255"; }; zone "appart.lan" {         type master;         file "/etc/bind/db.appart.lan"; 	allow-update { 		127.0.0.1; 		}; }; zone "1.168.192.in-addr.arpa" {         type master;         file "/etc/bind/db.appart.lan.inv"; 	allow-update { 		127.0.0.1; 		}; }; zone "2.168.192.in-addr.arpa" {         type master;         file "/etc/bind/db.appart.lan2.inv"; 	allow-update { 		127.0.0.1; 		}; }; // zone "com" { type delegation-only; }; // zone "net" { type delegation-only; }; // From the release notes: //  Because many of our users are uncomfortable receiving undelegated answers //  from root or top level domains, other than a few for whom that behaviour //  has been trusted and expected for quite some length of time, we have now //  introduced the "root-delegations-only" feature which applies delegation-only //  logic to all top level domains, and to the root domain.  An exception list //  should be specified, including "MUSEUM" and "DE", and any other top level //  domains from whom undelegated responses are expected and trusted. // root-delegation-only exclude { "DE"; "MUSEUM"; }; include "/etc/bind/named.conf.local";

Ici c'est assez simple, on a simplement rajouter qu'on acceptait les mise à jours dynamique pour chaque zone.

allow-update { 		127.0.0.1; 		};

Si vous aviez des pointeurs manuels creé dans vos fichiers db.* supprimez les, car la mise à jour dynamique va les creer tout seul.

Relancez les différents services et ca doit marcher...

Su vous avez des clients dhcp linux, il peuvent poser problême, car par défaut il n'envoient pas leur nom Netbios lors de l'attribution d'adresse comme le font les clients Windows.

C'est pourquoi il faut rajouter dans votre fichiers /etc/dhclient.conf la ligne

send host-name "lenomdelamachine" ;

Agent de relais DHCP

Le but de ce billet est d'installer un agent de relais DHCP sur un routeur Linux/Ubuntu

Vous avez configuré votre serveur DHCP, pour qu'il fournisse des adresses IP à tous votre réseau, et vous avez même été plus loin , puisque votre DHCP gère même plusieurs sous réseaux...

Par exemple 192.168.1.0/24 et 192.168.2.0/24

votre DHCP est situé sur le sous réseau 192.168.1.0/24 et attribue très bien les adresses à tous les postes de son sous réseau.

Mais le problême, c'est que le sous réseau 192.168.2.0/24 est situé derrière un routeur. (un routeur Linux ... Ouf on a de la chance ;-) )

On remarque alors que ce sous réseau ne se fait pas attribuer d'addresse IP par notre serveur.

Que se passe t'il ??

c'est pourtant Simple ;-)

la base d'une requete DHCP est le suivant:

1/ Lorsque le client DHCP démarre, il n'a aucune connaissance du réseau, du moins, en principe. Il envoie donc une trame "DHCPDISCOVER", destinée à trouver un serveur DHCP. Cette trame est un "broadcast", donc envoyé à l'adresse 255.255.255.255. N'ayant pas encore d'adresse IP, il adopte provisoirement l'adresse 0.0.0.0. Comme ce n'est pas avec cette adresse que le DHCP va l'identifier, il fournit aussi sa "MAC Address".

 

2/ Le, ou les serveurs DHCP du réseau qui vont recevoir cette trame vont se sentir concernés et répondre par un "DHCPOFFER". Cette trame contient une proposition de bail et la "MAC Address" du client, avec également l'adresse IP du serveur. Tous les DHCP répondent et le client normalement accepte la première réponse venue.

 

3/ Le client répond alors par un DHCPREQUEST à tous les serveurs (donc toujours en "Broadcast") pour indiquer quelle offre il accepte.

4/ Le serveur DHCP Concerné répond définitivement par un DHCPACK qui constitue une confirmation du bail. L'adresse du client est alors marquée comme utilisée et ne sera plus proposée à un autre client pour toute la durée du bail.

(cf : Le site de Caleca )

Une requete DHCP est donc un broadcast : et comme vous le savez tous, les routeurs bloquent les broadcast, afin d'isoler les sous réseau en domaine de broadcast.

Donc forcement notre requete DHCP est bloquée et éliminée par notre routeur.

Heureusement il existe une solution :

Installer un service relai DHCP.

Sous Linux c'est dhcp-relay

sudo apt-get install dhcp3-relay

Le script d'installation vous demande alors quel serveur dhcp vous voulez écouter... Mettez ici l'IP de votre serveur.

Le script vous demande sur quelles interfaces ecouter, Ne mettez rien, et il écoutera sur toutes les interfaces.

Vous pouvez de toute facon modifer ces options en éditant le fichier /etc/default/dhcp3-relay

 # Defaults for dhcp3-relay initscript # sourced by /etc/init.d/dhcp3-relay # installed at /etc/default/dhcp3-relay by the maintainer scripts # # This is a POSIX shell fragment # # What servers should the DHCP relay forward requests to? SERVERS="192.168.1.101" # On what interfaces should the DHCP relay (dhrelay) serve DHCP requests? INTERFACES="eth0 eth1" # Additional options that are passed to the DHCP relay daemon? OPTIONS=""

Voila à présent votre routeur va écouter les requetes dhcp et les rediriger vers les bonnes interfaces... autrement dit toutes puisque c'est un broadcast ;-)

«précédente page 32 sur 34 suivante »