Differences

This shows you the differences between two versions of the page.

Link to this comparison view

unix:bind_ipv6 [2010/01/12 13:29] (current)
Line 1: Line 1:
 +Bien le bonjour jeunes gens !
 +Dans ce tip, nous allons tous apprendre à installer, configurer, et surtout faire tourner un bind sécurisé et avec le support de l'IPV6 dans le cadre d'un réseau local (tout un programme).
  
 +La zone que nous configurerons dans cet example est "​diantre.net"​ (zone sélectionnée tout à fait au hazard parmi une cinquantaine de candidates).
 +
 +La plage réseau utilisée en IPV4 sera des plus classiques, une 192.168.0.0 en classe C.
 +La /64 utilisée pour l'IPV6 sera 3ffe:​8271:​8200:​23 (c'est la mienne, ba oui, j'​aurais jamais pu en inventer une avec ma petite tête :) )
 +
 +1) Installons bind9 si vous le voulez bien:
 +
 +debian -> # apt-get install bind9
 +FreeBSD -> # cd /​usr/​ports/​net/​bind9 && make install clean
 +NetBSD -> # cd /​usr/​pkgsrc/​net/​bind9 && make install clean
 +
 +Voila notre bind installé (il est préférable d'​avoir updater ses sources de packages au préalable).
 +
 +2) Mise en place de la structure sécurisée de le ton infrastructure (oui, je suis bilingue, je parle le francais et le E-business):​
 +
 +Nous allons "​chrooter"​ notre bind dans le répertoire "/​var/​bind",​ qui me semble convenable au niveau sécurité:
 +
 +Création des répertoires afin de simuler un environnement normal:
 +
 +# mkdir /var/bind
 +# mkdir /​var/​bind/​etc -> Là où les fichiers de configuration seront stockés
 +# mkdir /​var/​bind/​var
 +# mkdir /​var/​bind/​var/​log -> Là où les logs de bind seront stockés
 +# mkdir /​var/​bind/​var/​run -> Là où le fichier name.pid sera créer
 +# mkdir /​var/​bind/​zone -> Là où nos fichiers de zone seront stockés
 +
 +3) Une fois l'​arborescence créée, nous allons commencer l'​édition de nos fichiers:
 +
 +Avant tout, définissons les fichiers qui seront créés.
 +
 +
 +"/​var/​bind/​etc/​named.conf"​ : c'est lui qui définira quelles zones seront gérées ainsi que quelques options ma fois sympathiques
 +
 +"/​var/​bind/​zone/​127.0.0.rev":​ Le fichier contenant les reverses de votre localhost.
 +
 +"/​var/​bind/​zone/​localhost.dns":​ Le fichier contenant les informations ainsi que les hosts de la zone localhost (normalement un seul host, si des personnes en vont plusieurs dans cette zone, qu'​elle contactent Mulder d'​urgence).
 +
 +"/​var/​bind/​zone/​192.168.0.rev":​ Ce fichier contiendra les adresses reverses IPV4 de la zone "​diantre.net"​.
 +
 +"/​var/​bind/​zone/​diantre.net.dns":​ Ze fichier de conf contenant les infos sur les hosts de votre petit LAN :)
 +
 +"/​var/​bind/​zone/​3ffe.8271.rev":​ Le fichier contenant les reverses IPV6 de notre zone.
 +
 +Utilisez votre éditeur préféré pour l'​édition,​ dans cet exemple, nous utiliserons vi (un ami pour la vi ;) ) :
 +
 +
 +# vi /​var/​bind/​etc/​named.conf
 +
 +Voici ce qui devrait s'​afficher à la fin de l'​édition :
 +
 +------------------------------
 +options {
 +                //Spécifie le repertoire dans lequel les fichiers se trouveront
 +                 ​directory "/​zone";​
 +};
 +
 + ​logging
 + //​Spécifie les options de création des fichiers de log
 +{
 + ​channel log-file {file "/​var/​log/​named.log";​ severity debug; print-time yes; };
 + ​category default {log-file;​};​
 + ​category panic {log-file;​};​
 + ​category packet {log-file;​};​
 + ​category eventlib {log-file;​};​
 +};
 +
 +//Notre zone localhost
 +zone "​localhost"​ { type master; file "​localhost.dns";​ };
 +
 +//Son reverse
 +zone "​127.in-addr.arpa"​ { type master; file "​127.0.0.rev";​ };
 +
 +//Notre zone diantre.net,​ celle qui nous interesse le plus
 +zone "​diantre.net"​ { type master; file "​diantre.net.dns";​ };
 +
 +//Son reverse IPV4
 +zone "​0.168.192.in-addr.arpa"​ { type master; file "​192.168.0.rev";​ };
 +
 +//Son reverse IPV6
 +//petite explication,​ il s'​agit,​ pour trouver le nom de cette zone, de noter chaque
 +//chiffre de sa /64 en commençant par le dernier chiffre et en ajoutant "​0"​ lorsqu'​il n'y
 +//a pas quatre chiffres contenus entre les ":"​ et finit par "​.ip6.int"​
 +//exemple rapide: 3ffe:15 donnera ceci -> 5.1.0.0.e.f.f.3.ip6.int
 +//​c'​est pas tres clair, mais en y passant un petit bout de temps à loucher dessus
 +//ca devient naturel :)
 +zone "​3.2.0.0.0.0.2.8.1.7.2.8.e.f.f.3.ip6.int"​ { type master; file "​3ffe.8271.rev";​ };
 +------------------------------
 +
 +Voila notre fichier finit.
 +
 +A présent, attaquons nous aux autres :
 +
 +#vi /​var/​bind/​zone/​localhost.dns
 +
 +------------------------------
 +$TTL    3600
 +@       ​IN ​     SOA     ​diantre.net. root.diantre.net. ​ (
 +                                1999012100 ​     ; Serial
 +                                3600            ; Refresh
 +                                300             ; Retry
 +                                3600000 ​        ; Expire
 +                                3600 )          ; Minimum
 +        IN      NS      localhost.
 +localhost. ​     IN      A       ​127.0.0.1 ​      ; déclaration de l'IPV4
 +                IN      AAAA    ::1             ; déclaration de l'IPV6
 +------------------------------
 +
 +# vi /​var/​bind/​zone/​127.0.0.rev
 +
 +------------------------------
 +$TTL    3600
 +@       ​IN ​     SOA     ​diantre.net. root.diantre.net. (
 +                        2001031213 ​     ;
 +                        28800           ;
 +                        7200            ;
 +                        604800 ​         ;
 +                        86400) ​         ;
 +        IN      NS      localhost.
 +1               ​PTR ​    ​localhost. ​     ;​définition du reverse
 +------------------------------
 +
 +# vi /​var/​bind/​zone/​diantre.net.dns
 +
 +------------------------------
 +$ORIGIN net.
 +$TTL 3600
 +diantre ​        ​IN ​     SOA     ​diantre.net. root.diantre.net. (
 +                        2001031212
 +                        28800
 +                        7200
 +                        604800
 +                        86400 )
 +                NS      ftp.diantre.net. ​       ;​déclaration du serveur de nom (ici, la machine FTP)
 +                MX      10 mail.diantre.net. ​   ;​déclaration du MX (mail exchangeur)
 +                TXT     "​diantre (DTC) network"​ ;le truc débile pour mettre sa touche
 +$ORIGIN diantre.net.
 +mail                    A       ​192.168.0.1 ​    ;IPV4 de la machine mail
 +                        AAAA    3ffe:​8271:​8200:​23:​260:​8ff:​feb6:​76a0 ​    ;son IPV6
 +ftp                     ​A ​      ​192.168.0.5 ​    ;IPV4 de la machine ftp
 +                        AAAA    3ffe:​8271:​8200:​23:​210:​5aff:​fe64:​935e ​   ;son IPV6
 +www                     ​A ​      ​192.168.0.4 ​    ;IPV4 de la machine www
 +                        AAAA    3ffe:​8271:​8200:​23:​248:​54ff:​fe66:​9d52 ​   ;son IPV6
 +------------------------------
 +
 +# vi /​var/​bind/​zone/​192.168.0.rev
 +
 +------------------------------
 +@       ​IN ​     SOA     ​diantre.net. root.diantre.net. (
 +                        2001072903
 +                        28800
 +                        7200
 +                        604800
 +                        86400 )
 +                NS      ftp.diantre.net.
 +
 +5               ​PTR ​    ​ftp.diantre.net.
 +4               ​PTR ​    ​www.diantre.net.
 +------------------------------
 +
 +# vi /​var/​bind/​zone/​3ffe.8271.rev
 +
 +------------------------------
 +$ORIGIN .
 +$TTL 3600       ; 1 hour
 +3.2.0.0.0.0.2.8.1.7.2.8.e.f.f.3.ip6.int IN SOA diantre.net. root.diantre.net. (
 +                                        2001072904 ; serial
 +                                        28800      ; refresh (8 hours)
 +                                        7200       ; retry (2 hours)
 +                                        604800 ​    ; expire (1 week)
 +                                        86400      ; minimum (1 day)
 +                                        )
 +                                        NS      ftp.diantre.net.
 +$ORIGIN 3.2.0.0.0.0.2.8.1.7.2.8.e.f.f.3.ip6.int.
 +//Une IPV6 est composé de deux parties:
 +//Le /64 qui définit le réseau (3ffe:​8271:​8200:​23)
 +//et la suite qui définit le hosts à partir de son adresse MAC (210:​5aff:​fe64:​935e pour ftp)
 +//Pour trouver le reverse d'un host, il suffit de faire la meme reflection que pour
 +//la zone, mais avec la deuxieme partie de l'​adresse et sans le "​.ip6.int"​ à la fin
 +//ce qui nous donne :
 +0.a.6.7.6.b.e.f.f.f.8.0.0.6.2.0 PTR     ​mail.diantre.net.
 +e.5.3.9.4.6.e.f.f.f.a.5.0.1.2.0 PTR     ​ftp.diantre.net.
 +2.5.d.9.6.6.e.f.f.f.4.5.8.4.2.0 PTR     ​www.diantre.net.
 +------------------------------
 +
 +Voila nos fichiers de configurations terminés (ouf)
 +Passons à la dernière étape.
 +
 +4) Finalistaion de la sécurité et lancement du daemon (mais pas trop fort hein ;) ):
 +S'il n'en existe pas, veuillez en créer un avec un groupe correspondant :
 +
 +# groupadd bind
 +# useradd -g bind -s /bin/false bind
 +
 +Vala :)
 +
 +A présent, nous allons "​setter"​ les droits sur le répertoire /var/bind
 +
 +# chown -R bind:bind /var/bind
 +# chmod -R 700 /var/bind
 +
 +Et voila :)
 +
 +Seul les users bind et root auront le droit d'y acceder.
 +
 +Il ne reste plus qu'à démarrer le daemon :)
 +
 +Localisez le binaire "​named"​
 +(sous debian -> /usr/sbin, NetBSD -> /​usr/​pkg/​sbin,​ FreeBSD -> /​usr/​local/​sbin)
 +et lancez le comme suit :
 +
 +# named -u bind -t /var/bind -c /​etc/​named.conf
 +
 +explications :
 +
 +-u -> lance le daemon avec le user désiré (ici bind)
 +-t -> le repertoire où est chrooté bind
 +-c -> le fichier de configuration à appeler
 +
 +5) Testage :
 +
 +Bin vi, on va quand meme pas partir sans tester.
 +Sur la machine serveur NS (soit ftp pour notre exemple), rajouter la ligne "​nameserver 127.0.0.1"​ dans le fichier "/​etc/​resolv.conf"​ et faites qu'​elle soit la première.
 +Lancez la commande "​nslookup"​
 +# nslookup
 +Default Server: ​ localhost
 +Address: ​ 127.0.0.1
 +
 +>
 +
 +ici taper un host, comme par exemple mail:
 +
 +> mail.diantre.net
 +Server: ​ localhost
 +Address: ​ 127.0.0.1
 +
 +Name:    mail.diantre.net
 +Address: ​ 192.168.0.1
 +
 +>
 +
 +Ca fonctionne :)
 +
 +à présent taper son adresse IP afin de voir si le reverse fonctionne bien :
 +
 +> 192.168.0.1
 +Server: ​ localhost
 +Address: ​ 127.0.0.1
 +
 +Name:    mail.diantre.net
 +Address: ​ 192.168.0.1
 +
 +>
 +
 +***joie***
 +
 +Pour tester l'​IPV6,​ il n'y a pas encore beaucoup d'​outil,​ on peut voir l'ip V6 en spécifiant le nom d'une machine avec nslookup et le type de selection AAAA :
 +
 +> set q=AAAA
 +> www.diantre.net
 +Server: ​ localhost
 +Address: ​ 127.0.0.1
 +
 +www.diantre.net IPv6 address = 3ffe:​8271:​8200:​23:​248:​54ff:​fe66:​9d52
 +diantre.net ​    ​nameserver = ftp.diantre.net
 +www.diantre.net internet address = 192.168.0.4
 +>
 +
 +quant aux reverse, je n'ai rien trouver que de créer une conection sur un service en V6 (ssh par exemple) et de faire :
 +
 +# netstat | grep ESTABLISHED
 +
 +et de voir si le nom du client est résolut.
 +
 +
 +Voila :)
 +
 +J'​espere que vous avez pas trop le crane defoncez, mais si vous avez tout bien suivit vou devriez.
 +
 +Quelque liens (obligé):
 +
 +HOWTO CHROOT-BIND -> http://​www.tldp.org/​HOWTO/​Chroot-BIND-HOWTO.html
 +HOWTO Reverse IPV6 -> http://​www.freenet6.net/​reverse-dns.shtml
 +
 +Pour obtenir une passerelle IPV6 gratuitement et en France -> http://​www.ipv6-fr.org (pas encore dispo)
 +Ecrivez à ipmaster@ipv6-fr.org pour plus d'​info,​ ils sont vraiment très sympa et plein de bons conseils.
 +
 +jtbjid
unix/bind_ipv6.txt · Last modified: 2010/01/12 13:29 (external edit)