« FreeBSD IPv6 Tunnel Broker » : différence entre les versions

De Memento
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
mAucun résumé des modifications
Ligne 112 : Ligne 112 :
  [root@tignes ~]#  
  [root@tignes ~]#  


Sur la passerelle de la maison (<tt>aviriaz</tt>):
Sur la passerelle de la maison (<tt>avoriaz</tt>):


  [root@avoriaz ~]# ifconfig gif0 create
  [root@avoriaz ~]# ifconfig gif0 create

Version du 6 juillet 2009 à 17:23

Introduction

Je dispose depuis quelques temps d'un serveur dédié Kimsufi chez OVH. Ce serveur dispose d'une plage d'adresses IPv6 de type 2001:41D0:2:2D29::/64 avec une interface réseau ayant une/plusieurs adresse(s) dans cette plage mais avec un prefixe de 56 bits. Le gateway par défaut étant dans mon cas: 2001:41d0:2:2dff:ff:ff:ff:ff.

J'avais déjà réalisé, à partir de mon réseau à domicile, des tests IPv6 en utilisant SIxXS comme IPv6 Tunnel Broker. Comme je dispose maintenant d'un serveur ayant une connectivité IPv6, pourquoi ne pas m'en servir pour devenir mon propre IPv6 Tunnel Broker?

Quelques recherches ne donnèrent rien... Ma question sur la liste de distribution freebsd-net@freebsd.org [1] restant sans réponse, il fallait donc que je me démerde tout seul!

Voici donc les résultats de mes tribulations...

Connexion du serveur dédié au réseau IPv6

En adaptant les instructions fournies par OVH tout en n'utilisant pas le Router Advertisement, la connexion du serveur dédié (tignes) au réseau IPv6 est simple:

En mode commande, pour un premier test:

[root@tignes ~]# ifconfig nfe0 inet6 2001:41d0:2:2d29:0:1:: prefixlen 56
[root@tignes ~]# ifconfig nfe0
nfe0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=10b<RXCSUM,TXCSUM,VLAN_MTU,TSO4>
        ether 00:22:15:b4:42:57
        inet6 fe80::222:15ff:feb4:4257%nfe0 prefixlen 64 scopeid 0x1 
        inet 94.23.44.41 netmask 0xffffff00 broadcast 94.23.44.255
        inet 87.98.252.136 netmask 0xffffffff broadcast 87.98.252.136
        inet6 2001:41d0:2:2d29:0:1:: prefixlen 56 
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
[root@tignes ~]# route add -inet6 default 2001:41d0:2:2dff:ff:ff:ff:ff
add net default: gateway 2001:41d0:2:2dff:ff:ff:ff:ff
[root@tignes ~]# netstat -rn -f inet6
Routing tables

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::/96                             ::1                           UGRS        lo0 =>
default                           2001:41d0:2:2dff:ff:ff:ff:ff  UGS        nfe0
::1                               ::1                           UHL         lo0
::ffff:0.0.0.0/96                 ::1                           UGRS        lo0
2001:41d0:2:2d00::/56             link#1                        UC         nfe0
2001:41d0:2:2d29:0:1::            00:22:15:b4:42:57             UHL         lo0
....

[root@tignes ~]# ping6 www.freebsd.org
PING6(56=40+8+8 bytes) 2001:41d0:2:2d29:0:1:: --> 2001:4f8:fff6::21
16 bytes from 2001:4f8:fff6::21, icmp_seq=0 hlim=54 time=190.249 ms
16 bytes from 2001:4f8:fff6::21, icmp_seq=1 hlim=54 time=190.681 ms
16 bytes from 2001:4f8:fff6::21, icmp_seq=2 hlim=54 time=191.213 ms
^C
--- www.freebsd.org ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 190.249/190.714/191.213/0.394 ms
[root@tignes ~]# 

En modifiant le fichier /etc/rc.conf.local pour le prochain boot:

ipv6_enable="YES"                       # Set to YES to set up for IPv6.
ipv6_network_interfaces="nfe0"          # List of network interfaces (or "auto").
ipv6_ifconfig_nfe0="2001:41d0:2:2d29:0:1:: prefixlen 56"
ipv6_defaultrouter="2001:41d0:2:2dff:ff:ff:ff:ff" # Set to IPv6 default gateway (or NO).

Le tunnel vers la maison

Il faut encore établir un tunnel entre le réseau de mon domicile et le serveur dédié (tignes). Le schema suivant donne la disposition des machines et les adresses IPv6 utilisées:

                   +-------------+
