next up previous contents
suivant: IPSEC et VPN [en monter: OpenBSD Howto précédent: Autres services   Table des matières

Sous-sections


IPv6

IPv6, on croirait que ça a été conçu spécialement pour OpenBSD :)

Sa seule restriction jusqu'à la version 2.9 résidait dans l'incapacité à formuler de vrai règles IPv62 (il était juste possible d'autoriser complètement les flux IPv6 entre l'entrée et la sortie du tunnel : OpenBSD gèrait parfaitement IPv6, IPFilter également, mais les hooks nécessaires au support, sous OpenBSD, des fonctions IPv6 d'IPF n'ont pas été développés.

Sous les conseils d'un ami enthousiasmé par les progrès de packet filter, je me suis laissée convaincre par la première solution :)

Pré-requis : options noyau et options de configuration

Le noyau

Par défaut, OpenBSD 3.* a l'ensemble des options nécessaires activées, ie inet6 et GIF (pour le tunnel). Vous pouvez donc sauter cette sous-section si votre noyau est d'origine.

Options à activer (voir 4.2.1 pour les détails de la compil) :

Options du kernel:
option          INET            # IP + ICMP + TCP + UDP
option          INET6           # IPv6 (needs INET)
pseudo-device   gif     4       # IPv[46] over IPv[46] tunnel (RFC1933)

Les options de configuration

D'abord activer l'IPv6 forwarding (pas d'autoconf s'il s'agit d'un routeur) :

#/etc/sysctl.conf
net.inet6.ip6.forwarding=1      # 1=Permit forwarding (routing) of packets
net.inet6.ip6.accept_rtadv=0    # 1=Permit IPv6 autoconf (forwarding must be 0)


Scripter et activer le tunnel

Allez savoir pourquoi, la configuration du tunnel IPv6 demande à être ajustée presque à chaque nouvelle version. En voici 2 qui ont fonctionné chez moi, respectivement en 3.1 et en 3.2 :

Le script pour OpenBSD 3.1

#!/bin/sh
# Tunnel IPv6-fr
#IPv6: 3ffe:4063:100f:001e::2/64
#IPv6 /48: 3ffe:4063:102e::/48

myipv6=3ffe:4063:100f:001e::2
v6gate=3ffe:4063:100f:001e::1
myip=80.65.226.83
gate=213.99.4.3

ifconfig gif0 giftunnel $myip $gate
ifconfig gif0 inet6 $myipv6 $v6gate prefixlen 128
route add -inet6 default $myipv6
# route6d

Le script pour OpenBSD 3.2

#!/bin/sh
# Tunnel IPv6-fr
#IPv6: 3ffe:4063:100f:001e::2/64
#IPv6 /48: 3ffe:4063:102e::/48

myipv6=3ffe:4063:100f:001e::2
v6gate=3ffe:4063:100f:001e::1
myip=80.65.226.83
gate=213.99.4.3

ifconfig gif0 tunnel $myip $gate
ifconfig gif0 inet6 $myipv6 $v6gate prefixlen 128
route add -inet6 $v6gate -prefixlen 64 $myipv6
route add -inet6 default $v6gate

Test et résultats

Résultat :

% ./mon_tunnel.sh

[snip]
% ifconfig -a 
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1280
        physical address inet 80.65.226.83 --> 213.99.4.3
        inet6 fe80::240:63ff:fec0:3a70%gif0 -> :: prefixlen 64 scopeid 0x12
        inet6 3ffe:4063:100f:1e::2 -> 3ffe:4063:100f:1e::1 prefixlen 128
[snip]

Et c'est tout !:)

Pour le test, désactiver les règles de filtrage et lancer un ping6 :

[pharsale 21:07:38 664 ~]# pfctl -F rules
[pharsale 21:07:38 664 ~]# ping6 -c2 www.kame.net
PING6(56=40+8+8 bytes) 3ffe:4063:100f:1e::2 --> 3ffe:501:4819:2010:210:f3ff:fe03:4d0
16 bytes from 3ffe:501:4819:2010:210:f3ff:fe03:4d0, icmp_seq=0 hlim=53 time=480.991 ms
16 bytes from 3ffe:501:4819:2010:210:f3ff:fe03:4d0, icmp_seq=1 hlim=55 time=472.678 ms

--- apple.kame.net ping6 statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/std-dev = 472.678/476.834/480.991/4.157 ms

Allez soyons fous, un petit traceroute =)

