HOWTO du routage avancé et du contrôle de trafic sous Linux

Bert Hubert

Netherlabs BV

Thomas Graf (Auteur d'une section)

Gregory Maxwell (Auteur d'une section)

Remco van Mook (Auteur d'une section)

Martijn van Oosterhout (Auteur d'une section)

Paul B. Schroeder (Auteur d'une section)

Jasper Spaans (Auteur d'une section)

Pedro Larroy (Auteur d'une section)

Laurent Foucher

Philippe Latu

Traducteur/Relecteur

Guillaume Allègre

Résumé

Une approche pratique d'iproute2, de la mise en forme du trafic et un peu de netfilter.


Table des matières

1. Dédicace
2. Introduction
2.1. Conditions de distribution et Mise en garde
2.2. Connaissances préalables
2.3. Ce que Linux peut faire pour vous
2.4. Notes diverses
2.5. Accès, CVS et propositions de mises à jour
2.6. Liste de diffusion
2.7. Plan du document
3. Introduction à iproute2
3.1. Pourquoi iproute2 ?
3.2. Un tour d'horizon d'iproute2
3.3. Prérequis
3.4. Explorer votre configuration courante
3.4.1. ip nous montre nos liens
3.4.2. ip nous montre nos adresses IP
3.4.3. ip nous montre nos routes
3.5. ARP
4. Règles - bases de données des politiques de routage
4.1. Politique de routage simple par l'adresse source
4.2. Routage avec plusieurs accès Internet/fournisseurs d'accès
4.2.1. Accès séparé
4.2.2. Balance de charge
5. GRE et autres tunnels
5.1. Quelques remarques générales à propos des tunnels :
5.2. IP dans un tunnel IP
5.3. Le tunnel GRE
5.3.1. Le tunnel IPv4
5.3.2. Le tunnel IPv6
5.4. Tunnels dans l'espace utilisateur
6. Tunnel IPv6 avec Cisco et/ou une dorsale IPv6 (6bone)
6.1. Tunnel IPv6
7. IPSec: IP sécurisé à travers Internet
7.1. Introduction sur la gestion manuelle des clés
7.2. Gestion automatique des clés
7.2.1. Théorie
7.2.2. Exemple
7.2.2.1. Problèmes et défauts connus
7.2.3. Gestion automatique des clés en utilisant les certificats X.509
7.2.3.1. Construire un certificat X.509 pour votre hôte
7.2.3.2. Configuration et lancement
7.2.3.3. Comment configurer des tunnels sécurisés
7.3. tunnels IPSec
7.4. Autre logiciel IPSec
7.5. Interopérabilité d'IPSec avec d'autres systèmes
7.5.1. Windows
7.5.2. Check Point VPN-1 NG
8. Routage multidistribution (multicast)
9. Gestionnaires de mise en file d'attente pour l'administration de la bande passante
9.1. Explication sur les files d'attente et la gestion de la mise en file d'attente
9.2. Gestionnaires de mise en file d'attente simples, sans classes
9.2.1. pfifo_fast
9.2.1.1. Paramètres & usage
9.2.2. Filtre à seau de jetons (Token Bucket Filter)
9.2.2.1. Paramètres & usage
9.2.2.2. Configuration simple
9.2.3. Mise en file d'attente stochastiquement équitable (Stochastic Fairness Queueing)
9.2.3.1. Paramètres & usage
9.2.3.2. Configuration simple
9.3. Conseils pour le choix de la file d'attente
9.4. terminologie
9.5. Gestionnaires de file d'attente basés sur les classes
9.5.1. Flux à l'intérieur des gestionnaires basés sur des classes & à l'intérieur des classes
9.5.2. La famille des gestionnaires de mise en file d'attente : racines, descripteurs, descendances et parents
9.5.2.1. Comment les filtres sont utilisés pour classifier le trafic
9.5.2.2. Comment les paquets sont retirés de la file d'attente et envoyés vers le matériel
9.5.3. Le gestionnaire de mise en file d'attente PRIO
9.5.3.1. Paramètres PRIO & usage
9.5.3.2. Configuration simple
9.5.4. Le célèbre gestionnaire de mise en file d'attente CBQ
9.5.4.1. Mise en forme CBQ en détail
9.5.4.2. Le comportement CBQ classful
9.5.4.3. Paramètres CBQ qui déterminent le partage & le prêt du lien
9.5.4.4. Configuration simple
9.5.4.5. D'autres paramètres CBQ : split & defmap
9.5.5. Seau de jetons à contrôle hiérarchique (Hierarchical Token Bucket)
9.5.5.1. Configuration simple
9.6. Classifier des paquets avec des filtres
9.6.1. Quelques exemples simples de filtrage
9.6.2. Toutes les commandes de filtres dont vous aurez normalement besoin
9.7. Le périphérique de file d'attente intermédiaire (The Intermediate queueing device (IMQ))
9.7.1. Configuration simple
10. Équilibrage de charge sur plusieurs interfaces
10.1. Avertissement
11. Netfilter et iproute - marquage de paquets
12. Filtres avancés pour la (re-)classification des paquets
12.1. Le classificateur u32
12.1.1. Le sélecteur U32
12.1.2. Sélecteurs généraux
12.1.3. Les sélecteurs spécifiques
12.2. Le classificateur route
12.3. Les filtres de réglementation (Policing filters)
12.3.1. Techniques de réglementation
12.3.1.1. Avec l'estimateur du noyau
12.3.1.2. Avec le Token Bucket Filter
12.3.2. Actions de dépassement de limite (Overlimit actions)
12.3.3. Exemples
12.4. Filtres hachés pour un filtrage massif très rapide
12.5. Filtrer le trafic IPv6
12.5.1. Comment se fait-il que ces filtres tc IPv6 ne fonctionnent pas ?
12.5.2. Marquer les paquets IPv6 en utilisant ip6tables
12.5.3. Utiliser le sélecteur u32 pour repérer le paquet IPv6
13. Paramètres réseau du noyau
13.1. Filtrage de Chemin Inverse (Reverse Path Filtering)
13.2. Configurations obscures
13.2.1. ipv4 générique
13.2.2. Configuration des périphériques
13.2.3. Politique de voisinage
13.2.4. Configuration du routage
14. Gestionnaires de mise en file d'attente avancés & moins communs
14.1. bfifo/pfifo
14.1.1. Paramètres & usage
14.2. Algorithme Clark-Shenker-Zhang (CSZ)
14.3. DSMARK
14.3.1. Introduction
14.3.2. A quoi DSMARK est-il relié ?
14.3.3. Guide des services différenciés
14.3.4. Travailler avec DSMARK
14.3.5. Comment SCH_DSMARK travaille ?
14.3.6. Le filtre TC_INDEX
14.4. Gestionnaire de mise en file d'attente d'entrée (Ingress qdisc)
14.4.1. Paramètres & usage
14.5. Random Early Detection (RED)
14.6. Generic Random Early Detection
14.7. Emulation VC/ATM
14.8. Weighted Round Robin (WRR)
15. Recettes de cuisine
15.1. Faire tourner plusieurs sites avec différentes SLA (autorisations)
15.2. Protéger votre machine des inondations SYN
15.3. Limiter le débit ICMP pour empêcher les dénis de service
15.4. Donner la priorité au trafic interactif
15.5. Cache web transparent utilisant netfilter, iproute2, ipchains et squid
15.5.1. Schéma du trafic après l'implémentation
15.6. Circonvenir aux problèmes de la découverte du MTU de chemin en configurant un MTU par routes
15.6.1. Solution
15.7. Circonvenir aux problèmes de la découverte du MTU de chemin en imposant le MSS (pour les utilisateurs de l'ADSL, du câble, de PPPoE & PPtP)
15.8. Le Conditionneur de Trafic Ultime : Faible temps de latence, Téléchargement vers l'amont et l'aval rapide
15.8.1. Pourquoi cela ne marche t-il pas bien par défaut ?
15.8.2. Le script (CBQ)
15.8.3. Le script (HTB)
15.9. Limitation du débit pour un hôte ou un masque de sous-réseau
15.10. Exemple d'une solution de traduction d'adresse avec de la QoS
15.10.1. Commençons l'optimisation de cette rare bande passante
15.10.2. Classification des paquets
15.10.3. Améliorer notre configuration
15.10.4. Rendre tout ceci actif au démarrage
16. Construire des ponts et des pseudo ponts avec du Proxy ARP
16.1. Etat des ponts et iptables
16.2. Pont et mise en forme
16.3. Pseudo-pont avec du Proxy-ARP
16.3.1. ARP & Proxy-ARP
16.3.2. Implémentez-le
17. Routage Dynamique - OSPF et BGP
17.1. Configurer OSPF avec Zebra
17.1.1. Prérequis
17.1.2. Configurer Zebra
17.1.3. Exécuter Zebra
17.2. Configurer BGP4 avec Zebra
17.2.1. schéma réseau (Exemple)
17.2.2. Configuration (Exemple)
17.2.3. Vérification de la configuration
18. Autres possibilités
19. Lectures supplémentaires
20. Remerciements