Mise en place d'un LAN « IPv6 only » sous debian¶
Principe¶
DNS (dns64) ________ |==|=====| ipv4.example.com | | | .----------------------->| | | | | | | | | | | | | |====°| | |__|_____| ____ __ | | | |==| | |____| | |<-----------------------' /::::/ |__| 2001:910:109c:ffff::5be0:958e | | | .--. | .---. _ -( )- _ | / /| .--,( ),--. | .---. | _.-( )-._ '------------------------>| | ' ------------------------->( INTERNET ) 2001:910:109c:ffff::5be0:958e | |/ 91.224.149.142 '-._( )_.-' '---' '__,( ),__' Routeur - ._(__)_. - (nat 64)
Installation/configuration de bind (DNS64)¶
DNS64 n'est supporté qu'à partir de debian « wheezy ».
# cat 'APT::Default-Release "squeeze";' > /etc/apt/apt.conf.d/90default # cat 'deb http://apt.kafe-in.net:3142/debian wheezy main contrib' > /etc/apt/sources.list.d/wheezy.list # aptitude update # aptitude -t wheezy install bind9
La configuration se fait au niveau du groupe « options » de /etc/bind/named.conf :
options { (...) listen-on-v6 { any; }; dns64 2001:910:109c:ffff::/96 { clients { any; }; recursive-only yes; }; (...) }
Installation/configuration de tayga (NAT64)¶
# aptitude install tayga # echo << EOF > /etc/tayga.conf tun-device nat64 ipv4-addr 192.168.255.1 prefix 2001:910:109c:ffff::/96 dynamic-pool 192.168.255.0/24 data-dir /var/spool/tayga EOF # echo "net.ipv4.conf.all.forwarding=1" > /etc/sysctl.d/99forwarding # echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.d/99forwarding # /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # /sbin/iptables -A FORWARD -i eth0 -o nat64 -m state --state RELATED,ESTABLISHED -j ACCEPT # /sbin/iptables -A FORWARD -i nat64 -o eth0 -j ACCEPT # sed -i -e 's/^RUN="no"/RUN="yes"/' /etc/default/tayga # /etc/init.d/tayga start
Ajout d'un NAT en entrée IPv4 vers IPv6¶
Le problème du « IPv6 only » dans le cas où l'on héberge un serveur (sur le LAN) est qu'il faut forwarder les requêtes venant d'une IPv4 vers le serveur qui écoute sur une IPv6.
Il semble compliqué de se contenter de ne recevoir les mails que via IPv6...
Tayga permet de « mapper » des IPv4 complètement virtuelles (utilisées sur aucune interfaces) vers des IPv6.
Admettons qu'on veut forwarder les requêtes entrantes sur le port TCP 25 dans l'interface eth0 vers l'IPv6 2001:910:109c:1::25.
# echo "map 192.168.255.25 2001:910:109c:1::25" >> /etc/tayga.conf # /sbin/iptables -t nat -A PREROUTING -p tcp --dport 25 -i eth0 --to 192.168.255.25:25 -j DNAT # /sbin/iptables -A FORWARD -i eth0 -o nat64 -d 192.168.255.25 -p tcp --dport 25 -j ACCEPT # /sbin/ip6tables -A FORWARD -i nat64 -d 2001:910:109c:1::25 -p tcp --dport 25 -j ACCEPT # /etc/init.d/tayga restart
Problèmes liés à cette architecture¶
- Peu de serveurs DNS répondent sur IPv6. Le serveur DNS doit avoir une connectivité IPv4 car il interroge des IP et non des domains donc pas de DNS64.
- A priori, bind pert les pédales en cas d'un enregistrement CNAME vers un CNAME vers un A. Exemple :
$ host -t aaaa fr.wikipedia.org Host fr.wikipedia.org not found: 3(NXDOMAIN) $ host -t a fr.wikipedia.org fr.wikipedia.org is an alias for wikipedia-lb.wikimedia.org. wikipedia-lb.wikimedia.org is an alias for wikipedia-lb.esams.wikimedia.org. wikipedia-lb.esams.wikimedia.org has address 91.198.174.225 $ host -t aaaa wikipedia-lb.wikimedia.org wikipedia-lb.wikimedia.org is an alias for wikipedia-lb.esams.wikimedia.org. wikipedia-lb.esams.wikimedia.org has IPv6 address 2001:910:109c:ffff::5bc6:aee1