Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
technique:serveurs [2013/11/27 13:58] – [Routage inter-routeur] gtom | technique:serveurs [2015/01/17 18:31] – silentt | ||
---|---|---|---|
Ligne 122: | Ligne 122: | ||
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. | 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, | + | Typiquement, |
< | < | ||
62.4.16.ZZ/ | 62.4.16.ZZ/ | ||
80.67.180.0/ | 80.67.180.0/ | ||
192.168.1.0/ | 192.168.1.0/ | ||
- | 10.42.0.0/ | + | 10.42.0.0/ |
default | default | ||
</ | </ | ||
Ligne 421: | Ligne 421: | ||
</ | </ | ||
+ | |||
+ | ==== Connectiivité IPv6 ==== | ||
+ | |||
+ | < | ||
+ | [[https:// | ||
+ | |||
+ | |||
+ | === Ressources et modèle d' | ||
+ | Sur chaque ligne ADSL est routé par FDN un bloc IPv6 en /48. On veut redistribuer à chaque abonné un /56. | ||
+ | |||
+ | En pratique, l' | ||
+ | |||
+ | <note tip>**A voir: **Nos amis de [[http:// | ||
+ | |||
+ | |||
+ | Exemple avec 1 routeur sur lequel sont reliées 2 box abonnés. | ||
+ | < | ||
+ | |||
+ | | ||
+ | .-( )-. | ||
+ | ( FDN -> internet ) | ||
+ | ' | ||
+ | '-.( ).-' | ||
+ | | | ||
+ | |route 2001: | ||
+ | | | ||
+ | | ||
+ | | ||
+ | / \ | ||
+ | / | ||
+ | BACKBONE WIFI 5GHz / | ||
+ | (transparent L2) / | ||
+ | / \ | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / \ | ||
+ | | ||
+ | BOX ABONNES | ||
+ | | ||
+ | / | ||
+ | / \ | ||
+ | / | ||
+ | ____v v____ | ||
+ | | ||
+ | | ||
+ | /::::/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | === 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/ | ||
+ | |-------------------------------------------------------|-------------------------|---------------------------------------------| | ||
+ | 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' | ||
+ | <note warning> | ||
+ | </ | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | * Un routeur Rhizome gère les ressources suivantes | ||
+ | *// 2001: | ||
+ | * // | ||
+ | * Un abonné Ilico reçoit l' | ||
+ | |||
+ | Le bloc délégué à l' | ||
+ | |||
+ | |||
+ | === Configuration des routes et adresses === | ||
+ | |||
+ | L' | ||
+ | |||
+ | * Le bloc attribué à la box | ||
+ | * La route par défaut vers internet | ||
+ | * Les serveurs DNS | ||
+ | |||
+ | En IPv6, l' | ||
+ | |||
+ | | ^ Attribution d' | ||
+ | ^ Autoconfiguration IPv6 | ✔ ((calculé depuis l' | ||
+ | ^ DHCPv6 | ✔ ((aléatoire, | ||
+ | |||
+ | |||
+ | |||
+ | Si on veut faire de la délégation de préfixe, il nous faut soit utiliser une configuration statique soit **utiliser l' | ||
+ | |||
+ | |||
+ | === Assignation d'une adresse à l' | ||
+ | |||
+ | On assigne une adresse simplement à l' | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | Par exemple, pour le bloc // | ||
+ | |||
+ | <file conf / | ||
+ | # Reseau abonnes IPv6 | ||
+ | iface eth0 inet6 static | ||
+ | address 2001: | ||
+ | netmask 48 | ||
+ | # Configuration du pare-feu | ||
+ | pre-up ip6tables-restore < / | ||
+ | post-up IPv6_routes --enable # On crée les routes après que l' | ||
+ | |||
+ | </ | ||
+ | |||
+ | On redémarre l' | ||
+ | <code bash> | ||
+ | ifdown eth0 ; ifup eth0 | ||
+ | </ | ||
+ | |||
+ | === Réception du préfixe via PPP === | ||
+ | Il faut négocier le préfixe IPv6 avec [[http:// | ||
+ | |||
+ | Rajouter la ligne suivante en fin de fichier : | ||
+ | <file conf / | ||
+ | … | ||
+ | # 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'// | ||
+ | Avant tout, le routeur doit-être configuré, comme en IPv4 pour router les paquets IPv6 : | ||
+ | |||
+ | <file conf / | ||
+ | net.ipv6.conf.all.forwarding=1 | ||
+ | </ | ||
+ | |||
+ | Puis pour recharger la conf sysctl | ||
+ | |||
+ | <code bash> | ||
+ | sysctl -p | ||
+ | </ | ||
+ | |||
+ | === Serveur DHCPv6 : dhcp6d === | ||
+ | |||
+ | Le serveur DHCPv6 s' | ||
+ | * **D' | ||
+ | * **D' | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | Par exemple, pour le bloc // | ||
+ | |||
+ | |||
+ | == Installation | ||
+ | On utilise le serveur WIDE-DHCPv6 du projet [[http:// | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | == Configuration == | ||
+ | Le fichier de configuration est à créer : | ||
+ | |||
+ | <file bash / | ||
+ | # DNS, on refile l'IP des DNS de FDN | ||
+ | option domain-name-servers 2001: | ||
+ | |||
+ | # Les attributions de blocs/ | ||
+ | # Ce fichier est généré automatiquement par un script " | ||
+ | include "/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Le fichier inclus /// | ||
+ | |||
+ | <file / | ||
+ | host 80.67.180.3 { | ||
+ | duid 00: | ||
+ | prefix 2001: | ||
+ | address 2001: | ||
+ | |||
+ | }; | ||
+ | </ | ||
+ | |||
+ | <note tip>Le [[http:// | ||
+ | |||
+ | Une convention (utilisée pour nous) est de la dériver de l' | ||
+ | |||
+ | On peut aussi bien entendu choisir des DUID arbitraires. | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | # Mise à jour de la configuration de DHCPv6 : | ||
+ | genDHCPv6conf | ||
+ | service wide-dhcpv6-server restart | ||
+ | </ | ||
+ | |||
+ | === Démon d' | ||
+ | |||
+ | Le démon //radvd// installé sur le routeur a pour but de **distribuer la route par défaut**. Et c'est tout ! | ||
+ | === Installation === | ||
+ | <code bash> | ||
+ | apt-get install radvd | ||
+ | </ | ||
+ | |||
+ | == Configuration == | ||
+ | |||
+ | Le fichier de configuration est simple : | ||
+ | |||
+ | <file 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, | ||
+ | |||
+ | On redémarre le service : | ||
+ | <code bash> | ||
+ | service radvd restart | ||
+ | </ | ||
+ | |||
+ | === Firewall === | ||
+ | Les règles de firewall sont les mêmes que pourla configuration IPv4. | ||
+ | |||
+ | <file bash / | ||
+ | # / | ||
+ | # Script qui démarre les règles de filtrage IPv6 | ||
+ | # Formation Debian GNU/Linux par Alexis de Lattre | ||
+ | # http:// | ||
+ | |||
+ | # iptables-restore(8) remet implicitement à zéro toutes les règles | ||
+ | # Les instructions qui suivent concernent la table « filter », | ||
+ | # c' | ||
+ | *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' | ||
+ | |||
+ | # 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' | ||
+ | -A INPUT -i lo -j ACCEPT | ||
+ | |||
+ | ## Règles relatives au routage ## | ||
+ | -A FORWARD -m state --state RELATED, | ||
+ | -A FORWARD -i eth0 --source 2001: | ||
+ | -A FORWARD --destination 2001: | ||
+ | |||
+ | ## 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, | ||
+ | |||
+ | # 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: | ||
+ | -A INPUT -i eth0 -p udp --dport domain --source 2001: | ||
+ | |||
+ | # Accepter les requêtes/ | ||
+ | -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' | ||
+ | : | ||
+ | |||
+ | <file conf / | ||
+ | … | ||
+ | # Reseau abonnes IPv6 | ||
+ | iface eth0:abo6 inet6 static | ||
+ | address 2001: | ||
+ | netmask 48 | ||
+ | # Configuration du pare-feu pour l'IPv6 | ||
+ | pre-up ip6tables-restore < / | ||
+ | | ||
+ | … | ||
+ | </ | ||
+ | |||
+ | Et pour les activer immédiatement (sans redémarrer) : | ||
+ | |||
+ | < | ||
+ | sudo iptables-apply / | ||
+ | </ | ||
+ | |||
+ | === Routage des préfixes abonnés === | ||
+ | |||
+ | On a la route par défaut de la box vers le reste d' | ||
+ | |||
+ | Il faut donc générer un fichier de règles de routages à appliquer. | ||
+ | |||
+ | Le script est " | ||
+ | |||
+ | Le script active les routes. On peut verifier la prise en compte des routes par la comande : | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | root@miassou: | ||
+ | Table de routage IPv6 du noyau | ||
+ | Destination | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | fe80::/ | ||
+ | fe80::/ | ||
+ | fe80::/ | ||
+ | fe80::/ | ||
+ | fe80::/ | ||
+ | ::/0 :: | ||
+ | ::/0 :: | ||
+ | :: | ||
+ | 2001: | ||
+ | fe80::/ | ||
+ | fe80::/ | ||
+ | fe80::/ | ||
+ | fe80:: | ||
+ | fe80:: | ||
+ | fe80:: | ||
+ | ff00::/ | ||
+ | ff00::/ | ||
+ | ff00::/ | ||
+ | ::/0 :: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Ne pas oublier de le rendre exécutable | ||
+ | |||
+ | De même, il faut indiquer que la route par défaut est ppp0 : | ||
+ | |||
+ | <code bash> | ||
+ | echo '# | ||
+ | echo 'ip -6 route add default dev ppp0' >> / | ||
+ | echo 'exit 0' >> / | ||
+ | chmod +x / | ||
+ | </ | ||
+ | |||
+ | 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, | ||
+ | |||
+ | On ajoute donc à / | ||
+ | <file conf / | ||
+ | ... | ||
+ | # IPv6 | ||
+ | nameserver 2001: | ||
+ | </ | ||
+ | |||
+ | === Vérification === | ||
+ | Pour faire des tests, on peut vérifier que la table de routage IPv6 est bonne : | ||
+ | <code bash>ip -6 route</ | ||
+ | < | ||
+ | root@miassou: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | 2001: | ||
+ | fe80::/64 dev eth1 proto kernel | ||
+ | fe80::/64 dev eth0 proto kernel | ||
+ | fe80::/64 dev ppp0 proto kernel | ||
+ | fe80::/10 dev ppp0 metric 1 | ||
+ | fe80::/10 dev ppp0 proto kernel | ||
+ | default dev ppp0 metric 1024 | ||
+ | </ | ||
+ | |||
+ | Ping d'une IP: | ||
+ | <code bash> | ||
+ | ping6 2001: | ||
+ | </ | ||
+ | |||
+ | Ping & résolution DNS: | ||
+ | <code bash> | ||
+ | ping6 google.com | ||
+ | </ | ||
+ | |||
+ | Se faire féliciter par Google : | ||
+ | http:// | ||