Bandeau

Domain Name Service

1 Introduction

Le service de résolution de noms d' hôtes DNS (Domain Name Services), permet d' adresser un hôte par un nom, plutôt que par une adresse IP. Quelle est la structure d' un nom d' hôte ?

		www.google.fr
		machine.domaine
	

Le nom de domaine identifie une organisation dans l' internet, comme, par exemple, yahoo.com, wanadoo.fr, eu.org. Chaque organisation dispose d' un ou plusieurs réseaux. Ces réseaux sont composés de noeuds, ces noeuds (postes, serveurs, routeurs, imprimantes) pouvant être adressés.

Par exemple, la commande "ping www.yahoo.fr", permet d' adresser la machine qui porte le nom d' hôte"www", dans le domaine (organisation) "yahoo.fr".

Quelle différence entre la résolution de noms d' hôtes avec un serveur DNS et les fichiers "hosts" ? Avec les fichiers "hosts", chaque machine dispose de sa propre base de données de noms. Sur des réseaux importants, cette base de données dupliquée n' est pas simple à maintenir.

Avec un service de résolution de nom, la base de données est localisée sur un serveur. Un client qui désire adresser un hôte regarde dans son cache local, s' il en connaît l' adresse. S' il ne la connaît pas il va interroger le serveur de nom. Tous les grands réseaux sous TCP/IP, et Internet fonctionnent (schématiquement) sur ce principe.

Avec un serveur DNS, un administrateur n' plus qu 'une seule base de données à maintenir. Il suffit qu' il indique sur chaque hôte, quelle est l' adresse de ce serveur. Ici il y a 2 cas de figures possibles :

Normalement un service DNS nécessite au minimum deux serveurs afin d' assurer un minimum de redondance. Les bases de données des services sont synchronisées. La configuration d' un serveur de nom secondaire sera expliquée. Nous verrons également en TP le fonctionnement de la réplication des bases de données bases d' enregistrements de ressources.

2 Présentation des concepts : notion de domaine, de zone et de délégation

Un "domaine" est un sous-arbre de l' espace de nommage. Par exemple ".com" est un domaine, il contient toute la partie hiérarchique inférieure de l' arbre sous jacente au noeud ".com".

Un domaine peut être organisé en sous domaines. ".google.com" est un sous domaine du domaine ".com". Un domaine peut être assimilé à une partie ou sous-partie de l' organisation de l' espace de nommage.

Domaine

Une "zone" est une organisation logique des domaines. Le rôle d' une zone est principalement de simplifier l' administration des domaines. Le domaine ".com" peut être découpé en plusieurs zones, z1.com, z2.com...zn.com. L' administration des zones sera déléguée afin de simplifier la gestion globale du domaine.

Zone

La délégation consiste à déléguer l' administration d' une zone (ou une sous-zone) aux administrateurs de cette zone.

Delegation

Attention à ces quelques remarques :

3 Le domaine in-addr.arpa

Le principe de la résolution de nom, consiste à affecter un nom d' hôte une adresse IP. On parle de résolution de nom directe. Le processus inverse doit pouvoir également être mis en oeuvre. On parle de résolution de nom inverse ou reverse. Le processus doit fournir, pour une adresse ip, le nom correspondant. Pour cela il y a une zone particulière, in-addr.arpa, qui permet la résolution inverse d' adresse IP.

In-addr.arpa

Par exemple, pour le réseau 192.168.1.0, on créera une zone inverse dans le domaine in-addr.arpa. La zone de recherche inverse dans le domaine deviendra : 1.168.192.in-addr.arpa. Cette zone devra répondre pour toutes les adresses déclarées dans la tranche 192.168.1.0 à 192.168.1.254.

On inscrira dans cette zone tous les noeuds du réseau pour lesquels on désire que la résolution inverse fonctionne. Un serveur de nom peut, pratiquement, fonctionner sans la définition de cette zone tant que le réseau n' est pas relié à l' internet. Si cela était le cas, il faudrait déclarer cette zone, sans quoi, des services comme la messagerie électronique, ne pourrait fonctionner correctement, notamment à causes des règles anti-spam. (Voir www.nic.fr)

4 Fichiers, structure et contenus

Sur linux nous allons utiliser deux types de fichiers :

  1. le fichier /etc/bind/named.conf, qui décrit la configuration générale du serveur dns
  2. les fichiers qui contiennent les enregistrements de ressources pour la zone dans /var/named.

Les enregistrements ont une structure et un rôle.

Les types d'enregistrements qui enrichissent une base de données DNS sont de plusieurs types, dont voici les principaux:

Ces enregistrements caractérisent des informations de type IN - INternet. Voir l' annexe pour avoir un fichier exemple.

Structure des enregistrements

