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édente | ||
technique:serveurs [2013/11/27 09:36] – [Pare-feu] gtom | 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. | ||
- | |||
- | __ | ||
- | **NOTE:**__ L' | ||
- | [[https:// | ||
- | |||
- | |||
- | ---- | ||
- | |||
- | ==== Généralités et objectif 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 importante: | ||
- | |||
- | ==== 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 / | ||
- | <code bash> | ||
- | # 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' | ||
- | |||
- | </ | ||