# traceroute6 www.kame.net 
traceroute6: Warning: apple.kame.net has multiple addresses; using 2001:200:0:4819:210:f3ff:fe03:4d0
traceroute6 to apple.kame.net (2001:200:0:4819:210:f3ff:fe03:4d0) from 3ffe:4063:100f:1e::2, 64 hops max, 12 byte packets
 1  3ffe:4063:100f:1e::1  100.763 ms  70.023 ms  67.689 ms
 2  ndsoftware-gw.ffm4-v6.mcbone.net  216.622 ms  209.257 ms  207.124 ms
 3  tunnel-ffm4-v6.dus2-v6.mcbone.net  235.838 ms  210.695 ms  203.69 ms
 4  2001:450:1:2001::a6  211.162 ms  225.638 ms  218.08 ms
 5  2001:450:1:1::2  465.192 ms  460.743 ms  479.034 ms
 6  pc6.otemachi.wide.ad.jp  471.363 ms  474.154 ms  481.164 ms
 7  hitachi1.otemachi.wide.ad.jp  489.953 ms  492.871 ms  483.304 ms
 8  pc3.yagami.wide.ad.jp  483.649 ms  486.673 ms  552.548 ms
 9  gr2000.k2c.wide.ad.jp  482.418 ms  496.359 ms  493.505 ms
10  2001:200:0:4819:210:f3ff:fe03:4d0  518.095 ms  494.129 ms  489.477 ms

C'est bon on peut vite remettre les règles :)


Règles PF pour IPv6

Les règles habituelles posent évidemment problème pour le bon fonctionnement du tunnel, et si vos filtres sont un tant soit peu sélectifs il faudra ajouter au moins 2 règles, en entrée et en sortie, entre les deux extrémités du tunnel, via le proto 41 ipv6, et laisser passer quelques ICMP :

# Tunnel
pass in log quick on tun0 proto ipv6 from $v6gate to $mygate
pass out log quick on tun0 proto ipv6 from $mygate to $v6gate

# traffic IPv6
pass out log quick on gif0 inet6 proto tcp all modulate state
pass out log quick on gif0 inet6 proto udp all keep state
# echo request ICMP-v6 (RFC 2463) :
pass out log quick on $Tun inet6 proto ipv6-icmp all ipv6-icmp-type 128 keep state

ça devrait suffire pour s'amuser à pinger/surfer dans tous les sens :)
Et ah oui, sachez que w3m, dispo dans les ports, gère parfaitement les sites IPv6.

Activer le tout au démarrage

Pour activer l'ensemble au démarrage, à la gruik on peut coller ça tout à la fin de netstart après le lancement de la connection ADSL :

/usr/local/bin/mon_tunnel.sh

Autre solution plus propre, créer un fichier /etc/hostname.gif0 (merci à hugo sur fcob!) :

# /etc/hostname.gif0           
tunnel 80.65.226.81 213.91.4.3
inet6 3ffe:4063:100f:001e::2 128 3ffe:4063:100f:001e::1 
! route add -inet6 default 3ffe:4063:100f:001e::1

L'interface sera automatiquement montée au démarrage, plus besoin de script.


Mettre en ligne son site IPv6

C'est extrêmement simple, il suffit d'installer un apache version 2, capable de gérer IPv6, et lui demander de ``binder'' notre IPv6. De la sorte, même si un serveur web IPv4 classique est déja installé sur le port 80, celà n'affectera pas son fonctionnement. Toutes les requêtes adressées à http://monIPv6 seront acheminées au bon endroit.

Autres services

DNS v6

Pour bind9 (Cf 6.3), ajouter dans les options :

listen-on-v6 port 53 { any; };


next up previous contents
suivant: IPSEC et VPN [en monter: OpenBSD Howto précédent: Autres services   Table des matières
maab 2003-03-13