Table des matières

Routeur ipv4 et ipv6 sous linux

Cet article traite de la mise en place d'un routeur linux (en l'occurence avec 3 interfaces réseau), qui gère aussi bien ipv4 qu'ipv6.

Prérequis

Installation

Pour un routeur, une installation minimale est requise.

dans le cas d'une debian, je conseille l'utilisation d'un cd-rom netinstall en ne précisant pas de mirroir sur internet. Vous aurez ainsi une machine munie uniquement de l'essentiel.

Pour une slackware, il est nécessaire d'utiliser l'installation en mode expert, et de sélectionner uniquement les packages étiquetés REQUIRED. Renommer les interfaces réseau

Petite astuce, pour renommer eth0, eth1, eth2 en wan, clt, et srv :

et le modifier à votre convenance de la manière suivante :

# PCI device 0x10b7:0x9200 (3c59x)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:04:75:ed:69:b8", NAME="wan"

# PCI device 0x10ec:0x8169 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:08:54:d0:71:73", NAME="srv"

# PCI device 0x10ec:0x8169 (r8169)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:08:54:d0:71:79", NAME="clt"

Configuration des interfaces

Ipv4

Afin de configurer les interfaces réseau, je conseille l'utilisation de l'utilitaire ip , disponible dans le package iproute2.

Nous allons dans l'exemple présent , découper un réseau de classe B, 172.24.0.0/16 , en plusieurs sous réseaux :

Nous attribuerons l'adresse de machine 250 dans chacun de ces sous-réseaux.

ip -4 addr add 172.24.1.250/24 dev wan
ip -4 addr add 172.24.10.250/24 dev srv
ip -4 addr add 172.24.20.250/24 dev clt

Afin que le routage s'effectue entre les différents sous réseaux, il suffit de taper la commande suivante :

echo 1 > /proc/sys/net/ipv4/ip_forward

Votre routeur linux ipv4 est normalement prêt à condition qu'il route correctement les paquets vers internet.

ip -4 route add default via 172.24.1.1 dev wan

Ipv6

Comme vu sur la page précédente, Nerim attribue des réseaux IPV6 de la forme 2001:7a8:xxxx::/48. Nous prendrons pour l'exemple le réseau 2001:7a8:1111::/48, que nous allons découper en sous réseaux :

Nous utiliserons la première adresse disponible dans chacun des sous réseaux à l'exception de l'interface dite “wan” sur laquelle nous avons le routeur cisco

Nous allons de nouveau utiliser l'utilitaire ip pour configurer ces interfaces :

ip -6 addr add 2001:7a8:1111::2/48 dev wan
ip -6 addr add 2001:7a8:1111:1000::1/64 dev srv
ip -6 addr add 2001:7a8:1111:2000::1/64 dev clt

Puis configurer le routage ipv6 du noyau Linux

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

Votre routeur ipv6 est pret : à condition que celui-ci puisse sortir sur le réseau mondial, et que les routeurs en amont aient connaissance des sous-réseaux disponibles

Dans le cas présent, la passerelle vers le réseau mondial, n'est autre que le cisco 877 de la page précédente, qui possède l'adresse ipv6 2001:7a8:1111::1/48

Sur le routeur linux

ip -6 route add default via 2001:7a8:1111::1 dev wan

Sur le routeur Cisco

ipv6 route 2001:7A8:1111:1000::/64 2001:7A8:1111::2
ipv6 route 2001:7A8:1111:2000::/64 2001:7A8:1111::2
ipv6 route 2001:7A8:1111::/48 Vlan1
ipv6 route ::/0 Dialer0

Adressage des machines avec radvd

L'acronyme radvd signifie , Router Advertisement Daemon, au même titre que sur la page précédente , il permet d'autoconfigurer les machines des sous réseaux locaux, pour les adresses ip, et les routes à utiliser.

Exemple de radvd.conf : dans l'exemple, nous n'envoyons pas d'avertissement sur l'interface wan, du fait que le routeur cisco s'en occupe déjà. Et sur chacune des interfaces restantes nous envoyons les avertissements correspondant au sous réseau concerné.

interface wan {
   AdvSendAdvert off;
};


