no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | technique:serveurs:miassou [2017/07/17 11:39] (Version actuelle) – créée taziden | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ===== Routeur IP Miassou ===== | ||
+ | |||
+ | Le routeur est une machine sous debian wheezy. Pour comprendre l' | ||
+ | |||
+ | La configuration du routage IPv6 est traitée dans la seconde partie du document. | ||
+ | |||
+ | < | ||
+ | L' | ||
+ | [[https:// | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== 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). | ||
+ | * Une adresse IPv4 publique est attribuée par le radius de FDN au modem (80.67.177.30/ | ||
+ | * un bloc d' | ||
+ | |||
+ | 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/ | ||
+ | * eth0:abo : réseau des IPs publiques des abonnés routés sur cette connexion ADSL (80.67.180.0/ | ||
+ | * ppp0: 80.67.177.30/ | ||
+ | * eth1:modem 192.168.1.2/ | ||
+ | |||
+ | 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: | ||
+ | * Regarder le journal PPP //plog// | ||
+ | |||
+ | À l' | ||
+ | < | ||
+ | root@miassou: | ||
+ | PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. | ||
+ | |||
+ | --- 8.8.8.8 ping statistics --- | ||
+ | 1 packets transmitted, | ||
+ | rtt min/ | ||
+ | </ | ||
+ | |||
+ | Reste à permettre aux abonnés d' | ||
+ | |||
+ | ==== Configuration réseau complète ==== | ||
+ | |||
+ | Fichier **/ | ||
+ | < | ||
+ | # This file describes the network interfaces available on your system | ||
+ | # and how to activate them. For more information, | ||
+ | |||
+ | # The loopback network interface | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | # The primary network interface | ||
+ | # | ||
+ | #iface eth1 inet dhcp | ||
+ | |||
+ | # Réseau privé des points d' | ||
+ | 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' | ||
+ | # - connecte le modem au réseau FDN | ||
+ | # - crée une interface ppp0 | ||
+ | # | ||
+ | auto dsl-provider | ||
+ | iface dsl-provider inet ppp | ||
+ | pre-up / | ||
+ | provider dsl-provider | ||
+ | |||
+ | # lancement du pare-feu & du vpn au démarage | ||
+ | #openvpn work_vpn | ||
+ | pre-up iptables-restore < / | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | ==== 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, | ||
+ | < | ||
+ | 62.4.16.ZZ/ | ||
+ | 80.67.180.0/ | ||
+ | 192.168.1.0/ | ||
+ | 10.42.0.0/ | ||
+ | default | ||
+ | </ | ||
+ | |||
+ | Par défaut, le routage est désactivé sous Linux. Pour l' | ||
+ | |||
+ | nano / | ||
+ | |||
+ | Décommenter la ligne // | ||
+ | |||
+ | Cela prendra effet au prochain reboot. Pour l' | ||
+ | < | ||
+ | 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 '' | ||
+ | |||
+ | < | ||
+ | root@miassou: | ||
+ | default dev ppp0 scope link | ||
+ | 10.42.0.0/ | ||
+ | 10.254.254.252 dev tun0 proto kernel | ||
+ | 62.4.16.41 dev ppp0 proto kernel | ||
+ | 80.67.180.0/ | ||
+ | 192.168.1.1 dev eth1 proto kernel | ||
+ | </ | ||
+ | |||
+ | ==== Pare-feu ==== | ||
+ | Le pare-feu répond à deux questions : | ||
+ | * Quels sont les paquets que l'on accepte de router (en fonction de leur source/ | ||
+ | * 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/ | ||
+ | |||
+ | Ces directives correspondent à la chaine **FORWARD** du pare-feu netfilter/ | ||
+ | |||
+ | === 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' | ||
+ | * DNS depuis l' | ||
+ | * IGMP (annonces multicast) depuis l' | ||
+ | |||
+ | Ces directives correspondent à la chaine **INPUT** du pare-feu netfilter/ | ||
+ | |||
+ | === Configuration iptables === | ||
+ | Pour simplifier la configuration d' | ||
+ | |||
+ | //Contenu du fichier / | ||
+ | < | ||
+ | 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 | ||
+ | |||
+ | / | ||
+ | < | ||
+ | # / | ||
+ | # 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' | ||
+ | -A INPUT -i lo -j ACCEPT | ||
+ | |||
+ | # Accepter de forward les paquets relatifs à une connexion existante | ||
+ | -A FORWARD -m state --state RELATED, | ||
+ | |||
+ | # Accepter de forward tout le traffic des abonnés (entrant/ | ||
+ | -A FORWARD -i eth0 --source 80.67.180.0/ | ||
+ | -A FORWARD --destination 80.67.180.0/ | ||
+ | |||
+ | # 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, | ||
+ | |||
+ | # 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/ | ||
+ | -A INPUT -i eth0 -p udp --dport domain --source 80.67.180.0/ | ||
+ | |||
+ | # Accepter les requêtes/ | ||
+ | -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/ | ||
+ | |||
+ | # Accepter les requêtes syslog | ||
+ | -A INPUT -i eth0 -p udp --dport 514 --source 80.67.180.0/ | ||
+ | |||
+ | COMMIT | ||
+ | |||
+ | |||
+ | #################### | ||
+ | # Problème de MTU… # | ||
+ | #################### | ||
+ | |||
+ | # Les instructions qui suivent concernent la table « mangle », c'est | ||
+ | # à dire l' | ||
+ | *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 < | ||
+ | </ | ||
+ | Puis tester d' | ||
+ | |||
+ | 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' | ||
+ | |||
+ | À chaque démarrage, la configuration iptables sera appliquée par la ligne que nous avions placée dans / | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | ==== 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 [[http:// | ||
+ | |||
+ | Installer DNSMasq | ||
+ | < | ||
+ | apt-get intsall dnsmasq | ||
+ | </ | ||
+ | |||
+ | Créer un fichier de conf / | ||
+ | (On considère que le routeur distribue les IPv4 publiques du bloc 80.67.180.0/ | ||
+ | < | ||
+ | # Fichier de configuration du serveur DHCP + DNS Wifi Ilico-Chanteix | ||
+ | # | ||
+ | ##-> DHCP : Attribue les adresses publiques des abonnes a leurs | ||
+ | # | ||
+ | # et publiques, en fonction de l' | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # Ne pas attribuer d' | ||
+ | # /!\ A desacitver (commenter) au momment du festival | ||
+ | # si on veut distribuer de l'IP publique | ||
+ | |||
+ | # | ||
+ | |||
+ | # On écoute que sur l' | ||
+ | listen-address=80.67.180.1 | ||
+ | interface=eth0 | ||
+ | |||
+ | # La plage d'IP allouee par ce routeur | ||
+ | dhcp-range=80.67.180.2, | ||
+ | log-dhcp | ||
+ | dhcp-leasefile=/ | ||
+ | |||
+ | |||
+ | # 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 | ||
+ | # | ||
+ | |||
+ | # Ne transfere pas les requetes reverse-DNS sur des adresses privees. | ||
+ | #bogus-priv | ||
+ | |||
+ | # les abonnes sont localement accessibles par | ||
+ | # < | ||
+ | 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/ | ||
+ | |||
+ | < | ||
+ | # Pour ajouter un abonne, renseigner le commentaire et l' | ||
+ | # décommenter la ligne contenant l' | ||
+ | # Utilisé par dnsmasq (/ | ||
+ | |||
+ | # Pour voir les baux DHCP en cours : cat / | ||
+ | # dnsmaq est logué dans / | ||
+ | |||
+ | # | ||
+ | |||
+ | # MARQUE MODEL de l' | ||
+ | # 00: | ||
+ | |||
+ | # XXXXX YYYYYY (serveur Debian) - Jhon Doe | ||
+ | 00: | ||
+ | |||
+ | # TP LINK TL-WR741ND (routeur wifi) - Richard Matthew Stallman | ||
+ | 00: | ||
+ | |||
+ | # TP LINK TL-WR741ND (routeur wifi) - Anakin Skywalker | ||
+ | a0: | ||
+ | |||
+ | # [...] | ||
+ | |||
+ | # LINKSYS WRT54GL (routeur wifi) - Douglas Adams | ||
+ | 10: | ||
+ | |||
+ | # ect. | ||
+ | |||
+ | </ | ||
+ | |||
+ | … Puis redémarrer | ||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | |||
+ | 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/ | ||
+ | </ | ||
+ | |||
+ | === Ajout des routes au démarrage de l' | ||
+ | |||
+ | Ajout dans la conf de / | ||
+ | < | ||
+ | # Ajout des routes au démarrage de l' | ||
+ | post-up ip route add 80.67.180.0/ | ||
+ | # La route sera définie dès que l' | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== 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:// | ||