Installer un serveur de noms de domaines DNS (Bind)



Logiciels

Bind

Internet Software Consortiumhttp://www.isc.org/products/BIND/
Bind 9.1.2 -- 4 mai 2001, 3232 ko (.tar.gz)
Bind 9.1.3rc2 -- 19 juin 2001, 3235 ko (.tar.gz)
Bind 9.2.0a2 -- 12 juin 2001, 4541 ko (.tar.gz)
BIND (Berkeley Internet Name Domain) is an implementation of the Domain Name System (DNS) protocols and provides an openly redistributable reference implementation of the major components of the Domain Name System, including:

* a Domain Name System server (named)
* a Domain Name System resolver library
* tools for verifying the proper operation of the DNS server The BIND DNS Server is used on the vast majority of name serving machines on the Internet, providing a robust and stable architecture on top of which an organization's naming architecture can be built. The resolver library included in the BIND distribution provides the standard APIs for translation between domain names and Internet addresses and is intended to be linked with applications requiring name service.

Installation

Compilez et installez bind
$ lynx ftp://ftp.isc.org/isc/bind9/9.1.2/bind-9.1.2.tar.gz
$ tar xvzf bind-9.1.2.tar.gz
$ cd bind-9.1.2
$ CFLAGS="-O2 -s" ./configure --with-libtool
$ make
$ make install
$ cd ..
$ rm -rf bind-9.1.2

Configuration

Voir Internet Software Consortium pour le logiciel Bind8

Fichiers principaux

named.conf
Normalement situé dans le répertoire /etc
// Deux sous-réseaus d'entreprises depuis lesquels nous autorisons les requêtes.
// acl "intranet" { 192.168.1.0/24; 192.168.3.0/24; };

options {
	directory "/var/named";		// Répertoire de travail
	/*
	 * Si il y a un pare-feu entre vous et les serveurs de noms avec
	 * lesquels vous souhaitez communiquer, vous avez besoin de
	 * décommenter la directive query-source ci-dessous.  Les
	 * précédentes versions de BIND émettaient toujours les requêtes
	 * en utilisant le port 53, mais BIND 8.1 utilise un port
	 * non-privilégié par défaut.
	 */
	// query-source address * port 53;
	// recursion no;		// Ne fournit pas de service récursif
	// allow-query { "intranet"; };
};

controls {
	inet 127.0.0.1 allow {"localhost";}  keys {"key";} ;
};

key "key" {
        algorithm "hmac-md5";
        secret "CE7ESEj1faNTtFPbaG0kJ0IeecEwHbZXuZgccJzLuBI=";
};

// Root server hints
zone "." {
	type hint;
	file "named.root";
};

// Fournit une résolution inverse pour l'adresse de bouclage 127.0.0.1
zone "0.0.127.in-addr.arpa" {
	type master;
	file "127.0.0.zone";
	notify no;
};

// Fournit une résolution inverse pour l'adresse de bouclage 127.0.0.1
zone "1.168.192.in-addr.arpa" {
	type master;
	file "192.168.1.zone";
	notify no;
};

// Nous sommes le serveur maître pour example.com
zone "example.com" {
	type master;
	file "example.com.zone";
	// Adresses IP des serveurs esclaves autorisés à transférer example.com
	allow-transfer {
		192.168.4.14;
		192.168.5.53;
	};
};

// Nous sommes un serveur esclave pour eng.example.com
zone "eng.example.com" {
	type slave;
	file "eng.example.com.bk";
	// IP addresses of eng.example.com server
	// Adresses IP du serveur eng.example.com
	masters { 192.168.4.12; };
};
rndc.conf
Normalement situé dans le répertoire /etc
/*
 * Copyright (C) 2000, 2001  Internet Software Consortium.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
 * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
 * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

/* $Id: rndc.conf,v 1.6.4.1 2001/01/09 22:32:57 bwelling Exp $ */

/*
 * Sample rndc configuration file.
 */

options {
        default-server  localhost;
        default-key     "key";
};

server localhost {
        key     "key";
};

key "key" {
        algorithm "hmac-md5";
        secret "CE7ESEj1faNTtFPbaG0kJ0IeecEwHbZXuZgccJzLuBI=";
};

Fichiers de zone

Les fichiers de zone se situe dans le répertoire définit par la directive directory du fichier de configuration named.conf.
named.root
Ce fichier contient la liste des serveurs racine. Il est indispensable si votre serveur DNS joue le rôle de serveur cache pour la résolution de domaines autres que ceux dont il a la charge.
La dernière version de ce fichier maintenu par l'InterNIC est disponible à ftp://rs.internic.net/domain/named.root
;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC registration services
;       under anonymous FTP as
;           file                /domain/named.root
;           on server           FTP.RS.INTERNIC.NET
;       -OR- under Gopher at    RS.INTERNIC.NET
;           under menu          InterNIC Registration Services (NSI)
;              submenu          InterNIC Registration Archives
;           file                named.root
;
;       last update:    Aug 22, 1997
;       related version of root zone:   1997082200
;
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
;
; formerly C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
;
; formerly TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
;
; formerly NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
;
; formerly NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
;
; formerly NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
;
; temporarily housed at ISI (IANA)
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
;
; housed in Japan, operated by WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
; End of File
Fichiers de zones des domaine racine, des domaines .arpa, .edu, .gov et de résolution inverse inaddr.
ftp://rs.internic.net/domain/
127.0.0.zone
@	IN	SOA	localhost.	root.localhost.
(
	1997022700	; Serial
	28800		; Refresh
	14400		; Retry
	3600000		; Expire
	86400		; Minimum
)
@	IN	NS	localhost.
1	IN	PTR	localhost.
192.168.1.zone
Toujours pensez à créer un fichier de résolution inverse. Beaucoup de logiciels ce servent de ce moyen pour authentifier les connections. Son absence se traduit par de plus long délais de connections.
example.com.zone
$ttl 38400
@		IN	SOA	pegase.redfoxcenter.org. hostmaster.redfoxcenter.org. (
			2001052501	; numéro de série
			10800		; rafraîchissement (3 heures)
			3600		; nouvel essai (1 heure)
			604800		; obsolescense (1 semaine)
			86400		; durée de vie minimale (1 jour)
)