Structure d' un enregistrement SOA : Chaque fichier commence par un enregistrement de type SOA.

		stage.org.	IN SOA ns1.stage.org. hostmaster.stage.org.
				20001210011 ; numéro de série
				10800 ; rafraîchissement
				3600 ; nouvel essai
				604800 ; Obsolète après une semaine
				86400 ) ; TTL minimal de 1 jour
	

Caractéristiques des différentes informations :

Enregistrement de type NS pour le domaine stage.org:

		stage.org. IN NS ns1.stage.org.
		stage.org. IN NS ns2.stage.org.
	

Enregistrements de type A : Nous devons décrire la correspondance Nom / Adresse

		ns1.stage.org. IN A 192.168.1.1
		ns2.stage.org. IN A 192.168.1.2
		localhost.stage.org. IN A 127.0.0.1
	

S' il y avait d' autres hôtes sur la zone, il faudrait les définir ici.

Enregistrements de type CNAME : Ce sont les alias (Canonical Name). Une requête du type http://www.stage.org sera adressée à ns1.stage.org, puisque www est un alias de ns1.

		ns1.stage.org. IN CNAME www.stage.org.
		ns2.stage.org. IN CNAME ftp.stage.org.
	

Enregistrement de type PTR : Il serviront à la résolution de nom inverse.

		1.1.168.192.in-addr.arpa. IN PTR ns1.stage.org.
		2.1.168.192.in-addr.arpa. IN PTR ns2.stage.org.
	

La délégation

La délégation consiste à donner l' administration d' une partie du domaine à une autre organisation. Il y a transfert de responsabilité pour l' administration d' une zone. Les serveurs de la zone auront autorité sur la zone et auront en charge la responsabilité de la résolution de nom sur la zone. Les serveurs ayant autorité sur le domaine auront des pointeurs vers les serveurs de noms ayant autorité sur chaque zone du domaine.

Serveur primaire et serveur secondaire

Le serveur maître (primaire) dispose d' un fichier d' information sur la zone. Le ou les serveurs esclaves (secondaires) obtiennent les informations à partir d' un serveur primaire ou d' un autre serveur esclave. Il y a transfert de zone. Les serveurs maîtres et esclaves ont autorité sur la zone.

Le cache

L' organisation d' internet est assez hiérarchique. Chaque domaine dispose de son propre serveur de nom. Chaque zone de niveau supérieur (edu, org, fr...) dispose également de serveurs de nom de niveau supérieur. Le service DNS installe une liste de serveurs de noms de niveaux supérieurs. Cette liste permet à votre serveur de résoudre les noms qui sont extérieurs à votre zone. Le serveur enrichit son cache avec tous les noms résolus. Si votre réseau réseau n' est pas relié à internet, vous n' avez pas besoin d' activer cette liste.

/etc/bind/db.root

Ce fichier est un peu particulier. Il est utilisé par le serveur de nom à l' initialisation de sa mémoire cache. Si vos serveurs sont raccordés à internet, vous pourrez utiliser une liste officielle des serveurs de la racine (ftp.rs.internic.net).

5 Installation d' un serveur DNS

Pour mettre en place le service de résolution de nom sur un serveur Linux, on va procéder successivement aux opérations suivantes :

Installer le package

La résolution de nom est réalisée par les produits du package bind. La version actuelle est le package bind-9.x. qui remplace les versions antérieures 4.x. Dans cette version, de nombreuses modifications ont été apportées surtout au niveau de la sécurité, mais également en ce qui concerne le service DNS dynamique, c'est à dire acceptant les inscriptions des clients DHCP. La compatibilité ascendante est respectée. Nous resterons sur une configuration simple.

On va utiliser "bind 9". Il faudra donc installer les fichiers bind-9.x et bind-utils-9.x. Ce deuxième package donne quelques outils comme host, dig...

L' installation a copié les fichiers. Sur une configuration simple vous allez avoir 5 fichiers à créer ou à modifier sur le serveur primaire :

Configurer les fichiers

Le fichier racine pour la configuration du serveur de nom est le fichier "/etc/named.conf". Ce fichier est lu au démarrage du service et donne la liste des fichiers qui définissent la base de données pour la zone. La distribution donne un script perl qui permet de transcrire un fichier named.boot (bind version 4) au format named.conf (BIND version 9). Pour générer named.conf à partir de named.boot (si vous utilisiez une ancienne version de bind, par exemple), vous pouvez utiliser le script Perl named-bootconf qui est dans /usr/doc/bind-9

Le fichier named.conf

