Compilation Installation et Configuration Bind9
Voila un article qui ne vous servira pas tout les jours !
Parce qu'on ne monte pas un serveur Dns tous les 4 matins...
Mais ça peu servir
Tout d'abord télécharger la dernière version de bind9 :
Site ici https://www.isc.org/download
La 9.6.1_P3 lors de la rédaction de ce billet.
cd /opt/SOURCES wget http://ftp.isc.org/isc/bind9/9.6.1-P3/bind-9.6.1-P3.tar.gz
Dés-archivez le :
tar xvzf bind-9.6.1-P3.tar.gz cd bind-9.6.1-P3 mkdir -p /opt/bind961P3
Pré requis :
Vérifiez bien votre version de Openssl si vous comptez utiliser ssl car il y a eu pas mal de failles et autres farfelades. Il vous faudra la version dev d'Openssl.
Compilation :
./configure --help | more ./configure --prefix=/opt/bind961P3 --enable-openssl-version-check --enable-largefile --with-openssl --disable-openssl-version-check make make install
Configuration ou Migration :
cd /opt/ ln -s bind961P3 bind9 cd bind9/etc
Création de l'utilisateur bind9 :
useradd -s /sbin/nologin -d /opt/bind9/var/cache/bind9
Et le tour est joué !
Création de fichier de conf, named.conf pour commencer :
Si c'est votre première installation il vous faudra créer tous les fichiers de configuration :
cd /opt/bind9/etc/ vi named.conf
et copiez y ceci :
// 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 "/opt/bind9/etc/named.conf.options"; // prime the server with knowledge of the root servers zone "." { type hint; file "/opt/bind9/etc/db.root"; }; // be authoritative for the localhost forward and reverse zones, and for // broadcast zones as per RFC 1912 zone "localhost" { type master; file "/opt/bind9/etc/db.local"; }; zone "127.in-addr.arpa" { type master; file "/opt/bind9/etc/db.127"; }; zone "0.in-addr.arpa" { type master; file "/opt/bind9/etc/db.0"; }; zone "255.in-addr.arpa" { type master; file "/opt/bind9/etc/db.255"; }; // 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 "/opt/bind9/etc/named.conf.local"; zone "domain1.fr" { type master; notify yes; file "/opt/bind9/etc/db.domain1.fr"; forwarders{}; }; zone "domain2.fr" { type master; notify yes; file "/opt/bind9/etc/db.domain2.fr"; forwarders{}; }; zone "92.123.xx.in-addr.arpa" { type master; file "/opt/bind9/etc/db.domain1.fr.inv"; forwarders{}; };
A modifier à votre sauce biensur.
Fichier d'init pour bind9 :
Un petit script de contrôle ça peut être intéressant :
vi /etc/init.d/bind9
et copiez y ceci :
#!/bin/bash # chkconfig: 2345 13 87 # description: Dovecot POP/IMAP server. # source function library . /etc/rc.d/init.d/functions prog="named" case "$1" in start) echo -n $"Starting $prog: " /opt/bind9/sbin/named -u bind9 && success || failure echo ;; stop) echo -n $"Stopping $prog: " killproc /opt/bind9/sbin/named echo ;; restart) $0 stop sleep 1 $0 start ;; reload) echo -n $"Reloading $prog: " /opt/bind9/sbin/rndc -c /opt/bind9/etc/rndc.conf reload > /dev/null && success || failure echo ;; status) pidof named ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac # Fin $rc_base/init.d/bind
il est biensur à adapter à votre installation.
Si vous en avez un mieux n'hésitez pas à le proposer
Lancement et test :
Faite un ptit tail -f sur les log de votre bind9 et lancez le.
tail -f /var/log/named/named.log ou tail -f /var/log/messages
Pour lancer bind9 :
service bind9 start ou /opt/bind9/sbin/named -u user-bind
Problème de création de fichier dans var :
Vous rencontrerez sûrement ce souci :
/opt/bind9/etc/named.conf.options:2: change directory to '/opt/bind9/var/cache/bind' failed: file not found
Solution...quelques fichiers à créer et quelques droits à mettre.
cd /opt/bind9/var/ mkdir cache cd cache mkdir bind cd /opt/bind9/var/run mkdir named cd /opt/bind9/var chown -R user-bind: *
Création du fichier d'option :
cd /opt/bind9/etc/ vi named.conf.options
avec comme contenu :
options { directory "/opt/bind9/var/cache/bind"; // cacher sa version de bind9 version "L'Administrateur vous regarde..."; // 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 and later use an unprivileged // port by default. // query-source address * port 53; // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // serveurs du fai pour requetes externes forward first; forwarders { 213.186.33.199; }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; // By default, name servers should only perform recursive domain // lookups for their direct clients. If recursion is left open // to the entire Internet, your name server could be used to // perform distributed denial of service attacks against other // innocent computers. For more information on DDoS recursion: // http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-0987 recursion yes; allow-recursion { localhost; 127.0.0.1; 90.11.175.142; 89.25.28.21; 12.6.0.1; }; allow-query-cache { localhost; 127.0.0.1; 90.11.175.142; 89.25.28.21; 12.6.0.1; }; dnssec-enable yes; additional-from-cache yes; ///si vous avez un ou plusieurs serveurs secondaire allow-transfer { 12.6.0.1; 89.25.28.21; 213.186.33.199; }; zone-statistics yes; statistics-file "/opt/bind9/etc/named.stats"; // If you have DNS clients on other subnets outside of your // server's "localnets", you can explicitly add their networks // without opening up your server to the Internet at large: // allow-recursion { localnets; 192.168.0.0/24; }; // If your name server is only listening on 127.0.0.1, consider: // allow-recursion { 127.0.0.1; }; };
Créer un fichier zone :
Exemple avec le domaine principal : domaine.fr
Créer le fichier db.domaine.fr de votre domaine principal.
$ORIGIN domain.fr. $TTL 3600 @ IN SOA srvbind9.domaine.fr. root.domaine.fr. ( 2010050501 ; Serial 3600 ; Refresh (1 heure) 900 ; Retry (15 minutes) 1209600 ; Expire (2 weeks) 43200 ; Minimum cache (12 heures) ) IN NS srvbind9.domaine.fr. srvbind9 A 91.12.15.42 mail2 A 89.25.28.21 mail A 91.12.15.42 dellix A 82.68.24.90 ;** Les lignes suivantes sont des alias entre des noms et des autres noms ;mail CNAME srvbind9 ;**www CNAME zalix ;**webmail CNAME zalix ;**ssh CNAME zalix @ A 91.12.15.142 ;** ENREGISTREMENTS "MX" @ IN MX 10 mail.domaine.fr. @ IN MX 20 mail2.domaine.fr. domaine.fr. TXT "v=spf1 mx ?all"
Création de la zone inverse :
$TTL 604800 @ IN SOA srvbind9.domaine.fr. root.domaine.fr. ( 2008102801 604800 86400 2419200 604800 ) NS srvbind9.domaine.fr. NS ns2.domaine.fr. 42 PTR srvbind9.domaine.fr. .
Fichiers standard de configuration :
Toujours dans /opt/bind9/etc/
vi db.0 avec dedans : cat db.0 ; ; BIND reverse data file for broadcast zone ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost.
vi db.127 avec dedans : ; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. 1.0.0 IN PTR localhost.
vi db.255 avec dedans : ; ; BIND reverse data file for broadcast zone ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost.
vi db.local avec dedans : ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 127.0.0.1
vi db.root avec dedans : ; <<>> DiG 9.2.3 <<>> ns . @a.root-servers.net. ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18944 ;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 518400 IN NS A.ROOT-SERVERS.NET. . 518400 IN NS B.ROOT-SERVERS.NET. . 518400 IN NS C.ROOT-SERVERS.NET. . 518400 IN NS D.ROOT-SERVERS.NET. . 518400 IN NS E.ROOT-SERVERS.NET. . 518400 IN NS F.ROOT-SERVERS.NET. . 518400 IN NS G.ROOT-SERVERS.NET. . 518400 IN NS H.ROOT-SERVERS.NET. . 518400 IN NS I.ROOT-SERVERS.NET. . 518400 IN NS J.ROOT-SERVERS.NET. . 518400 IN NS K.ROOT-SERVERS.NET. . 518400 IN NS L.ROOT-SERVERS.NET. . 518400 IN NS M.ROOT-SERVERS.NET. ;; ADDITIONAL SECTION: A.ROOT-SERVERS.NET. 3600000 IN A 198.41.0.4 B.ROOT-SERVERS.NET. 3600000 IN A 192.228.79.201 C.ROOT-SERVERS.NET. 3600000 IN A 192.33.4.12 D.ROOT-SERVERS.NET. 3600000 IN A 128.8.10.90 E.ROOT-SERVERS.NET. 3600000 IN A 192.203.230.10 F.ROOT-SERVERS.NET. 3600000 IN A 192.5.5.241 G.ROOT-SERVERS.NET. 3600000 IN A 192.112.36.4 H.ROOT-SERVERS.NET. 3600000 IN A 128.63.2.53 I.ROOT-SERVERS.NET. 3600000 IN A 192.36.148.17 J.ROOT-SERVERS.NET. 3600000 IN A 192.58.128.30 K.ROOT-SERVERS.NET. 3600000 IN A 193.0.14.129 L.ROOT-SERVERS.NET. 3600000 IN A 199.7.83.42 M.ROOT-SERVERS.NET. 3600000 IN A 202.12.27.33 ;; Query time: 81 msec ;; SERVER: 198.41.0.4#53(a.root-servers.net.) ;; WHEN: Sun Feb 1 11:27:14 2004 ;; MSG SIZE rcvd: 436
Ce dernier est a mettre à jour de temps a autre, ça ne doit pas etre trop dur de trouver la liste à jour des serveurs racine avec notre ami google.
Liste complète des options avec explication (pour named.conf et named.conf.options):
http://ftp.isc.org/www/bind/arm95/Bv9ARM.ch06.html
Si vous rencontrez des problèmes en suivant ce howto faites le nous savoir.