Routeur IP Miassou
Le routeur est une machine sous debian wheezy. Pour comprendre l'adressage utilisé par Ilico de manière globale, voir adressage
La configuration du routage IPv6 est traitée dans la seconde partie du document.
Généralités et objectifs de la configuration
D'un côté, le réseau Ilico (AP sur adresses privées et abonnés sur adresses publiques). Côté FDN,
- Une adresse IPv4 publique est attribuée par le radius de FDN au modem (80.67.177.30/32) ;
- un bloc d'adresses (80.67.180.0/24) est routé sur la ligne ADSL ;
On veut :
- Que les abonnés soient routés vers internet
- Que les AP sur le réseau privé ne soient pas routés vers internet
- Qu'il n'y ait pas de routage entre le réseau abonné et le réseau backbone
Au niveau interfaces réseau, on aura à la fin de cette partie :
- eth0: 10.42.1.0/16 (backbone radio, réseau privé des access-points).
- eth0:abo : réseau des IPs publiques des abonnés routés sur cette connexion ADSL (80.67.180.0/24)
- ppp0: 80.67.177.30/32 ptp (adresse attribuée par FDN via le modem), interface WAN, route par défaut.
- eth1:modem 192.168.1.2/32 ptp (modem, adressage privé, pour configuration uniquement)
Il faut brancher le câble ethernet sur le port 1 du modem.
Configuration PPP/ADSL
Configurer le modem :
- Pour qu'il ne serve pas de DHCP,
- Qu'il aie une adresse LAN statique 192.168.1.1
- Qu'il fonctionne en mode bridge
- Le brancher sur eth1 du routeur
pppoeconf
Puis se laisser guider (les choix par défaut conviennent très bien)! Les identifiants de connexion sont ceux envoyés par FDN par mail (XXX@fdn.nerim).
Mémo des commandes ppp :
- Activer la connexion : pon dsl-provider
- Désactiver: poff dsl-provider
- Regarder le journal PPP plog
À l'issue de cette phase, le routeur devrait avoir un accès internet…
root@miassou:~# ping -c1 -q 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. --- 8.8.8.8 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 45.245/45.245/45.245/0.000 ms
Reste à permettre aux abonnés d'être routés par cette interface.
Configuration réseau complète
Fichier /etc/network/interfaces
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface #allow-hotplug eth1 #iface eth1 inet dhcp # Réseau privé des points d'accès radio auto eth0 iface eth0 inet static address 10.42.1.1 netmask 255.255.0.0 ## eth0:abo Réseau abonnés auto eth0:abo iface eth0:abo inet static address 80.67.180.1 netmask 255.255.255.0 ## eth1:modem admin modem # # Le modem (son interface web/telnet) # est accessible sur 192.168.1.1 auto eth1:modem iface eth1:modem inet static address 192.168.1.2 pointopoint 192.168.1.1 netmask 255.255.255.255 ## ppp0 interface WAN (ADSL FDN) # # Concerne le modem. L'activation de cette interface # - connecte le modem au réseau FDN # - crée une interface ppp0 # auto dsl-provider iface dsl-provider inet ppp pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf provider dsl-provider # lancement du pare-feu & du vpn au démarage #openvpn work_vpn pre-up iptables-restore < /etc/iptables.up.rules
Routage
Le routage consiste du point de vue de la machine à recevoir un paquet IP qui ne lui est pas adressé et à le relayer vers son destinataire final. Pour savoir par où envoyer un paquet qu'il reçoit, le routeur consulte ses tables de routage.
Typiquement, les tables de routage des routeurs Ilico vont ressembler à ça (de manière simplifiée):
62.4.16.ZZ/32 ppp0 # Routeur FDN de l'autre côté du tunnel PPP/ADSL (LNS) 80.67.180.0/24 eth0 # Bloc d'IP défini sur le routeur 192.168.1.0/24 eth1 # Réseau privé contenant uniquement le modem (IP d'administration) 10.42.0.0/16 eth0 # Réseau privé du backbone Ilico (Access-points) default ppp0 # Route par défaut : le reste d'internet
Par défaut, le routage est désactivé sous Linux. Pour l'activer :
nano /etc/sysctl.conf
Décommenter la ligne net.ipv4.ip_forward=1
Cela prendra effet au prochain reboot. Pour l'appliquer immédiatement
sysctl -p
Cela active le routage de et vers tous les réseaux. Le pare-feu permet de contrôler plus finement le routage.
La commande ip route
permet d'afficher la table de routage courante d'une machine.
root@miassou:~# ip route default dev ppp0 scope link 10.42.0.0/16 dev eth0 proto kernel scope link src 10.42.1.1 10.254.254.252 dev tun0 proto kernel scope link src 10.254.254.254 62.4.16.41 dev ppp0 proto kernel scope link src 80.67.177.30 80.67.180.0/24 dev eth0 proto kernel scope link src 80.67.180.1 192.168.1.1 dev eth1 proto kernel scope link src 192.168.1.2
Pare-feu
Le pare-feu répond à deux questions :
- Quels sont les paquets que l'on accepte de router (en fonction de leur source/destination) ?
- Quels sont les connexion entrantes destinées au routeur lui-même que l'on accepte ?
On utilise le pare-feu netfilter qui est intégré au noyau linux et qui se configure à l'aide des outils iptables.
Routage
On ne veut pas que le réseau backbone (10.42.0.0/16) ait accès à internet, ni que le routage soit effectif entre ce réseau et le réseau abonnés. Idem pour le réseau d'administration du modem.
Ces directives correspondent à la chaine FORWARD du pare-feu netfilter/iptables
Services sur le routeur
On ne veut pas non plus ouvrir le routeur à tous vents. Seuls certains services devront-être accessibles :
- SSH depuis partout
- ICMP (pings, rapports d'erreurs…) depuis partout
- DNS depuis l'intérieur du réseau
- IGMP (annonces multicast) depuis l'intérieur du réseau
Ces directives correspondent à la chaine INPUT du pare-feu netfilter/iptables
Configuration iptables
Pour simplifier la configuration d'IPtables on peut définir des noms de réseau :
Contenu du fichier /etc/networks:
default 0.0.0.0 loopback 127.0.0.0 link-local 169.254.0.0 #blocs FDN abo.ilico.fr 80.67.180.0 abo.wifi.ilico.fr backbone.ilico.fr 10.42.0.0
La configuration IPTables est la suivante
/etc/iptables.up.rules
# /etc/iptables.up.rules # iptables-restore(8) remet implicitement à zéro toutes les règles # Les instructions qui suivent concernent la table « filter », *filter ######################### # Politiques par défaut # ######################### # Le traffic entrant est bloqué par défaut -P INPUT DROP # Le traffic destiné à être routé est refusé par défaut -P FORWARD DROP # Le traffic sortant est accepté par défaut -P OUTPUT ACCEPT ###################### # Règles de filtrage # ###################### # Pas de filtrage sur l'interface de "loopback" -A INPUT -i lo -j ACCEPT # Accepter de forward les paquets relatifs à une connexion existante -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # Accepter de forward tout le traffic des abonnés (entrant/sortant) -A FORWARD -i eth0 --source 80.67.180.0/24 -j ACCEPT -A FORWARD --destination 80.67.180.0/24 -j ACCEPT # Accepter de forward tout ce qui vient du vpn (pour la maintenance) -A FORWARD -i tun0 -j ACCEPT #SNMP -A INPUT -p udp --dport snmp -j ACCEPT # VPN -A INPUT -p udp --dport openvpn -j ACCEPT # ICMP (ping & diagnostic) -A INPUT -p icmp -j ACCEPT # IGMP (pour le multicast) -A INPUT -p igmp -j ACCEPT # Accepter les packets entrants relatifs à des connexions établies -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # SSH autorisé partout -A INPUT -p tcp --dport ssh -j ACCEPT # HTTP pour le serveur web apache (stats munin) # -A INPUT -p tcp --dport http -j ACCEPT # Accepter DNS depuis les IPs abonnés -A INPUT -i eth0 -p tcp --dport domain --source 80.67.180.0/24 -j ACCEPT -A INPUT -i eth0 -p udp --dport domain --source 80.67.180.0/24 -j ACCEPT # Accepter les requêtes/réponses DHCP -A INPUT -i eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT # Accepter les requêtes NTP -A INPUT -i eth0 -p udp --dport 123 --source 80.67.180.0/24 -j ACCEPT # Accepter les requêtes syslog -A INPUT -i eth0 -p udp --dport 514 --source 80.67.180.0/24 -j ACCEPT COMMIT #################### # Problème de MTU… # #################### # Les instructions qui suivent concernent la table « mangle », c'est # à dire l'altération des paquets *mangle # Règle les différences de MTU entre ppp0 et ethX -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -o ppp0 --clamp-mss-to-pmtu COMMIT
Il est préférable de tester les règles avant de les appliquer :
iptables-apply <fichier-de-règles>
Puis tester d'établir une nouvelle connexion SSH vers le serveur et répondre à la question…
Cela permet de tester un fichier de règles pendant 30s. Si le nouveau fichier de règles contient une erreur vous coupant le cordon SSH, l'ancien sera rétabli au bout de 30s.
À chaque démarrage, la configuration iptables sera appliquée par la ligne que nous avions placée dans /etc/network/interfaces (ndlr: “pre-up iptables-restore < /etc/iptables.up.rules”).
DHCP et DNS avec DNSMasq
DNSMasq joue un double rôle :
- Serveur DHCP : il attribue les adresses publiques aux équipements des abonnés et envoie les informations de configuration (route par défaut… etc).
- Serveur DNS : il reçoit les requêtes de noms de la part des abonnés et y répond. Il résoud réellement les noms des machines abonnées et se contente de transmettre les autres aux serveurs DNS supérieurs (ceux de FDN pour l'instant)
Installer DNSMasq
apt-get intsall dnsmasq
Créer un fichier de conf /etc/dnsmasq.d/wifi-ilico_dhcp pour le DHCP Ilico (celui par défaut ne fait rien). (On considère que le routeur distribue les IPv4 publiques du bloc 80.67.180.0/24 et qu'il a lui-même dans ce bloc l'adresse 80.67.180.1)
# Fichier de configuration du serveur DHCP + DNS Wifi Ilico-Chanteix # ##-> DHCP : Attribue les adresses publiques des abonnes a leurs # equipements (box routeur, selon). N'alloue que des IP fixes # et publiques, en fonction de l'adresse MAC. N'alloue pas # d'adresses IP a des equipements inconnus (addr MAC). # # Ne pas attribuer d'adresse aux equipements inconnus # /!\ A desacitver (commenter) au momment du festival # si on veut distribuer de l'IP publique #dhcp-ignore=#known # On écoute que sur l'adresse IP qui est au début du bloc abonné listen-address=80.67.180.1 interface=eth0 # La plage d'IP allouee par ce routeur dhcp-range=80.67.180.2,80.67.180.254,60m log-dhcp dhcp-leasefile=/var/lib/misc/dnsmasq.leases # Les correspondances @mac <-> @IP publique sont definies dans # le fichier /etc/ethers read-ethers # ##-> DNS : Fait office de serveur DNS (relaie vers les DNS FDN) # Garde les reponses en cache pour accelerer les suivantes. # Ne transfere pas les requetes DNS incompletes #domain-needed # Ne transfere pas les requetes reverse-DNS sur des adresses privees. #bogus-priv # les abonnes sont localement accessibles par # <nom_equipement>.abo.wifi.ilico.fr domain-suffix=abo.wifi.ilico.fr # Taille du cache DNS cache-size=256 port=53
C'est le fichier ethers qui contient les associations @MAC ↔ @IP. On peut le remplir initialement avec une ligne prête pour chaque IP publique que le routeur est censé distribuer. Par exemple, si le routeur distribue 80.67.180.0/24 et que les IP 80.67.180.2-80.67.180.42 sont pour les abonnés, on peut préparer /etc/ethers comme suit :
# Pour ajouter un abonne, renseigner le commentaire et l'adresse MAC et # décommenter la ligne contenant l'adresse MAC. # Utilisé par dnsmasq (/etc/dnsmasq.d/) # Pour voir les baux DHCP en cours : cat /var/lib/misc/dnsmasq.leases # dnsmaq est logué dans /var/log/dnsmasq #------------------------------------------------------------- # MARQUE MODEL de l'équipement (type d'équipementà - Nom Prenom Abonné # 00:00:00:00:00:00 80.67.180.XX # XXXXX YYYYYY (serveur Debian) - Jhon Doe 00:f0:63:e7:aF:ff 80.67.180.2 # TP LINK TL-WR741ND (routeur wifi) - Richard Matthew Stallman 00:2d:84:88:ac:a3 80.67.180.3 # TP LINK TL-WR741ND (routeur wifi) - Anakin Skywalker a0:f3:c1:67:52:f9 80.67.180.4 # [...] # LINKSYS WRT54GL (routeur wifi) - Douglas Adams 10:e1:c0:8c:02:28 80.67.180.42 # ect.
… Puis redémarrer
/etc/init.d/dnsmasq restart
Il suffira de renseigner et décommenter une ligne pour ajouter les abonnés lors de la configuration du matériel pour un nouvel abonné.
Routage inter-routeur
Il serait dommage de faire passer les paquets échangés entre les abonnés du reseau wifi par internet. On met donc en place un routage entre les antennes des abonnés. En théorie, il faudrait mettre en place des IP publiques pour le routage, mais malheureusement nous n'en avons pas assez. Nous utiliserons donc le réseau en 10.42 pour le routage.
ip route add 80.67.180.0/24 via 10.42.1.1
Ajout des routes au démarrage de l'interface
Ajout dans la conf de /etc/network/interfaces (pour que les routes soient effectives au demarrage du routeur)
# Ajout des routes au démarrage de l'interface (Routage inter-routeur) post-up ip route add 80.67.180.0/24 via 10.42.1.1 # La route sera définie dès que l'interface sera up
Connectiivité IPv6
Ressources et modèle d'adressage
Sur chaque ligne ADSL est routé par FDN un bloc IPv6 en /48. On veut redistribuer à chaque abonné un /56.
En pratique, l'abonné a donc la possibilité de définir 256 réseaux locaux /64 (taille standard) chez lui. Autrement dit chaque abonné a sa disposition 256 x 2^64 (4,722366483 trilliards) adresses Ipv6 !
Exemple avec 1 routeur sur lequel sont reliées 2 box abonnés.
.-,( ),-. .-( )-. ( FDN -> internet ) '-( ).-' '-.( ).-' | |route 2001:910:111e::/48 < (1*) | _____v____ ROUTEUR MIASSOU [_...__...°] / \ / \ BACKBONE WIFI 5GHz / \ < (2*) (transparent L2) / \ / \ / \ /route \route /80.67.180.5 \80.67.180.8 /2001:910:111e:500::/56 \2001:910:111e:800::/56 / \ / \ v v BOX ABONNES |_|_| Distribue en autoconf |_|_| [____°]2001:910:111e:501::/64 [____°] / \ / \ / \ < (3*) ____v v____ MACHINES FINALES | | | | (PC,smartphones) |____| |____| /::::/ /::::/ 2001:910:111e:501: 2001:910:111e:501: c2e7:65ff:fb4e:456b/64 f65e:3cff:feb4:613c/64
Calcul des IPv6
Une adresse IPv6 est découpée, pour Ilico, de la manière suivante :
Le préfixe ammené sur chaque routeur par Gitoyen/FDN <préfixe abonné> f(IPv4) laissé à l'abonné |-------------------------------------------------------|-------------------------|---------------------------------------------| 48 bits 8 bits 72 bits |-------------------------------------------------------------------------------------------------------------------------------| Adresse IPv6 128 bits
On calcule le numéro du bloc IPv6 de chaque abonné en fonction de son IPv4.
Le bloc IPv6 est calculé depuis l'adresse IPv4 de l'abonné. Si, l'abonné a reçu l'adresse A.B.C.D. Son identifiant sur 8 bits sera D.
Exemple
- Un routeur Rhizome gère les ressources suivantes :
- 2001:910:111e::/48
- 1.2.3.0/24
- Un abonné Ilico reçoit l'adresse 1.2.3.4
Le bloc délégué à l'abonné sera donc 2001:910:111e:0400::/56
Configuration des routes et adresses
L'objectif ici est de rester dans une facilité que nous avons actuellement avec la configuration IPv4 : les box sont interchangeables et ne possèdent aucune configuration statique spécifique à un routeur en particulier (ce qui permet de déplacer/remplacer les box facilement). Doivent donc être configurés automatiquement :
- Le bloc attribué à la box
- La route par défaut vers internet
- Les serveurs DNS
En IPv6, l'autoconfiguration sans état est le maitre mot… Cependant il existe un protocole DHCPv6 pouvant réaliser de l'attribution de préfixes (blocs) et d'adresses.
Attribution d'adresse | Délégation de préfixe (bloc) | Anonce de route par défaut1) | |
---|---|---|---|
Autoconfiguration IPv6 | ✔ 2) | ✔ | ✘ |
DHCPv6 | ✔ 3) | ✘ | ✔ |
Si on veut faire de la délégation de préfixe, il nous faut soit utiliser une configuration statique soit utiliser l'autoconfiguration et DHCPv6. C'est ce que nous faisons.
Assignation d'une adresse à l'interface
On assigne une adresse simplement à l'interface eth0 (côté abonné). On utilise l'adresse IPv6-subnet-anycast.
Par exemple, pour le bloc 2001:910:111e:800::/56. Il s'agit de l'adresse 2001:910:111e:800::. En IPv4, utiliser la zéroième adresse d'un bloc est interdit. En IPv6. C'est une adresse particulière anycast : elle peut-être attribuée à plusieurs machines : l'ensemble des routeurs du bloc concerné.
- /etc/network/interfaces (extrait)
# Reseau abonnes IPv6 iface eth0 inet6 static address 2001:910:111e:: netmask 48 # Configuration du pare-feu pre-up ip6tables-restore < /etc/ip6tables.up.rules # ipv6 post-up IPv6_routes --enable # On crée les routes après que l'interface ait eu son IP
On redémarre l'interface :
ifdown eth0 ; ifup eth0
Réception du préfixe via PPP
Il faut négocier le préfixe IPv6 avec IPv6CP (par défaut, PPP ne négocie qu'une adresse IPv4 avec IPCP) et son routage avec le LNS de FDN qui négocie la connexion.
Rajouter la ligne suivante en fin de fichier :
- /etc/ppp/options (extrait)
… # Support IPv6 (IPv6CP) ipv6 , …
Puis redémarrer la connexion PPP :
poff dsl-provider ; pon dsl-provider
Activation du routage
En IPv6, une machine a soit un rôle d'host, soit un rôle de routeur, selon la valeur de la variable net.ipv6.conf.all.forwarding. Avant tout, le routeur doit-être configuré, comme en IPv4 pour router les paquets IPv6 :
- /etc/sysctl.conf
net.ipv6.conf.all.forwarding=1
Puis pour recharger la conf sysctl
sysctl -p
Serveur DHCPv6 : dhcp6d
Le serveur DHCPv6 s'occupe donc
- D'attribuer son bloc à chaque box (prefix-delegation) ;
- D'attribuer une adresse à chaque routeur : l'adresse IPv6-subnet-anycast
Par exemple, pour le bloc 2001:910:111e:800::/56. Il s'agit de l'adresse 2001:910:111e:800::. En IPv4, utiliser la zéroième adresse d'un bloc est interdit. En IPv6. C'est une adresse particulière anycast : elle peut-être attribuée à plusieurs machines : l'ensemble des routeurs du bloc concerné.
Installation
On utilise le serveur WIDE-DHCPv6 du projet kame.
apt-get install wide-dhcpv6-server
Configuration
Le fichier de configuration est à créer :
- /etc/wide-dhcpv6/dhcp6s.conf
# DNS, on refile l'IP des DNS de FDN option domain-name-servers 2001:910:800::12; # Les attributions de blocs/adresses sont générées dans un fichier à part # Ce fichier est généré automatiquement par un script "genDHCPv6conf" include "/etc/wide-dhcpv6/ethers-v6";
Le fichier inclus /etc/wide-dhcpv6/ethers-v6.conf est généré par la commande “genDHCPv6conf” (disponible dans /opt/ilico-sysadmin/script/router/). Il est de la syntaxe suivante :
host 80.67.180.3 { duid 00:03:00:06:00:18:84:88:ac:63; prefix 2001:910:111e:300::/56 infinity; address 2001:910:111e:300:: infinity; };
Une convention (utilisée pour nous) est de la dériver de l'adresse MAC ex : MAC 18:84:88:ac:63 → DUID 00:03:00:06:18:84:88:ac:63. 4).
On peut aussi bien entendu choisir des DUID arbitraires.
# Mise à jour de la configuration de DHCPv6 :
genDHCPv6conf
service wide-dhcpv6-server restart
Démon d'autoconfiguration (radvd)
Le démon radvd installé sur le routeur a pour but de distribuer la route par défaut. Et c'est tout !
Installation
apt-get install radvd
Configuration
Le fichier de configuration est simple :
- /etc/radvd.conf
interface eth0 { # On envoie des RA (Router-Announce) en multicast AdvSendAdvert on; # Les RA sont envoyées avec une période comprise entre 3 et 5 secondes. MaxRtrAdvInterval 5; MinRtrAdvInterval 3; AdvDefaultLifetime 60; };
Dans notre fonctionnement, la box ne demande pas explicitement d'annonce de routeur, elle attend une annonce de la part du routeur qui broadcast périodiquement sa route. Aussi, on force des délais assez courts dans le fichiers de configuration précédent..
On redémarre le service :
service radvd restart
Firewall
Les règles de firewall sont les mêmes que pourla configuration IPv4.
- /etc/ip6tables.up.rules
# /etc/ip6tables.up.rules # Script qui démarre les règles de filtrage IPv6 # Formation Debian GNU/Linux par Alexis de Lattre # http://formation-debian.via.ecp.fr/ # iptables-restore(8) remet implicitement à zéro toutes les règles # Les instructions qui suivent concernent la table « filter », # c'est-à-dire... le filtrage. *filter ######################### # Politiques par défaut # ######################### # Les politiques par défaut déterminent le devenir d'un paquet auquel # aucune règle spécifique ne s'applique. # Les connexions entrantes sont bloquées par défaut -P INPUT DROP # Les connexions destinées à être routées sont refusées par défaut -P FORWARD DROP # Les connexions sortantes sont acceptées par défaut -P OUTPUT ACCEPT ###################### # Règles de filtrage # ###################### # Nous précisons ici des règles spécifiques pour les paquets vérifiant # certaines conditions. # Pas de filtrage sur l'interface de "loopback" -A INPUT -i lo -j ACCEPT ## Règles relatives au routage ## -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i eth0 --source 2001:910:111e::/48 -j ACCEPT -A FORWARD --destination 2001:910:111e::/48 -j ACCEPT ## Règles relatives aux services ## # Accepter le protocole ICMPv6 (notamment le ping) -A INPUT -p icmpv6 -j ACCEPT # Accepter les packets entrants relatifs à des connexions déjà # établies : cela va plus vite que de devoir réexaminer toutes # les règles pour chaque paquet. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Accepter SSH de partout -A INPUT -p tcp --dport ssh -j ACCEPT -A INPUT -p tcp --dport http -j ACCEPT # Interface aircontrol en HTTPS -A INPUT -p tcp --dport 9443 -j ACCEPT -A INPUT -p tcp --dport 9080 -j ACCEPT # Webservices Ilico -A INPUT -p tcp --dport 8080 -j ACCEPT # Accepter DNS depuis les IPs abonnés Ilico -A INPUT -i eth0 -p tcp --dport domain --source 2001:910:111e::/48 -j ACCEPT -A INPUT -i eth0 -p udp --dport domain --source 2001:910:111e::/48 -j ACCEPT # Accepter les requêtes/réponses DHCPv6 -A INPUT -i eth0 -p udp --dport dhcpv6-server --sport dhcpv6-client -j ACCEPT COMMIT
Comme pour IPv4, on charge ces règles au démarrage de l'interface :
- /etc/network/interfaces (extrait)
… # Reseau abonnes IPv6 iface eth0:abo6 inet6 static address 2001:910:111e:: netmask 48 # Configuration du pare-feu pour l'IPv6 pre-up ip6tables-restore < /etc/ip6tables.up.rules # ipv6 …
Et pour les activer immédiatement (sans redémarrer) :
sudo iptables-apply /etc/ip6tables.up.rules
Routage des préfixes abonnés
On a la route par défaut de la box vers le reste d'internet. Reste l'autre partie du routage : du routeur vers chaque box. Il faut indiquer vers quel routeur envoyé les paquets destinés à tel ou tel préfixe /56. Cette partie n'est pas automatisée par la prefix-delegation.
Il faut donc générer un fichier de règles de routages à appliquer.
Le script est “IPv6_routes”. Pour activer les routes, on fait “IPv6_routes –enable”.
Le script active les routes. On peut verifier la prise en compte des routes par la comande :
route -A inet6
root@miassou:~# route -A inet6 Table de routage IPv6 du noyau Destination Next Hop Flag Met Ref Use If 2001:910:111e:200::/56 2001:910:111e:200:: UG 1024 0 0 eth0 2001:910:111e:300::/56 2001:910:111e:300:: UG 1024 0 0 eth0 2001:910:111e:400::/56 2001:910:111e:400:: UG 1024 0 0 eth0 2001:910:111e:500::/56 2001:910:111e:500:: UG 1024 0 0 eth0 2001:910:111e:600::/56 2001:910:111e:600:: UG 1024 0 0 eth0 2001:910:111e:700::/56 2001:910:111e:700:: UG 1024 0 0 eth0 2001:910:111e:800::/56 2001:910:111e:800:: UG 1024 0 0 eth0 2001:910:111e:a00::/56 2001:910:111e:a00:: UG 1024 0 0 eth0 2001:910:111e::/48 :: U 1024 0 8 eth0 fe80::/64 :: U 256 0 0 eth1 fe80::/64 :: U 256 0 0 eth0 fe80::/64 :: U 256 0 0 ppp0 fe80::/10 :: U 1 0 0 ppp0 fe80::/10 :: U 256 0 0 ppp0 ::/0 :: U 1024 0 0 ppp0 ::/0 :: !n -1 1 24251 lo ::1/128 :: Un 0 1 7568 lo 2001:910:111e::/128 :: Un 0 1 94 lo fe80::/128 :: Un 0 1 0 lo fe80::/128 :: Un 0 1 0 lo fe80::/128 :: Un 0 1 0 lo fe80::225:22ff:fee4:6feb/128 :: Un 0 1 0 lo fe80::5043:b11e:0:0/128 :: Un 0 1 0 lo fe80::fad1:11ff:fe10:9001/128 :: Un 0 1 1346 lo ff00::/8 :: U 256 0 0 eth1 ff00::/8 :: U 256 0 0 eth0 ff00::/8 :: U 256 0 0 ppp0 ::/0 :: !n -1 1 24251 lo
Ne pas oublier de le rendre exécutable
De même, il faut indiquer que la route par défaut est ppp0 :
echo '#!/bin/bash' > /etc/ppp/ipv6-up.d/01-enable_ipv6_route echo 'ip -6 route add default dev ppp0' >> /etc/ppp/ipv6-up.d/01-enable_ipv6_route echo 'exit 0' >> /etc/ppp/ipv6-up.d/01-enable_ipv6_route chmod +x /etc/ppp/ipv6-up.d/01-enable_ipv6_route
Redémarrer la connexion pour que la route soit activée ou tapez “ip -6 route add default dev ppp0”.
Nameserver
À ce niveau de la configuration, le ping vers une IPv6 devrait fonctionner (ex: “ping6 2001:910:800::12”). Par contre, les DNS ne fonctionnent pas encore (ping6 google.com ne fonctionne pas).
On ajoute donc à /etc/resolv.conf :
- /etc/resolv.conf
... # IPv6 nameserver 2001:910:800::12 # Serveur DNS IPv6 de FDN
Vérification
Pour faire des tests, on peut vérifier que la table de routage IPv6 est bonne :
ip -6 route
elle doit ressembler à :
root@miassou:~# ip -6 route 2001:910:111e:200::/56 via 2001:910:111e:200:: dev eth0 metric 1024 2001:910:111e:300::/56 via 2001:910:111e:300:: dev eth0 metric 1024 2001:910:111e:400::/56 via 2001:910:111e:400:: dev eth0 metric 1024 2001:910:111e:500::/56 via 2001:910:111e:500:: dev eth0 metric 1024 2001:910:111e:600::/56 via 2001:910:111e:600:: dev eth0 metric 1024 2001:910:111e:700::/56 via 2001:910:111e:700:: dev eth0 metric 1024 2001:910:111e:800::/56 via 2001:910:111e:800:: dev eth0 metric 1024 2001:910:111e:a00::/56 via 2001:910:111e:a00:: dev eth0 metric 1024 2001:910:111e::/48 dev eth0 metric 1024 fe80::/64 dev eth1 proto kernel metric 256 fe80::/64 dev eth0 proto kernel metric 256 fe80::/64 dev ppp0 proto kernel metric 256 fe80::/10 dev ppp0 metric 1 fe80::/10 dev ppp0 proto kernel metric 256 default dev ppp0 metric 1024
Ping d'une IP:
ping6 2001:910:800::12 # dns fdn
Ping & résolution DNS:
ping6 google.com
Se faire féliciter par Google : http://ipv6test.google.com/