Voici un exemple de fichier commenté pour le domaine fictif stage.org, d'adresse 192.168.1.0.

		# fichier named.conf pour le domaine stage.org
		# Indication du chemin où sont localisés les fichiers de la base de données
		options {
			directory "/var/named";
			forwarders { 		# Indiquer un serveur dns de niveau supérieur
				0.0.0.0;
			};
		auth-nxdomain no; 		# RFC1035
		};
		
		# pour le fichier de cache du serveur de nom
		zone "." in {
		type hint;
		file "db.root";
		};
		
		# pour la recherche directe dans le domaine, on utilise le fichier stage.org
		zone "stage.org" in {
		type master; 		# nous sommes serveur primaire de ce domaine
		file "stage.hosts";	# les correspondances nom, adresse IP
		};
		
		# pour la recherche de zone inverse (reverse) on utilise le fichier stage.rev
		zone "1.168.192.in-addr.arpa" in {
			type master; 		# serveur primaire de 1.168.192.in-addr.arpa
			 file "stage.rev";
		};
		
		# pour la résolution de nom sur localhost
		zone "local" in {
			type master; 		# nous sommes serveur de 127.0.0.1
			file "local.host"; # correspondances nom, adresse IP
		};
		
		# rappel : la machine locale porte toujours l'adresse « localhost » 127.0.0.1
		# résolution inverse sur cette zone
		# la description est dans local.host
		
		zone "0.0.127.in-addr.arpa" in {
			type master; 		# serveur primaire de 0.0.127.in-addr.arpa
			file "local.rev";
		};
	

Notez bien que les noms appliqués aux fichiers de ressources ne sont en rien imposés. Il s' agit d' une pure convention. En effet un serveur de nom peut prendre en charge plusieurs domaines, cela permet de structurer l' organisation des fichiers de ressources.

Notez également l' option"type master". Il s' agit d' un serveur primaire. Nous verrons comment déclarer un serveur secondaire.

Le fichier /var/named/stage.hosts

