Configuration et administration du Domain Name Server (DNS)

Dans mon lieu de travail, nous utilisons Linux comme serveur DNS. Il remplit son rôle exceptionnellement bien. Cette section va vous parler de la configuration des tables DNS pour les services utilisant le paquetage BIND 8.x package qui est présent de façon standard dans la distribution Red Hat.

Note

Note: Red Hat versions 5.1 et précédentes utilisaient le paquetage BIND 4.x, qui se servait d'un format légèrement différent pour son fichier de configuration. BIND 8.x offre plus de fonctionnalité par rapport à BIND 4.x, et, comme 4.x n'est plus développé à ce jour, vous devriez penser à mettre à jour votre paquetage BIND à la dernière version. Installez simplement le paquetage BIND RPM (see the section called Using the Red Hat Package Manager (RPM) in Chapter 10 pour des précisions sur l'utilitaire RPM), puis convertissez votre fichier de configuration au nouveau format.

Heureusement, convertir votre fichier de configuration existant BIND 4.x pour qu'il soit compatible avec BIND 8.x est facile! Dans le répertoire de documentation fourni comme une partie de BIND (par exemple, ``/usr/doc/bind-8.1.2/'' pour la version 8.1.2 de BIND), il existe un fichier nommé ``named-bootconf.pl'', qui est un programme exécutable Perl. En supposant que vous avez Perl installé sur votre système, vous pouvez utiliser ce programme pour convertir votre fichier de configuration. Pour cela, tapez les commandes suivantes (en tant que root):

cd /usr/doc/bind-8.1.2
./named-bootconf.pl < /etc/named.boot > /etc/named.conf
mv /etc/named.boot /etc/named.boot-obsolete

Vous devez maintenant avoir un fichier ``/etc/named.conf'' qui devrait marcher avec BIND 8.x “haut la main”. Vos tables DNS existantes vont marcher comme avant avec la nouvelle version de BIND, car le format des tables reste le même.

La configuration des services DNS sous Linux met en oeuvre les étapes suivantes:

  1. Pour activer les services DNS, le fichier the ``/etc/host.conf'' doit ressembler à cela:

    # Lookup names via /etc/hosts first, then by DNS query
    order hosts, bind
    # We don't have machines with multiple addresses
    multi on
    # Check for IP address spoofing
    nospoof on
    # Warn us if someone attempts to spoof
    alert on

    La détection spoof supplémentaire ajoute un peu de performance aux DNS lookups (bien que négligeable), donc, si vous ne vous souciez pas trop de cela, vous voudrez peut-être désactiver les entrées “nospool” et “alert”.

  2. Configurez le fichier ``/etc/hosts'' si besoin est. En général, il n'y a pas grand chose à changer ici, mais pour une performance accrue, vous pouvez ajouter les hôtes auquels vous accédez souvent (comme les serveurs locaux) pour éviter d'exécuter des DNS lookups sur eux.

  3. Le fichier ``/etc/named.conf'' doit être configuré pour pointer sur vos tables DNS comme dans l'exemple ci-dessous.

    Note

    (Note: Les adresses IP indiquées ne sont que des exemples et doivent être remplacées par vos propres adresses!):

    options {
    	// DNS tables are located in the /var/named directory
    	directory "/var/named";
    
    	// Forward any unresolved requests to our ISP's name server
    	// (this is an example IP address only -- do not use!)
    	forwarders {
    		123.12.40.17;
    	};
    
    	/*
    	 * If there is a firewall between you and nameservers you want
    	 * to talk to, you might need to uncomment the query-source
    	 * directive below.  Previous versions of BIND always asked
    	 * questions using port 53, but BIND 8.1 uses an unprivileged
    	 * port by default.
    	 */
    	// query-source address * port 53;
    };
    
    // Enable caching and load root server info
    zone "named.root" {
    	type hint;
    	file "";
    };
    
    // All our DNS information is stored in /var/named/mydomain_name.db
    // (eg. if mydomain.name = foobar.com then use foobar_com.db)
    zone "mydomain.name" {
    	type master;
    	file "mydomain_name.db";
    	allow-transfer { 123.12.41.40; };
    };
    
    // Reverse lookups for 123.12.41.*, .42.*, .43.*, .44.* class C's
    // (these are example Class C's only -- do not use!)
    zone "12.123.IN-ADDR.ARPA" {
    	type master;
    	file "123_12.rev";
    	allow-transfer { 123.12.41.40; };
    };
    
    // Reverse lookups for 126.27.18.*, .19.*, .20.* class C's
    // (these are example Class C's only -- do not use!)
    zone "27.126.IN-ADDR.ARPA" {
    	type master;
    	file "126_27.rev";
    	allow-transfer { 123.12.41.40; };
    };

    Tip

    Truc: Faites attention aux options ci-dessus de allow-transfer qui restreignent les transferts de zone DNS vers une adresse IP donnée. Dans notre exemple, nous autorisons l'hôte à 123.12.41.40 (probablement un serveur DNS esclave dans notre domaine) à demander des transferts de zone. Si vous oubliez cette option, n'importe qui sur l'Internet sera capable de demander de tels transferts. Comme l'information fournie est souvent utilisée par des spammers et des IP spoofers, je vous recommande très fortement de restreindre les transferts de zone sauf à vos serveurs DNS esclaves ou d'utiliser l'adresse "boucle" ``127.0.0.1'' sinon.

  4. Vous pouvez maintenant placer vos tables DNS tables dans le répertoire ``var/named/'' configurées dans le fichier ``/etc/named.conf'' de l'étape trois. Configurer des fichiers de base de données DNS pour la première fois est une grande entreprise et est hors de la portée de ce document. Il existe plusieurs guides, en-ligne et sous forme imprimable, auquels vous pourrez vous réferrer. Néammoins, plusieurs exemples sont donnés ci-dessous.

    Exemples d'entrées dans le fichier forward lookup ``/var/named/mydomain_name.db'' :

    ; This is the Start of Authority (SOA) record.  Contains contact
    ; & other information about the name server.  The serial number
    ; must be changed whenever the file is updated (to inform secondary
    ; servers that zone information has changed).
        @ IN SOA mydomain.name.  postmaster.mydomain.name. (
    	19990811	; Serial number
    	3600		; 1 hour refresh
    	300		; 5 minutes retry
    	172800		; 2 days expiry
    	43200 )		; 12 hours minimum
    
    ; List the name servers in use.  Unresolved (entries in other zones)
    ; will go to our ISP's name server isp.domain.name.com
    	IN NS		mydomain.name.
    	IN NS		isp.domain.name.com.
    
    ; This is the mail-exchanger.  You can list more than one (if
    ; applicable), with the integer field indicating priority (lowest
    ; being a higher priority)
    	IN MX		mail.mydomain.name.
    
    ; Provides optional information on the machine type & operating system
    ; used for the server
    	IN HINFO	Pentium/350	LINUX
    
    ; A list of machine names & addresses
        spock.mydomain.name.    IN A    123.12.41.40   ; OpenVMS Alpha
        mail.mydomain.name.     IN A    123.12.41.41   ; Linux (main server)
        kirk.mydomain.name.     IN A    123.12.41.42   ; Windows NT (blech!)
    
    ; Including any in our other class C's
        twixel.mydomain.name.   IN A    126.27.18.161  ; Linux test machine
        foxone.mydomain.name.   IN A    126.27.18.162  ; Linux devel. kernel
    
    ; Alias (canonical) names
        gopher	IN CNAME	mail.mydomain.name.
        ftp		IN CNAME	mail.mydomain.name.
        www		IN CNAME	mail.mydomain.name.

    Sample entries in the ``/var/named/123_12.rev'' reverse lookup file:

    ; This is the Start of Authority record.  Same as in forward lookup table.
        @ IN SOA mydomain.name.  postmaster.mydomain.name. (
    	19990811	; Serial number
    	3600		; 1 hour refresh
    	300		; 5 minutes retry
    	172800		; 2 days expiry
    	43200 )		; 12 hours minimum
    
    ; Name servers listed as in forward lookup table
    	IN NS		mail.mydomain.name.
    	IN NS		isp.domain.name.com.
    
    ; A list of machine names & addresses, in reverse.  We are mapping
    ; more than one class C here, so we need to list the class B portion
    ; as well.
        40.41	IN PTR    spock.mydomain.name.
        41.41	IN PTR    mail.mydomain.name.
        42.41	IN PTR    kirk.mydomain.name.
    
    ; As you can see, we can map our other class C's as long as they are
    ; under the 123.12.* class B addresses
        24.42	IN PTR    tsingtao.mydomain.name.
        250.42	IN PTR    redstripe.mydomain.name.
        24.43	IN PTR    kirin.mydomain.name.
        66.44	IN PTR    sapporo.mydomain.name.
    
    ; No alias (canonical) names should be listed in the reverse lookup
    ; file (for obvious reasons).

    Any other reverse lookup files needed to map addresses in a different class B (such as 126.27.*) can be created, and would look much the same as the example reverse lookup file above.

  5. Make sure the named daemon is running. This daemon is usually started from the ``/etc/rc.d/init.d/named'' file upon system boot. You can also start and stop the daemon manually; type ``named start'' and ``named stop'', respectively.

  6. Whenever changes are made to the DNS tables, the DNS server should be restarted by typing ``/etc/rc.d/init.d/named restart''. You may then wish to test your changes by using a tool such as “nslookup” to query the machine you have added or changed.

More information on configuring DNS services can be found in the ``DNS-HOWTO'' guide at http://metalab.unc.edu/Linux/HOWTO/DNS-HOWTO-5.html.