technique:serveurs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 13:58] – [Routage inter-routeur] gtomtechnique: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'adressage utilisé par Ilico de manière globale, voir [[technique:adressage|adressage]] 
- 
-La configuration du routage IPv6 est traitée dans la seconde partie du document. 
- 
-<note> 
-L'ensemble de cette documentation est reprise de celle de [[http://doc.rhizome-fai.net |Rhizome]] disponible sous licence  
-[[https://creativecommons.org/licenses/by-nc-sa/3.0/|Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)]]. Merci à eux pour le travail et le partage =)</note> 
- 
- 
----- 
- 
-==== 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 
- 
-<code> 
-pppoeconf 
-</code> 
- 
-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… 
-<code> 
-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 
-</code> 
- 
-Reste à permettre aux abonnés d'être routés par cette interface. 
- 
-==== Configuration réseau complète ==== 
- 
-Fichier **/etc/network/interfaces** 
-<code> 
-# 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 
- 
- 
-</code> 
- 
-==== 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 Rhizome vont ressembler à ça (de manière simplifiée):  
-<code> 
-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 Rhizome (Access-points) 
-default            ppp0   # Route par défaut : le reste d'internet 
-</code> 
- 
-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 
-<code> 
-sysctl -p 
-</code> 
- 
-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. 
- 
-<code> 
-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  
-</code> 
- 
-==== 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:// 
-<code> 
-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 
- 
-</code> 
- 
-La configuration IPTables est la suivante 
- 
-/etc/iptables.up.rules 
-<code> 
-# /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 
-</code> 
- 
-Il est préférable de tester les règles avant de les appliquer : 
-<code> 
-iptables-apply <fichier-de-règles> 
-</code> 
-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"//). 
- 
-<note important>Attention à ne placer dans le fichier /etc/iptables.up.rules qu'un jeu de règles fonctionnel et testé sous peine de surprise au prochain reboot…</note> 
- 
-==== 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://fr.wikipedia.org/wiki/Domain_Name_System|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 
-<code> 
-apt-get intsall dnsmasq 
-</code> 
- 
-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) 
-<code> 
-# 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 
-</code> 
- 
-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 :  
- 
-<code> 
-# 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. 
- 
-</code> 
- 
-… Puis redémarrer 
-<code> 
-/etc/init.d/dnsmasq restart 
-</code> 
- 
- 
-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. 
- 
-<code> 
-ip route add 80.67.180.0/24 via 10.42.1.1 
-</code> 
- 
-=== 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) 
-<code> 
-# 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 
- 
-</code> 
  
  • technique/serveurs.1385557087.txt.gz
  • Dernière modification : 2013/11/27 13:58
  • de gtom