Le paramètre @, signifie qu' il s' agit du domaine "stage.org" (le nom tapé après le mot « zone » dans le fichier de configuration named.conf). Le paramètre "IN", signifie qu' il s' agit d' un enregistrement de type Internet. Notez la présence d' un point (.) après le nom des machines. Sans celui-ci, le nom serait « étendu ». Par exemple, ns1.stage.org (sans point) serait compris comme ns1.stage.org.stage.org (on rajoute le nom de domaine en l' absence du point terminal). Le point (.) terminal permet de signifier que le nom est pleinement qualifié.

NB : dans ces fichiers, les commentaires sont précédés d' un point-virgule.
enregistrement de type SOA, on déclare tous les paramètres ainsi que l' adresse du responsable administratif de la zone, ici : postmaster

		$TTL		3h
				@ IN SOA 	ns1.stage.org. postmaster.stage.org. (
				16 ;
				86400 ;
				3600 ;
				3600000 ;
				604800 ;)
		
				; enregistrement de type Name Server, on déclare le serveur de nom
				
				IN NS ns1.stage.org.
				
				; on déclare les autres noeuds pour la résolution de nom
				; Notez l' absence du point après les noms pour permettre
				; l' extension du nom de domaine.
	
				ns1	IN A 192.168.1.1
			
				; client
				
				cli1	IN A 192.168.1.2
				
				; on déclare les alias CNAME : messagerie, news, www, ftp
	
				mail		IN CNAME ns1
				news	IN CNAME ns1
				www		IN CNAME ns1
				ftp		IN CNAME ns1
	

/var/named/stage.rev

Ici il s'agit de la résolution de nom inverse de la zone stage.org.

		$TTL		3h
				@ IN SOA ns1.stage.org. postmaster.stage.org. (
				16 ;
				86400 ;
				3600 ;
				3600000 ;
				604800 ;)
		
				; enregistrement de type Name Server
		
				IN NS ns1.stage.org.
				
				; On déclare les noeuds dans le domaine 1.168.192.in-addr.arpa
				; Ici, on ne peut pas se passer du nom complet (fini par un point).
				; l' extension serait (exemple avec ns1) : 1.1.168.192.in-addr.arpa.
		
				1	IN PTR ns1.stage.org.
		
				; Client
	
				2	IN PTR cli1.stage.org.
		

/var/named/local.hosts

		$TTL		3h
				@ IN SOA ns1.stage.org. postmaster.stage.org. (
				16 ;
				86400 ;
				3600 ;
				3600000 ;
				604800 ;)
		
				; enregistrement de type Name Server
		
				IN NS ns1.stage.org.
		
				; On déclare le noeud dans le domaine local
		
				localhost IN 127.0.0.1
		

/var/named/local.rev

		$TTL		3h
				@ IN SOA ns1.stage.org. postmaster.stage.org. (
				16 ;
				86400 ;
				3600 ;
				3600000 ;
				604800 ;)
		
				; enregistrement de type Name Server
		
				IN NS ns1.stage.org.
				
				; On déclare les noeuds dans le domaine 0.0.127.in-addr.arpa
				; Normalement, il n' en a qu' un : 127.0.0.1 = localhost.
				; Noter le point terminal.

				1	IN PTR localhost.
	

Compléments pratiques

Démarrer ou arrêter le service le service

Le service (daemon) qui active la résolution de nom s' appelle"named", prononcer "naime dé".
Si vous voulez l' arrêter ou le redémarrer dynamiquement vous pouvez utiliser les commandes suivantes :

/etc/init.d/named stop
/etc/init.d/named start

Relancer le service serveur de cette façon peut parfois poser problème. En effet cette procédure régénère le cache du serveur. Le service prends également un nouveau "PID". Si vous voulez éviter cela, ce qui est généralement le cas, préférez la commande "kill -HUP 'PID de Named'". Vous trouverez le PID de named dans "/var/run".

Finaliser la configuration

Les fichiers de configuration sont créés. Il ne reste plus qu 'à tester. Il faut au préalable configurer le serveur pour qu' il utilise lui même le service DNS et redémarrer les services réseau. Relancez, ensuite le service réseau. Utilisez les commandes suivantes :

/etc/init.d/network stop
/etc/init.d/network start

Procédure de configuration du client

La description de la configuration de tous les clients possibles n' est pas détaillée. Vous trouverez ci-dessous des éléments pour un client windows 9x et pour un client Linux.

Windows

Configurer le client pour lui signifier quel est le serveur de nom qu' il doit consulter. Pour cela il faut aller dans :
panneau de configuration - réseau - tcp/ip - Onglet "Configuration DNS".
Vous allez pouvoir définir le nom d' hôte de la machine locale dans le réseau et le nom de domaine auquel appartient l' hôte. Définissez ensuite l' adresse IP du serveur de nom que vous voulez utiliser.

Avec Linux

Vous pouvez utiliser linuxconf ou bien modifier (en tant que « root ») le fi chier de configuration du « resolver » (/etc/resolv.conf).

		# Fichier /etc/resolv.conf
		
		search stage.org # Extension à rajouter à un nom d'hôte sans points
		nameserver 192.168.1.1 # Ip du DNS
	

Annexe : Mise à jour dynamique du dns

Modification des fichiers named.conf et dhcpd.conf

/etc/bind/named.conf

		# fichier named.conf pour le domaine stage.org
		# Indication du chemin où sont localisés les fichiers de la base de données
		options {
			directory "/var/named";
			forwarders { 			# Indiquer un serveur dns de niveau supérieur
			0.0.0.0;
			};
		auth-nxdomain no; 			# conform to RFC1035
		};
		# pour le fichier de cache du serveur de nom
		zone "." in {
			type hint;
		  	file "db.root";
		};
		# pour la recherche directe dans le domaine, serveur primaire, on utilise le fichier stage.org
		zone "stage.org" in {
		  	type master; 			# nous sommes serveur primaire de ce domaine
  			file "stage.hosts";		# zone stage.org
  			allow-update { 			# Authorise la mise à jour depuis l'hôte local
  				127.0.0.1;
  			};
		};
		# pour la recherche de zone inverse (reverse) on utilise le fichier stage.rev
		zone "1.168.192.in-addr.arpa" in {
  			type master; 			# zone stage.org reverse
  			file "stage.rev";
  			allow-update { 			# Authorise la mise à jour depuis l'hôte local
  			127.0.0.1;
  			}
		};
		# pour la résolution de nom sur localhost
		zone "local" in {
			type master; 
		  	file "local.host"; 
		};
		zone "0.0.127.in-addr.arpa" in {
			type master; 						
		  	file "local.rev";
		};
	

/etc/bind9/dhcp.conf

		ddns-update-style interim;	# Mode de mise à jour
		ddns-updates on;			# Autorise les maj du dns
		ignore client-updates;		# Refuse les maj client
		update-static-leases on;		# Maj des enregistrements statiques
		ddns-domainname "dnc";		# Domaine

		default-lease-time 600;
		max-lease-time 7200;

		option domain-name-servers 192.168.1.10;

		option subnet-mask 255.255.255.0;
		option routers 192.168.1.1;
		log-facility local7;

		subnet 192.168.1.0 netmask 255.255.255.0 {
			range 192.168.1.200 192.168.1.210;
	  		allow unknown-clients;
		}
		zone stage. {
			primary 127.0.0.1;
		}
		zone 1.168.192.in-addr.arpa. {
			primary 127.0.0.1;
		}
	
Télécharger dns au format OpenOffice ou pdf

© 2005/2017 - Pep - Pour m'envoyer un mail - Connecté en ipv4