interface srv
{
   AdvSendAdvert on;
   prefix 2001:7a8:1111:1000::/64
   {
       AdvOnLink on;
       AdvAutonomous on;
       AdvRouterAddr off;
   };
};

interface clt
{
   AdvSendAdvert on;
   prefix 2001:7a8:1111:2000::/64
   {
       AdvOnLink on;
       AdvAutonomous on;
       AdvRouterAddr off;
   };
};

On redémarre les services, et la magie opère : dès que nous branchons une machine, elle obtient automatiquement son adresse ipv6. ainsi que sa route par défaut vers le routeur linux.

Tester la connectivité

Ping

sous linux : avec la commande ping6

ping6 www.kame.net
PING www.kame.net(orange.kame.net) 56 data bytes
64 bytes from orange.kame.net: icmp_seq=1 ttl=47 time=282 ms
64 bytes from orange.kame.net: icmp_seq=2 ttl=47 time=280 ms
64 bytes from orange.kame.net: icmp_seq=3 ttl=47 time=276 ms

--- www.kame.net ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 276.156/279.681/282.542/2.718 ms

ou encore :

ping6 www.monipv6.org
PING www.monipv6.org(web1.stux6.net) 56 data bytes
64 bytes from web1.stux6.net: icmp_seq=1 ttl=56 time=67.6 ms
64 bytes from web1.stux6.net: icmp_seq=2 ttl=56 time=67.2 ms
64 bytes from web1.stux6.net: icmp_seq=3 ttl=56 time=69.6 ms
  
--- www.monipv6.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 78.798/79.380/80.278/0.721 ms

ou encore :

ping6 2001:41d0:2:2692::80
PING 2001:41d0:2:2692::80(2001:41d0:2:2692::80) 56 data bytes
64 bytes from 2001:41d0:2:2692::80: icmp_seq=1 ttl=53 time=77.2 ms
64 bytes from 2001:41d0:2:2692::80: icmp_seq=2 ttl=53 time=78.2 ms
64 bytes from 2001:41d0:2:2692::80: icmp_seq=3 ttl=53 time=95.4 ms

--- 2001:41d0:2:2692::80 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1998ms
rtt min/avg/max/mdev = 77.255/83.644/95.421/8.343 ms

Traceroute

A condition que le protocole udp soit autorisé en sortie …

traceroute6 www.01net.com
traceroute to www.dev.01net.fr (2001:41d0:1:118::1) from 2001:7a8:1111:1000:dcad:beff:feef:2522, 
30 hops max, 16 byte packets
 1  gw-srv.ipv6.stux.fr (2001:7a8:1111:1000::1)  0.21 ms  0.173 ms  0.183 ms
 2  gw-net.ipv6.stux.fr (2001:7a8:1111::1)  0.731 ms  0.653 ms  0.637 ms
 3  lo3-lns352-tip-courbevoie.ipv6.nerim.net (2001:7a8:0:c352::1)  48.096 ms  48.504 ms  47.066 ms
 4  gi1-14-132-nb-courbevoie-2.ipv6.nerim.net (2001:7a8:1:132::2)  49.006 ms  47.102 ms  48.059 ms
 5  te2-4-30-nb-courbevoie-1.ipv6.nerim.net (2001:7a8:1:30::1)  47.012 ms  48.571 ms  48.003 ms
 6  te2-1-91-nb-voltaire-2.ipv6.nerim.net (2001:7a8:1:91::2)  49.022 ms  213.31 ms  207.964 ms
 7  gi0-1-thevenin.ipv6.nerim.net (2001:7a8:0:ff22::fffe)  48.998 ms  47.42 ms  62.99 ms
 8  * * *
 9  2001:41d0::512 (2001:41d0::512)  112.389 ms  84.919 ms  218.054 ms
10  2001:41d0:1:118::1 (2001:41d0:1:118::1)  49.947 ms  49.604 ms  46.975 ms

HTTP

Sur le site MonIpv6.org ce qui devrait vous donner un résultat similaire à celui-ci.

L'avantage de cette passerelle, est de pouvoir filtrer tous les paquets ip (4 ou 6).