Serveur dedié      |   tignes    |
                   +-------------+
                          | 
                          +--------- [2001:41d0:2:2d29:0:1::/56] --- passerelle OVH --- IPv6 backbone
                          |
                          |-[2001:41d0:2:2d29:0:ffff::/128]
                          |
                    (gif IPv6 tunnel)
                          |
                          |
                          |-[2001:41d0:2:2d29:1:ffff::/128]
                   +-------------+
passerelle         |   avoriaz   |
                   +-------------+
                          |-[2001:41d0:2:2d29:1:1:/80]
                          |
                          |-[2001:41d0:2:2d29:1:2:/80]
                   +-------------+
station de travail |   morzine   |
                   +-------------+

La liaison entre le serveur dédié (tignes) et la passerelle de mon domicile (avoriaz) se fait par une connexion ADSL gérée par mpd5 (net/mpd5). Notons donc dès à présent que ma passerelle ADSL change d'adresse IPv4 lors de toute reconnexion à mon fournisseur d'accès; un script devra donc actualiser la configuration du tunnel tant sur avoriaz que sur tignes.

Création du tunnel en mode commande, pour un premier test:

Sur le serveur dédié (tignes):

[root@tignes ~]# ifconfig gif0 create
[root@tignes ~]# ifconfig gif0 tunnel 94.23.44.41 212.239.166.16
[root@tignes ~]# ifconfig gif0 2001:41d0:2:2d29:0:ffff:: 2001:41D0:2:2D29:1:ffff:: prefixlen 128
[root@tignes ~]# ifconfig gif0
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280
        tunnel inet 94.23.44.41 --> 212.239.166.16
        inet6 fe80::222:15ff:feb4:4257%gif0 prefixlen 64 scopeid 0x4 
        inet6 2001:41d0:2:2d29:0:ffff:: --> 2001:41d0:2:2d29:1:ffff:: prefixlen 128 
 [root@tignes ~]# sysctl net.inet6.ip6.forwarding=1
net.inet6.ip6.forwarding: 0 -> 1
[root@tignes ~]# 

Sur la passerelle de la maison (avoriaz):

[root@avoriaz ~]# ifconfig gif0 create
[root@avoriaz ~]# ifconfig gif0 tunnel 212.239.166.16 94.23.44.41
[root@avoriaz ~]# ifconfig gif0 2001:41D0:2:2D29:1:ffff:: 2001:41d0:2:2d29:0:ffff:: prefixlen 128
[root@avoriaz ~]# ifconfig gif0
gif0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280
        tunnel inet 212.239.166.16 --> 94.23.44.41
        inet6 fe80::21d:60ff:fead:2ace%gif0 prefixlen 64 scopeid 0x4 
        inet6 2001:41d0:2:2d29:1:ffff:: --> 2001:41d0:2:2d29:0:ffff:: prefixlen 128 
[root@avoriaz ~]# route add -inet6 default 2001:41d0:2:2d29:0:ffff::
add net default: gateway 2001:41d0:2:2d29:0:ffff::
[root@avoriaz ~]# netstat -rn -f inet6
Routing tables

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::/96                             ::1                           UGRS        lo0 =>
default                           2001:41d0:2:2d29:0:ffff::     UGS        gif0
::1                               ::1                           UHL         lo0
::ffff:0.0.0.0/96                 ::1                           UGRS        lo0
2001:41d0:2:2d29:0:ffff::         link#4                        UHL        gif0
2001:41d0:2:2d29:1:ffff::         link#4                        UHL         lo0
...
[root@avoriaz ~]# ping6 2001:41d0:2:2d29:0:ffff::
PING6(56=40+8+8 bytes) 2001:41d0:2:2d29:1:ffff:: --> 2001:41d0:2:2d29:0:ffff::
16 bytes from 2001:41d0:2:2d29:0:ffff::, icmp_seq=0 hlim=64 time=12.895 ms
16 bytes from 2001:41d0:2:2d29:0:ffff::, icmp_seq=1 hlim=64 time=10.742 ms
16 bytes from 2001:41d0:2:2d29:0:ffff::, icmp_seq=2 hlim=64 time=19.643 ms
^C
--- 2001:41d0:2:2d29:0:ffff:: ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 10.742/14.427/19.643/3.792 ms

[root@avoriaz ~]# ping6 www.freebsd.org
PING6(56=40+8+8 bytes) 2001:41d0:2:2d29:1:ffff:: --> 2001:4f8:fff6::21
^C
--- www.freebsd.org ping6 statistics ---
6 packets transmitted, 0 packets received, 100.0% packet loss

[root@avoriaz ~]# 

Bien sûr, ce dernier test ne pouvais pas fonctionner car la passerelle OVH n'a pas une route statique vers tignes pour toutes les adresses 2001:41d0:2:2d29::/64.

References