; Responsible Person
@		IN	RP	hostmaster.redfoxcenter.org. cmerlet.redfoxcenter.org.
cmerlet		IN	TXT	"Christophe Merlet, +33 (0)5 59 82 80 55"

; NS RECORDS
@		IN	NS	pegase.redfoxcenter.org.
;@		IN	NS	ns3.fr.clara.net.
;@		IN	NS	ns4.fr.clara.net.

; MX RECORDS
@		IN	MX	0	pegase.redfoxcenter.org.
;@		IN	MX	100	mail2.fr.clara.net.

@		IN	A	192.168.1.1

; LOCation
@		IN	LOC	48 52 N 002 20 E 100m

localhost	IN	A	127.0.0.1

admin		IN	CNAME	www
ftp		IN	CNAME	www
pegase		IN	A	192.168.1.1
www		IN	A	192.168.1.2
*		IN	CNAME	www



Les informations de localisation peuvent être récupéré sur "Getty Thesaurus of Geographic Names" http://www.getty.edu/research/tools/vocabulary/tgn/index.html

Sécurité

La principale fonction d'un serveur DNS classique consiste à traduire des noms d'ordinateurs en adresses IP. Ces informations peuvent fournir juste assez de données à un pirate pour espionner un système cible. Le dilemne à propos de l'Internet réside dans le fait que les informations sur les adresses IP, associées à la résolution des noms de domaines, sont fondamentales pour la communication. La seule solution viable est de maintenir des serveurs DNS distincts pour la résolution des noms et des adresses IP externes et internes. Le serveur DNS externe ne doit être eccessible qu'aux requêtes sur les données publiques du réseau. Le système interne doit être protégé par un pare-feu et conserver toutes les informations sur les adresses IP de l'environnement sécurisé.

Administration

Scripts de démarrage

named.init
Normalement nommé /etc/init.d/named
#!/bin/sh
#
# named		This shell script takes care of starting and stopping
#		named (BIND DNS server).
#
# chkconfig:	345 55 45
# description:	named (BIND) is a Domain Name Server (DNS) that \
#		is used to resolve host names to IP addresses.
# probe:	true

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/sbin/named ] || exit 0
[ -f /etc/named.conf ] || exit 0
[ -f /etc/sysconfig/named ] || . /etc/sysconfig/named

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

start() {
	# Start daemons.
	echo -n "Starting named service: "
	if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then
		OPTIONS="${OPTIONS} -t ${ROOTDIR}"
	fi
	daemon named -u named ${OPTIONS}
	RETVAL=$?
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/named
	echo
	return $RETVAL
}
stop() {
	# Stop daemons.
	echo -n "Shutting down named service: "
	killproc named
	RETVAL=$?
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named
	echo
	return $RETVAL
}
restart() {
	stop
	start
}

case "$1" in
  start)
	start
        ;;
  stop)
        stop
        ;;
  restart)
	restart
	;;
  condrestart)
	[ -f /var/lock/subsys/named ] && restart
	;;
  reload)
	/usr/sbin/rndc reload
	RETVAL=$?
	;; 
  status)
	/usr/sbin/rndc status
	RETVAL=$?
	;;
  probe)
	# named knows how to reload intelligently; we don't want linuxconf
	# to offer to restart every time
	/usr/sbin/rndc reload >/dev/null 2>&1 || echo start
	RETVAL=$?
	;;
  *)
        echo "Usage: $0 {start|stop|restart|condrestart|reload|status}"
        exit 1
esac
exit $RETVAL
named.sysconfig
Normalement nommé /etc/sysconfig/named
# Actuellement, vous pouvez utiliser les options suivantes :
# ROOTDIR="/quelque/part"  --  cela exécutera named dans un environnement
#			chroot.  Vous devez définir l'environnement chroot
#			avant de faire cela.
# OPTIONS="n'importe" -- Ces options additionnelles seront passées à named
#                       au démarrage. N'ajoutez pas -t ici, utilisez ROOTDIR
#			à la place.

Journalisation

Rotation de journal
Bind enregistre toutes les requêtes qui lui sont adressés dans le journal /var/log/named.log
Ce journal doit être régulièrement initialisé afin d'éviter qu'il ne grossisse indéfiniment. On peut utiliser pour cela un logiciel nommé logrotate.
Voici un script Normalement nommé /etc/logrotate.d/named
/var/log/named.log {
	missingok
	postrotate
		/usr/bin/kill -HUP `cat /var/run/named/named.pid 2> /dev/null` 2> /dev/null || true
	endscript
	compress
}

Documentation

Pages de manuel


Christophe Merlet
redfox@redfoxcenter.org
©Tous droits réservés
21 juin 2001