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 | |||
| technique:serveurs [2015/01/17 17:31] – silentt | technique:serveurs [Date inconnue] (Version actuelle) – supprimée - modification externe (Date inconnue) 127.0.0.1 | ||
|---|---|---|---|
| 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:// | ||