Bind 10
De Bricosoft.
Bind 10 est le célèbre serveur de noms complètely une re-écriture de la version 9. Car la version se trainait une sale réputation de truc pas-secure. On arrivait même à se demander si c'était pas des black-hats qui développait bind !
Avant de commencer un exemple worky de bind10 en primaire et secondaire il faut commencer par un cours magistral théorique.
Sommaire |
Cours magistral théorique
installation
Les paquets utiles :
# apt-get install dnsutils mtr-tiny iproute iputils-tracepath tcpdump dns-flood-detector
Voire zonecheck pour les registres Ayatollah comme .fr et .it :
# apt-get install zonecheck
Et php, ou autre langage de script pour bidouiller vos zones :
# apt-get install php5-cli php-pear
use the source Luke
# apt-get install build-essential libssl-dev python3.1 python3.1-dev sqlite3 libsqlite3-dev libboost-dev libboost-thread1.40-dev libboost-thread1.40.0 .... $ wget http://ftp.isc.org/isc/bind10/devel-20100917/bind10-devel-XXX.tar.gz; tar -zxvf bind10-devel-XXX.tar.gz; cd bind10-devel-XXX/
Pour votre config particulère il y a une aide (on peut zieuter aussi le README qui n'est pas vide)
$ ./configure --help
Mais comme vous avez aveuglément confiance en bricosoft.com :
$ ./configure --with-openssl --with-pythonpath=/usr/bin/python3.1 ...
Si le configure vous engueule parce que vous n'avez pas le header sur les sémaphores austro-hongrois, fait un "apt-file search lefichier" pour retrouver le bon paquetage.
# apt-get install apt-file; apt-file update $ apt-file search shared_ptr.hpp libboost...
$ ./configure --with-openssl --with-pythonpath=/usr/bin/python3.1 --disable-setproctitle-check
...
BIND 10 source configure results:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Package: Name: bind10-devel Version: 20110120
C++ Compiler: g++
Flags:
DEFS: -DHAVE_CONFIG_H
CPPFLAGS: -I$(top_srcdir)/ext/asio -DASIO_DISABLE_THREADS=1
CXXFLAGS: -g -O2
B10_CXXFLAGS: -Wall -Wextra -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -Werror -fPIC
Python: -I/usr/include/python3.1 -I/usr/include/python3.1
-L/usr/lib/python3.1/config -R/usr/lib/python3.1/config
-lpython3.1
Boost:
SQLite:
-lsqlite3
Features: SQLite3
Developer: Google Tests: no C++ Code Coverage: no Python Code Coverage: no Generate Manuals: no
Now you can type "make" to build BIND 10 $ make ... # make install ... $ ls -lha /usr/local/bin/ ...
- Pour bind10 :
-rwxr-xr-x 1 root root 3.1K Oct 8 13:37 b10-loadzone -rwxr-xr-x 1 root root 4.9K Oct 8 13:37 bindctl
chroot prison
Ce service critique sera isolé dans sa propre (petite)copie de système de fichiers car Bind (standard de facto) traîne une liste d'anciennes vulnaribilités mais depuis la version 9 c'est de l'histoire ancienne. Donc simplement par tradition ;-) on va l'installer dans un chroot jail.
Ici l'arborescence pour Bind sera dans /var/named :
# mkdir -p /var/named/run-root/{dev,etc,var/cache/bind,var/log/bind,var/named,var/run/named}
# chown root:bind /var/named/run-root/var/log/bind/
# chmod 775 /var/named/run-root/var/log/bind/
# cp -p /etc/localtime /var/named/run-root/etc/
# mknod /var/named/run-root/dev/null c 1 3
# mknod /var/named/run-root/dev/random c 1 8
# chmod 666 /var/named/run-root/dev/*
# chown root:bind /var/named/run-root/
# chown -R bind:bind /var/named/run-root/var
# chown -R bind:bind /var/named/run-root/etc/bind
# usermod -d /var/named/run-root bind
# chmod 700 /var/named
# chown bind:bind /var/named/run-root
# chmod 700 /var/named/run-root
archivage de l'ancienne configuration
# mkdir /var/named/run-root/var/log/bind/old # cp -rp /etc/bind/ /var/named/run-root/etc/
SyslogD
# vim /etc/default/syslogd
Primaire
Pour corser l'affaire et vous empêcher de comprendre facilement, dans l'exemple qui va suivre1.1.1.1 est l'Ip du primaire et 2.2.2.2 l'Ip du secondaire
Créer une zone
Créez dans /var/named/run-root/var/named/primary/ le fichier db.bricosoft.com :
$TTL 2D @ IN SOA ns1.mon-primaire.net. root.bricosoft.com. ( 2009081201 ; Serial 24H ; Refresh 2H ; Retry 1W ; Expire 2D ) ; Negative Cache TTL @ IN NS ns1.mon-primaire.net. @ IN NS ns2.mon-secondaire.org. @ IN MX 10 mail.bricosoft.com. ns1 IN A 1.1.1.1 ns2 IN A 2.2.2.2 bricosoft.com. IN A 8.7.6.5 mail IN A 44.44.44.44 www CNAME bricosoft.com.
Ajoutez dans /var/named/run-root/etc/bind/primary.conf :
zone "bricosoft.com" { type master; notify yes; allow-transfer{ 2.2.2.2; }; file "/var/named/primary/db.bricosoft.com"; };
Secondaire
Ajouter une zone
Dans /var/named/run-root/etc/bind/secondary.conf :
zone "bricosoft.com" { type slave; masters { 1.1.1.1; }; file "/var/named/secondary/db.bricosoft.com"; };
Run
Pour tester sur le port 5300 avec la version dev :
# bind -v ...
Ou en forçant sur le port 53 (ici dans un screen nommé bindix):
# screen -dmS bindix /usr/local/sbin/bind10 --address=2.2.2.2 --port=53 --verbose ...
# bindctl [TEMP MESSAGE]: username :root password :bind10 Username:root Password: ["login success "]
Xfrin
Transférer la zone depuis le primaire :
| Ne pas avoir oublié d'autoriser le transfert de zones du primaire vers ce nouveau secondaire dans /var/named/run-root/etc/bind/primary.conf ou /etc/bind/primary.conf :
allow-transfer{ 2.2.2.2; }; |
> Xfrin retransfer zone_name="bricosoft.com" master=1.1.1.1 send the command to cmd-ctrld received reply: "zone xfrin is started"
Dans la sortie standard du bind -v :
[b10-cmdctl] Finish send command 'retransfer' to module 'Xfrin' [b10-xfrin] transfer of 'bricosoft.com': AXFR succeeded
Pour ne saisir que les zones à transférer, mettez dans bindctl :
> config set Xfrin/master_addr 1.1.1.1 > config commit ... > Xfrin retransfer zone_name="bricosoft.eu" ...
Version :
$ dig @ns1.toto.uk -c ch -t txt version.bind ... ;; ANSWER SECTION: version.bind. 0 CH TXT "bind10-devel" ...


