Manuel du projet
Transcription
Manuel du projet
PFRES : PlateForme de la spécialité RESeaux Manuel de l’utilisateur Benjamin Bachelart (mail) • Benjamin Baron (mail) Benjamin Gonzalez (mail) • Alexandre Ragaleux (mail) 2012 Table des matières 1 2 3 4 5 Description générale de la plateforme 3 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 AS 1 : Entreprise 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 AS 2 : Coeur 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4 AS 3 : Coeur 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5 AS 4 : Entreprise 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6 Câblage des équipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 7 Connexion à la plateforme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Généralités sur les équipements 24 1 Introduction sur protocoles de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2 Rapide prise en main des équipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Implémentation de fonctionnalités (routeurs) 37 1 Protocoles de routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2 MPLS (MultiProtocol Label Switching) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Implémentation de services (serveurs) 47 1 NTP (Network Time Protocol) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2 DHCP (Dynamic Host Configuration Protocol) . . . . . . . . . . . . . . . . . . . . . . . . 48 3 Serveur HTTP (Apache) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4 Serveur FTP (File Transfer Protocol) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5 DNS (Domain Name Service) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6 Supervision des équipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7 VPN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 8 IPSec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 VoIP et Qualité de service (QoS) 59 1 VoIP (Voice over IP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 2 QoS (Quality of Service) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3 Application au projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4 Montée en charge et analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 6 Troubleshooting 72 7 Bibliographie 75 2 CHAPITRE Description générale de la plateforme 1 1.1 Introduction Aperçu de l’ensemble de la plateforme AS 1 AS 2 Avocent ACS 5016 Avocent ACS 5016 1 Cisco WS-C3560-24PS PVDM 1 PVDM 0 INLINE PWR SYS OK SYS PWR AIM 1 FE 0/1 CONSOLE FE 0/0 AUX FDX 100 LINK FDX 100 LINK SLOT 3 SLOT 2 THIS SLOT ACCEPTS ONLY VICs AND WICs SLOT 1 SLOT 0 THIS SLOT ACCEPTS ONLY VICs AND WICs CF AIM 0 COMPACT FLASH DO NOT REMOVE DURING NETWORK OPERATION Cisco 2800 Series A daptive Security A ppliance STATUS ACTIVE VPN FLASH 2 3 4 5 6 7 8 9 10 11 1X 9X 11X 2X 10X 12X 12 13 14 15 16 17 18 19 Catalyst 2960 SERIES 20 Cisco WS-C2960G-24TC-L 19X 21 22 23 24 20X Cisco 2801 Cisco ASA 5510 Cisco 3825 N M E1 S L O T N M E0 S L O T 3 2 S L O T S L O T 1 0 S L O T S L O T CONSOLE GE 0/1 LINK SPD AUX SPD GE 0/0 PEP CISCO ASA 5510 series POWER SYST RPS MASTR STAT DUPLX SPEED MODE SFP LINK Cisco 3825 N M E1 3 2 S L O T S L O T 1 0 CONSOLE GE 0/1 LINK SPD AUX SPD GE 0/0 LINK PEP N M E0 SFP 15" LCD (7U) serveur1.core1 serveur1.ent1 serveur2.ent1 serveur2.core1 serveur3.ent1 KVM Switch/Button Panel gate-net.rsr.lip6.fr AS 3 AS 4 Avocent ACS 5016 HP ProCurve 2900-24G HP ProCurve 2900-24G Avocent ACS 5016 Extreme Networks x450e-24p Juniper SSG20 Juniper SSG20 Juniper J2300 Juniper J2300 PSEUDOL Juniper J4350 Juniper J4350 MEDIAL serveur1.ent2 serveur2.ent2 serveur3.ent2 Juniper J4350 Juniper J4350 3 1 1.2 Aperçu des équipements Alimentation Contrôleur Commutateur Routeur Serveur Firewall Matériel Armoire 1 Armoire 2 AS 1 (Entreprise) AS 2 (Coeur) AS 3 (Coeur) Avocent PM 1000 (Power Distribution Unit) Cyclades ACS 5000 (Advanced Console Server) 1 Cisco WS-C2960G-24TC-L 2 HP ProCurve 2900-24G 2 Cisco 3825 4 Juniper J4350 2 2 N/A N/A Téléphones IP Cisco SPA962 1 Cisco WS-C3560-24PS 1 Cisco 2801 3 1 Cisco ASA 5510 Armoire 3 Armoire 4 AS 4 (Entreprise) 1 Extreme x450e-24P 2 Juniper J2300 3 2 Juniper SSG20 Routeurs Ethernet Gigabit IEEE 802.1q VLAN IPv6 Routage IP QoS VPN Multicast MPLS Système d’exploitation Interfaces Cisco 2801 Cisco 3825 Juniper J4350 Juniper J2300 4 4 4 4 4 4 4 4 Cisco IOS 2801 v12.4(22)YB5 2 FastEthernet 4 4 4 4 4 4 4 4 Cisco IOS 3825 v12.4(22) 32 FastEthernet 4 Gigabit Ethernet 4 4 4 4 4 4 4 4 JUNOS 8.2R2.4 4 4 4 4 4 4 4 4 JUNOS 8.2R1.7 4 Gigabit Ethernet 2 FastEthernet Cisco WS-C3560-24PS Cisco WS-C2960G-24TC-L HP ProCurve 2900-24G (J9049A) Extreme Network Summit X450e-24p 4 4 4 4 4 4 4 4 Cisco IOS C3560 v12.2(25)SEB4 24 FastEthernet 2 Gigabit Ethernet 4 4 4 4 4 4 4 4 Cisco IOS C2960 v12.2(25)SEE2 24 Gigabit Ethernet 4 4 4 4 4 4 4 4 T.12.06 4 4 4 4 4 4 4 4 ExtremeWare XOS v1150b10 24 Gigabit Ethernet (10/100/1000BASE-T) Commutateurs Ethernet Gigabit IEEE 802.1q VLAN IPv6 Trunk Routage IP QoS VPN PoE Système d’exploitation Interfaces 24 Gigabit Ethernet (10/100/1000BASE-T) Firewalls IPS VPN IEEE 802.1x NAC DHCP IPv6 NAT Routage IP QoS Système d’exploitation Interfaces Cisco ASA 5510 Series Juniper SSG20 4 SSL, DTLS, IPSec 4 4 4 4 4 4 Cisco Adaptive Security Appliance Software v7.1(2) 3 FastEthernet 4 IPSec 4 4 4 4 4 4 ScreenOS v6.2.0r13.0 4 FastEthernet 4 1.3 Adressage de la plateforme Les plages d’adresses utilisées pour chaque AS sont les suivantes : Numéro de de l’AS Adresse IPv4 Adresse IPv6 AS1 AS2 AS3 AS4 VLAN 999 23.7.100.0/24 28.5.0.0/16 13.8.0.0/16 4.11.100/24 10.0.0.0/8 2a00:b82:8502::/48 2e70:13::/32 2d05:37::/32 2a00:285:42::/48 N/A Les valeurs des deux premiers octets des NetID correspondent aux différentes dates de naissances des participants du projet (c’est un bon moyen de se souvenir des anniversaires !). La valeur en décimale du troisième octet est à 100 si le réseau considéré est une entreprise et à 0 si le réseau est un FAI (dans ce cas le troisième octet fait d’ailleurs parti de l’HostId de ce réseau). Bien évidemment le découpage CIDR est utilisé pour IPv4 et les plages utilisées sont détaillés dans les présentations détaillées des AS. 1.4 Connexion à Internet (VLAN 999) Le VLAN 999 interconnecte tous les systèmes autonomes à la passerelle gate-net.rsr.lip6.fr : – Les contrôleurs de console (ACS 5016) sont interconnectés les uns aux autres via ce VLAN, – Les serveurs de tous les AS peuvent accéder à Internet en configurant le proxy HTTP. Les contrôleurs de console permettent de contrôler les équipements de chaque AS : il existe un contrôleur de console par AS. La passerelle gate-net.rsr.lip6.fr fait en effet office de proxy pour HTTP et HTTPS en utilisant Squid. Les serveurs ont alors accès à Internet sur leur Interface eth1. MGMT4 MGMT3 Serveurs AS 4 Serveurs AS 3 MGMT2 MGMT1 Serveurs AS 2 Serveurs AS 1 F IGURE 1.1 – Représentation du VLAN 999 5 gate-net 2 AS 1 : Entreprise 1 Cet AS simule une entreprise moyenne connectée à un FAI (AS 2). Cette entreprise est protégée du trafic entrant par un firewall avant que les paquets puissent atteindre l’unique gateway de l’AS. Ce routeur délimite le réseau interne de l’entreprise composé de trois PC/serveurs. AS 2 VLAN 112 23.7.100.48/29 ASA5510 VLAN 210 (géré par AS2) 28.5.254.0/30 2e70:13:254:210::/64 Catalyst 2800 VLAN 100 23.7.100.32/28 VLAN 111 23.7.100.0/27 2a00:b82:8502:112::/64 Catalyst 3560 serveur1.ent1 serveur2.ent1 serveur3.ent1 ASA5510 Catalyst 3560 serveur1.ent1 serveur2.ent1 (a) Visualisation de l’AS 1 Catalyst 2800 serveur3.ent1 (b) Administration de l’AS 1 F IGURE 1.2 – AS 1 AS 2 serveur1.ent1 serveur3.ent1 eth2 eth1 eth0 eth2 eth1 eth0 1 2 1 7 3 3 5 8 7 ASA5510 MGMT 9 eth1 eth2 210 10 11 12 9 11 13 15 17 19 21 23 100 111 112 210 AS 1 2 4 4 6 5 8 10 12 14 70 6 16 18 14 15 110 eth2 eth1 eth0 serveur2.ent1 MGMT1 20 22 24 999 999 0/0 0/1 eth0 eth1 eth2 eth3 eth4 Cisco 2800 gate-net 100 Connexion LIP6 F IGURE 1.3 – Commutateur AS 1 Switch Cisco Catalyst 3560 VLAN Interface Switch 100 N/A N/A IPv4 IPv6 23.7.100.33/28 N/A IPv4 IPv6 23.7.100.34/28 23.7.100.30/27 23.7.100.49/29 28.5.254.2/30 (AS 2) N/A Routeur Cisco Catalyst 2801 VLAN Interface Switch 100 111 112 210 fa0/0.100 fa0/0 fa0/0.112 fa0/1 19 19 19 20 6 2a00:b82:8502:112::fffe/64 N/A 2a70:13:254:210::2/64 (AS 2) Firewall Cisco ASA5510 VLAN Interface Switch 100 210 man0/0 man0/1 13 14 IPv4 IPv6 23.7.100.35/28 N/A N/A N/A IPv4 IPv6 23.7.100.36/28 23.7.100.1/27 23.7.100.50/29 10.40.130.11 N/A IPv6 autoconfiguré N/A N/A serveur1.ent1.org VLAN Interface Switch 100 111 112 999 eth2 eth0 eth0.112 eth1 1 3 3 2 Remarque. L’adresse IPv6 associée à l’interface eth0 est autoconfigurée et est la suivante : 2a00:b82:8502:112:215:17ff:fe29:e44c où 00:15:17:29:e4:4c est l’adresse MAC de l’interface eth1. serveur2.ent1.org VLAN Interface Switch 100 111 999 eth2 eth0 eth1 4 6 5 IPv4 IPv6 23.7.100.37/28 23.7.100.2/27 10.40.130.12 N/A IPv6 autoconfiguré N/A Remarque. L’adresse IPv6 associée à l’interface eth0 est autoconfigurée et est la suivante : 2a00:b82:8502:112:215:17ff:fe29:e414 où 00:15:17:29:e4:14 est l’adresse MAC de l’interface eth1. serveur3.ent1.org VLAN Interface Switch 100 111 999 eth2 eth0 eth1 7 9 8 IPv4 IPv6 23.7.100.38/28 23.7.100.3/27 10.40.130.13 N/A IPv6 autoconfiguré N/A Remarque. L’adresse IPv6 associée à l’interface eth0 est autoconfigurée et est la suivante : 2a00:b82:8502:112:215:17ff:fe29:e412 où 00:15:17:29:e4:12 est l’adresse MAC de l’interface eth1. Téléphone IP Phone SPA962 VLAN Interface Switch 112 eth0 11 IPv4 IPv6 23.7.100.51/29 N/A Mutualisation des ports sur les équipements : VLAN Routeur Cisco 2801 serveur1.ent1.org 100 111 112 210 Virtualisé fa0/0.100 Natif fa0/0 Virtualisé fa0/0.112 Dédié fa0/1 Dédié eth2 Natif eth0 Virtualisé eth0.112 – 7 Mots de passe : Equipement Login Password Accès IPv4 Avocent ACS 5000 Power Management Switch Cisco Catalyst 3560 Routeur Cisco Catalyst 2801 Firewall Cisco ASA5510 admin admin cisco cisco avocent avocent cisco cisco ssh/telnet/http telnet ssh/telnet ssh/telnet ssh/telnet ssh/console ssh/console ssh/console http http 10.40.130.10 serveur1.ent1.org serveur2.ent1.org serveur3.ent1.org Nagios Cacti N/A N/A root root root nagiosadmin admin password password password password password console 23.7.100.33/28 23.7.100.34/28 23.7.100.35/28 23.7.100.36/28 23.7.100.37/28 23.7.100.38/28 23.7.100.37/28 23.7.100.37/28 Services de l’AS 1 : Equipement Services Routeur Cisco DHCP Apache, Asterisk, iperf Apache, DHCP (VLAN 999), IPSec, Nagios/Cacti, VPN (OpenVPN) Apache, DNS, FTP (ProFTPD), NTP serveur1.ent1.org serveur2.ent1.org serveur3.ent1.org Catalyst 3560 ASA5510 111 113 1 2 serveur1.ent1 serveur3.ent1 118 116 3 4 5 6 7 8 AS 1 9 10 11 12 13 14 15 112 117 Cisco 2800 serveur2.ent1 16 119 PDU-AS1 F IGURE 1.4 – Contrôleur de console MGMT1 de l’AS 1 8 3 AS 2 : Coeur 1 L’AS 2 est un FAI connecté directement à la première entreprise (AS 1) ainsi qu’à un second FAI (AS3). Ce premier FAI est composé de deux routeurs, MIR et ISS. ISS est directement connecté à un routeur de bordure de l’AS 3 via une liaison point à point ainsi qu’à un des routeurs de l’AS 4 (la seconde entreprise). MIR est quant-à lui simplement relié à l’AS 1. Ces deux routeurs sont directement relié aux serveurs du FAI via un commutateur. AS 1 VLAN 210 28.5.254.0/30 2e70:13:254:210::/64 VLAN 222 28.5.0.0/27 2e70:13:0:222::/64 MIR serveur2.core1 VLAN 221 28.5.0.48/30 2e70:13:0:221::/64 Catalyst 2960 ISS VLAN 320 28.5.254.4/30 2e70:13:254:320::/64 VLAN 200 28.5.0.32/28 VLAN 421 28.5.254.8/30 (VLAN 420) 2e70:13:254:420::/64 AS 3 MIR serveur1.core1 serveur2.core2 Catalyst 2960 AS 4 serveur1.core1 ISS (a) Visualisation de l’AS 2 (b) Administration de l’AS 2 F IGURE 1.5 – AS 2 AS 3 MGMT2 serveur1.core1 MIR eth2 eth1 eth0 0/1 0/0 1/0 2/0 17 18 19 1 120 3 5 320 23 24 25 26 7 9 11 13 15 17 19 21 23 200 221 222 320 420 999 210 AS 2 2 4 6 8 10 12 14 16 18 20 22 24 20 21 22 13 27 28 29 30 420 210 eth2 eth1 eth0 1/1 0/1 0/0 1/0 2/0 AS 4 AS 1 ISS serveur2.core1 F IGURE 1.6 – Commutateur AS 2 Switch Cisco Catalyst 2960 VLAN Interface Switch 200 N/A N/A IPv4 IPv6 28.5.0.33/28 N/A IPv4 IPv6 28.5.0.34/28 28.5.254.1/30 28.5.0.49/30 28.5.0.29/27 N/A Cisco Catalyst 3825 (MIR) VLAN Interface Switch 200 210 221 222 Gi0/1 Gi0/0 Gi1/0 Gi2/0 11 12 13 14 9 2e70:13:254:210::1/64 2e70:13:0:221::1/64 2e70:13:0:222::fffd/64 Cisco Catalyst 3825 (ISS) VLAN Interface Switch 200 221 222 320 420 Gi0/1 Gi1/0 Gi2/0 Gi0/0 Fa1/0 17 19 20 18 16 IPv4 IPv6 28.5.0.35/28 28.5.0.50/30 28.5.0.30/27 28.5.254.5/30 28.5.254.9/30 N/A IPv4 IPv6 28.5.0.36/28 28.5.0.1/27 10.40.130.21 N/A IPv4 IPv6 28.5.0.37/28 28.5.0.2/27 10.40.130.22 N/A 2e70:13:0:221::2/64 2e70:13:0:222::fffe/64 2e70:13:254:320::1/64 2e70:13:254:420::1/64 serveur1.core1.org VLAN Interface Switch 200 222 999 eth2 eth0 eth1 1 3 2 2e70:13:0:222::1/64 N/A serveur2.core1.org VLAN Interface Switch 200 222 999 eth2 eth0 eth1 4 6 5 2e70:13:0:222::2/64 N/A Mots de passe : Equipement Avocent ACS 5000 Power Management Switch Cisco Catalyst 2960 Cisco Catalyst 3825 (MIR) Cisco Catalyst 3825 (ISS) serveur1.core1.org serveur2.core1.org Nagios Cacti Login Password Accès IPv4 admin admin cisco cisco cisco root root nagiosadmin admin avocent avocent cisco cisco cisco password password password password ssh/telnet/http telnet ssh/telnet ssh/telnet ssh/telnet ssh/console ssh/console http http 10.40.130.20 Services de l’AS 2 : Equipement Services Routeur Cisco MIR (28.5.0.29/27) DHCP Apache Apache, NTP, DNS (Cacti/Nagios) serveur1.core1.org serveur2.core1.org Catalyst 2960 ISS serveur2.core1 121 123 128 1 2 3 4 5 6 7 8 AS 2 9 10 11 12 13 122 14 15 127 16 129 serveur1.core1 PDU-AS2 MIR F IGURE 1.7 – Contrôleur de console MGMT2 de l’AS 2 10 console 28.5.0.33/28 28.5.0.34/28 28.5.0.35/28 28.5.0.36/28 28.5.0.37/28 28.5.0.37/28 28.5.0.37/28 4 AS 3 : Coeur 2 Ce second FAI est connecté à l’entreprise 2 par un premier routeur. Un second routeur est utilisé afin de relié directement le premier FAI (AS 2). Enfin un dernier routeur (routeur de cœur d’AS) est placé entre les deux routeurs de bordures, celui-ci a pour rôle de permettre aux clients d’accéder aux serveurs de ce FAI. VLAN 320 28.5.254.4/30 2e70:13:254:320::/64 VLAN 332 13.8.0.48/30 2d05:37:0:332::/64 VLAN 333 13.8.0.52/30 2d05:37:0:333::/64 VLAN 300 MEDIAL 13.8.0.32/28 VLAN 431 13.8.254.0/30 (VLAN 430) 2d05:37:254:430::/64 AS 4 AS 2 J3 J4 J4 J1 J2 ProCurve 2900 HP2 ProCurve 2900 HP1 ProCurve 2900 HP J2 VLAN 331 13.8.0.0/27 2d05:37:0:331::/64 J1 PSEUDOL PSEUDOL MEDIAL (a) Visualisation de l’AS 3 (b) Administration de l’AS 3 F IGURE 1.8 – AS 3 AS 2 PSEUDOL J1 J2 eth2 eth1 eth0 0/0 0/1 0/2 0/3 0/0 0/1 0/2 0/3 31 32 33 80 81 82 83 84 85 86 87 1 3 5 7 9 11 13 15 MGMT3 17 130 19 320 21 23 HP1 2 4 6 8 10 12 14 16 18 20 22 24 300 331 332 320 430 999 333 AS 3 1 3 5 7 9 11 13 15 17 19 21 23 HP2 2 4 6 8 10 12 14 16 18 34 35 36 88 89 90 91 92 93 94 95 eth2 eth1 eth0 0/0 0/1 0/2 0/3 0/0 0/1 0/2 0/3 J3 J4 20 22 24 430 AS 4 MEDIAL F IGURE 1.9 – Commutateur AS 3 Routeur Juniper 1 VLAN Interface Switch IPv4 IPv6 300 331 332 333 N/A ge-0/0/0 ge-0/0/3 ge-0/0/1 ge-0/0/2 lo0.0 HP1 9 HP1 12 HP1 10 HP1 11 N/A 13.8.0.35/28 13.8.0.30/27 13.8.0.49/30 13.8.0.53/30 10.255.3.1/32 N/A 2d05:37:0:331::fffe/64 2d05:37:0:332::1/64 2d05:37:0:333::1/64 N/A Routeur Juniper 2 VLAN Interface Switch IPv4 IPv6 300 332 320 N/A Ge-0/0/0 Ge-0/0/1 Ge-0/0/3 lo0.0 HP1 15 HP1 16 HP1 18 N/A 13.8.0.36/28 13.8.0.50/30 28.5.254.6/30 (AS 2) 10.255.3.2/32 N/A 11 2d05:37:0:332::2/64 2e70:13:254:320::2/64 (AS 2) N/A Routeur Juniper 4 VLAN Interface Switch IPv4 IPv6 300 333 430 N/A Ge-0/0/0 Ge-0/0/1 Ge-0/0/3 lo0.0 HP2 15 HP2 16 HP2 18 N/A 13.8.0.38/28 13.8.0.54/30 13.8.254.1/30 10.255.3.4/32 N/A 2d05:37:0:333::2/64 2d05:37:254:430::1/64 N/A medial.core2.org VLAN Interface Switch IPv4 IPv6 300 331 999 eth2 eth0 eth1 HP2 1 HP2 3 HP2 2 13.8.0.39/28 13.8.0.1/27 10.40.130.32 N/A 2d05:37:0:331::1/64 N/A pseudol.core2.org VLAN Interface Switch IPv4 IPv6 300 331 999 eth2 eth0 eth1 HP1 1 HP1 3 HP1 2 13.8.0.40/28 13.8.0.3/27 10.40.130.31 N/A 2d05:37:0:331::3/64 N/A Mots de passe : Login Password Accès IPv4 admin admin root root admin admin admin root root nagiosadmin admin avocent avocent hp hp Juniper Juniper Juniper password password password password ssh/telnet/http telnet ssh/telnet ssh/telnet ssh/telnet ssh/telnet ssh/telnet ssh/console ssh/console http http 10.40.130.30 Equipement Avocent ACS 5000 Power Management HP ProCurve 1 HP ProCurve 2 Routeur Juniper 1 Routeur Juniper 2 Routeur Juniper 4 medial.core2.org pseudol.core2.org Nagios Cacti Services de l’AS 3 : Equipement Services Routeur Juniper 1 (13.8.0.30) DHCP Apache Apache, Cacti/Nagios, DNS, NTP medial.core2.org pseudol.core2.org HP1 131 2 137 135 133 1 PSEUDOL J3 J1 3 4 5 6 7 8 AS 3 9 10 132 HP2 11 12 13 14 134 136 J2 J4 15 16 138 139 MEDIAL PDU-AS3 F IGURE 1.10 – Contrôleur de console MGMT3 de l’AS 3 12 N/A 13.8.0.33/28 13.8.0.34/28 13.8.0.35/28 13.8.0.36/28 13.8.0.38/28 13.8.0.39/28 13.8.0.40/28 13.8.0.40/28 13.8.0.40/28 Prise en compte du routeur Juniper 3 dans la topologie AS 2 VLAN 320 28.5.254.4/30 2e70:13:254:320::/64 VLAN 334 13.8.0.88/30 2d05:37:0:334::/64 VLAN 335 13.8.0.92/30 2d05:37:0:335::/64 J2 VLAN 331 13.8.0.0/27 2d05:37:0:331::/64 ProCurve 2900 HP1 J1 ProCurve 2900 HP2 J3 VLAN 333 13.8.0.84/30 2d05:37:0:333::/64 VLAN 332 13.8.0.80/30 2d05:37:0:332::/64 J4 VLAN 430 13.8.254.0/30 2d05:37:254:430::/64 PSEUDOL MEDIAL AS 4 F IGURE 1.11 – Visualisation de l’AS 3 AS 2 PSEUDOL J1 J2 eth2 eth1 eth0 0/0 0/1 0/2 0/3 0/0 0/1 0/2 0/3 31 32 33 80 81 82 83 84 85 86 87 1 3 2 1 5 4 3 2 7 6 5 4 9 8 7 6 11 10 9 8 13 12 11 10 15 14 13 12 17 16 15 14 MGMT3 19 18 17 16 21 20 19 18 34 35 36 88 89 90 91 92 93 94 95 eth2 eth1 eth0 0/0 0/1 0/2 0/3 0/0 0/1 0/2 0/3 J3 J4 320 130 23 22 21 20 24 23 22 300 331 332 333 334 335 336 320 430 999 24 430 AS 4 MEDIAL F IGURE 1.12 – Commutateur AS 3 avec Juniper 3 13 AS 3 VLAN 336 13.8.0.32/27 2d05:37:0:336::/64 5 AS 4 : Entreprise 2 L’AS 4 simule une entreprise plus importante que celle de l’AS 1 et avec des moyens financiers plus importants. Cette entreprise possède deux routeurs qui sont chacun connectés à un FAI différent afin d’améliorer la fiabilité de la connexion Internet (multi-homing). Bien évidement ces routeurs tout deux protégés par un firewall matériel. Une DMZ (DeMilitarized Zone) à été mise en place dans laquelle sont installés les serveurs publiques de l’entreprise susceptible d’être accédés depuis Internet sans entrer dans le véritable réseau de cette entreprise. Le réseau local de l’entreprise est constitué de deux serveurs/PC et d’un load balancer. Ce dernier récupère tout le trafic sortant du réseau privé et le répartit entre les deux FAI selon la charge sur leur réseau par exemple. VLAN 441 4.11.100.48/29 2a00: 285:42:441::/64 AS 2 AS 3 VLAN 421 VLAN 431 serveur3.ent2 DMZ Firewall1.ent2 VLAN 420 (géré par AS2) 28.5.254.8/30 2e70:13:0:254:420::/64 Firewall2.ent2 VLAN 430 (géré par AS3) 13.8.254.0/30 2d05:37:254:430::/64 Extreme Network J2300-1 J2300-2 VLAN 442 4.11.100.56/29 2a00:285:42:442::/64 serveur3.ent2 Load Balancer VLAN 400 4.11.100.32/28 Firewall1.ent2 VLAN 443 4.11.100.0/27 2a00:285:42:443::/64 Extreme Network VLAN 444 4.11.100.64/28 serveur1.ent2 J2300-1 serveur2.ent2 Extreme Network serveur1.ent2 (a) Visualisation de l’AS 4 serveur2.ent2 AS 2 serveur3.ent2 eth2 eth1 eth0 eth2 eth1 eth0 0/0 40 41 42 49 50 51 55 56 57 2 5 4 7 6 9 8 J2300-1 Firewall2.ent2 serveur1.ent2 3 11 10 12 46 47 48 52 53 54 0/0 0/1 0/1 13 eth2 eth1 eth0 0/2 Port0 Port1 15 14 17 16 71 420 58 59 19 18 21 20 22 140 400 441 442 443 420 421 430 431 444 999 23 60 61 24 430 Port0 Port1 0/2 AS 3 serveur2.ent2 Firewall1.ent2 MGMT4 J2300-2 F IGURE 1.14 – Commutateur AS 4 Extreme Networks Summit VLAN Interface Switch 400 N/A N/A J2300-2 serveur3.ent2 (b) Administration de l’AS 4 F IGURE 1.13 – AS 4 1 Firewall2.ent2 IPv4 IPv6 4.11.100.33/28 N/A 14 AS 4 Routeur Juniper 1 VLAN Interface Switch 400 441 442 444 420 fe-0/0/0.1 fe-0/0/1.0 fe-0/0/1.1 fe-0/0/1.2 fe-0/0/0.0 19 20 19 19 20 IPv4 IPv6 4.11.100.34/28 4.11.100.54/29 4.11.100.62/29 4.11.100.65/28 28.5.254.10/30 (AS 2) N/A IPv4 IPv6 4.11.100.35/28 4.11.100.53/29 4.11.100.61/29 13.8.254.2/30 (AS 3) N/A IPv4 IPv6 4.11.100.36/28 N/A N/A N/A N/A N/A IPv4 IPv6 4.11.100.37/28 N/A N/A N/A N/A N/A IPv4 IPv6 4.11.100.38/28 4.11.100.1/27 4.11.100.66/28 10.40.130.41 N/A IPv4 IPv6 4.11.100.39/28 4.11.100.2/27 10.40.130.42 N/A IPv4 IPv6 4.11.100.40/28 4.11.100.49/29 4.11.100.57/29 4.11.100.3/27 10.40.130.43 N/A 2a00:285:42:441::fffe/64 2a00:285:42:442::fffe/64 N/A 2e70:13:254:420::2/64 Routeur Juniper 2 VLAN Interface Switch 400 441 442 430 fe-0/0/0.1 fe-0/0/1.0 fe-0/0/1.1 fe-0/0/0.0 21 22 22 21 2a00:285:42:441::fffd/64 2a00:285:42:442::fffd/64 2d05:37:254:430::2/64 Firewall Juniper 1 VLAN Interface Switch 400 420 421 eth0 eth1 eth2 10 11 12 Firewall Juniper 2 VLAN Interface Switch 400 430 431 eth0 eth1 eth2 13 14 15 serveur1.ent2.org VLAN Interface Switch 400 443 444 999 eth2 eth0 eth0.444 eth1 1 3 3 2 2a00:285:42:443::1/64 N/A N/A serveur2.ent2.org VLAN Interface Switch 400 443 999 eth2 eth0 eth1 4 6 5 2a00:285:42:443::2/64 N/A serveur3.ent2.org VLAN Interface Switch 400 441 442 443 999 eth2.400 eth2.441 eth1 eth0 eth1.999 7 7 8 9 9 15 2a00:285:42:441::1/64 2a00:285:42:442::1/64 2a00:285:42:443::3/64 N/A Téléphone IP Phone SPA962 VLAN Interface Switch 444 eth0 16 IPv4 IPv6 4.11.100.67/28 N/A Mutualisation des ports sur les équipements concernés : VLAN Routeur Juniper 1 Routeur Juniper 2 serveur1 serveur3 400 441 442 443 444 420 430 Virtualisé 0.1 Natif 1.0 Virtualisé 1.1 – Virtualisé 1.2 Natif 0.0 – Virtualisé 0.1 Natif 1.0 Virtualisé 1.1 – – – Natif 0.0 Dédié eth2 – – Natif eth0 Virtualisé eth0.444 – – Virtualisé eth2.400 Natif eth2 (DMZ) Dédié eth1 (LB) Dédié eth0 (LB) – – – Mots de passe : Equipement Avocent ACS 5000 Power Management Extreme Networks Summit Routeur Juniper 1 Routeur Juniper 2 Firewall Juniper 1 Firewall Juniper 2 serveur1.ent2.org serveur2.ent2.org serveur3.ent2.org Nagios Cacti Login Password Accès IPv4 admin admin admin root root netscreen netscreen root root root nagiosadmin admin avocent avocent ssh/telnet/http telnet ssh/telnet ssh/telnet ssh/telnet ssh/telnet ssh/telnet ssh/console ssh/console ssh/console http http 10.40.130.40 N/A Juniper Juniper netscreen netscreen password password password password password Services de l’AS 4 : Equipement Services serveur1.ent2.org serveur2.ent2.org serveur3.ent2.org Apache, Asterisk, IPSec, VPN (OpenVPN) Apache, Nagios/Cacti Apache, DHCP, DNS, FTP (ProFTPD), iperf, NTP Summit J2300-2 141 143 1 2 Firewall2.ent2 serveur2.ent2 147 145 3 4 5 6 7 8 AS 4 9 10 142 J2300-1 11 12 13 144 14 146 15 16 148 149 Firewall1.ent2 serveur1.ent2 serveur3.ent2 PDU-AS3 F IGURE 1.15 – Contrôleur de console MGMT4 de l’AS 4 16 console 4.11.100.33/28 4.11.100.34/28 4.11.100.35/28 4.11.100.36/28 4.11.100.37/28 4.11.100.38/28 4.11.100.39/28 4.11.100.40/28 4.11.100.40/28 4.11.100.40/28 6 Câblage des équipements Câble AS 1 2 3 4 5 6 7 8 9 10 11 12 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 13 31 32 33 34 35 36 40 41 42 46 47 48 49 50 51 52 53 54 55 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 Port source Port destination Adaptateur Couleur Droit C3560 port 1 C3560 port 2 C3560 port 3 C3560 port 4 C3560 port 5 C3560 port 6 C3560 port 7 C3560 port 8 C3560 port 9 C3560 port 13 C3560 port 14 C3560 port 15 C3560 port 19 C3560 port 20 C2960 port 1 C2960 port 2 C2960 port 3 C2960 port 4 C2960 port 5 C2960 port 6 C2960 port 11 C2960 port 12 C2960 port 13 C2960 port 14 C2960 port 17 C2960 port 18 C2960 port 19 C2960 port 20 C2960 port 16 HP1 port 1 HP1 port 2 HP1 port 3 HP2 port 1 HP2 port 2 HP2 port 3 Summit port 1 Summit port 2 Summit port 3 Summit port 4 Summit port 5 Summit port 6 Summit port 7 Summit port 8 Summit port 9 Summit port 10 Summit port 11 Summit port 12 Summit port 13 serveur1.ent1 port eth2 serveur1.ent1 port eth1 serveur1.ent1 port eth0 serveur2.ent1 port eth2 serveur2.ent1 port eth1 serveur2.ent1 port eth0 serveur3.ent1 port eth2 serveur3.ent1 port eth1 serveur3.ent1 port eth0 ASA5510 port MGMT ASA5510 port eth1 ASA5510 port eth2 Cisco 2800 port fa0/0 Cisco 2800 port fa0/1 serveur1.core1 port eth2 serveur1.core1 port eth1 serveur1.core1 port eth0 serveur2.core1 port eth2 serveur2.core1 port eth1 serveur2.core1 port eth0 MIR port Ge0/1 MIR port Ge0/0 MIR port Ge1/0 MIR port Ge2/0 ISS port Ge0/1 ISS port Ge0/0 ISS port Ge1/0 ISS port Ge2/0 ISS port Fa0/0 PSEUDOL port eth2 PSEUDOL port eth1 PSEUDOL port eth0 MEDIAL port eth2 MEDIAL port eth1 MEDIAL port eth0 serveur1.ent2 port eth2 serveur1.ent2 port eth1 serveur1.ent2 port eth0 serveur2.ent2 port eth2 serveur2.ent2 port eth1 serveur2.ent2 port eth0 serveur3.ent2 port eth2 serveur3.ent2 port eth1 serveur3.ent2 port eth0 Firewall1.ent2 port 0/0 (eth0) Firewall1.ent2 port 0/1 (eth1) Firewall1.ent2 port 0/2 (eth2) Firewall2.ent2 port 0/0 (eth0) N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Jaune Jaune Jaune Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Bleu Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Continue sur la page suivante 17 Câble AS 56 57 58 59 60 61 70 71 80 81 82 83 84 85 86 87 92 93 94 95 110 111 112 113 116 117 118 119 120 121 122 123 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 4 4 4 4 4 4 1 4 3 3 3 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 Port source TABLE 1.1 – continué de la page précédente Port destination Adaptateur Summit port 14 Summit port 15 Summit port 19 Summit port 20 Summit port 21 Summit port 22 C3560 port 11 Summit port 16 HP1 port 9 HP1 port 10 HP1 port 11 HP1 port 12 HP1 port 15 HP1 port 16 HP1 port 17 HP1 port 18 HP2 port 15 HP2 port 16 HP2 port 17 HP2 port 18 C3560 port 18 MGMT1 port 1 MGMT1 port 2 MGMT1 port 3 MGMT1 port 6 MGMT1 port 7 MGMT1 port 8 MGMT1 port 16 C2960 port 7 MGMT2 port 1 MGMT2 port 2 MGMT2 port 3 MGMT2 port 7 MGMT2 port 8 MGMT2 port 16 HP1 port 21 MGMT3 port 1 MGMT3 port 2 MGMT3 port 3 MGMT3 port 4 MGMT3 port 5 MGMT3 port 6 MGMT3 port 7 MGMT3 port 8 MGMT3 port 16 Summit port 17 MGMT4 port 1 MGMT4 port 2 MGMT4 port 3 Firewall2.ent2 port 0/1 (eth1) Firewall2.ent2 port 0/2 (eth2) J2300-1 PORT0 (fe-0/0/0) J2300-1 PORT1 (fe-0/0/1) J2300-2 PORT0 (fe-0/0/0) J2300-2 PORT1 (fe-0/0/1) IP Phone 1 port WAN IP Phone 2 port WAN J1 port Ge-0/0/0 J1 port Ge-0/0/1 J1 port Ge-0/0/2 J1 port Ge-0/0/3 J2 port Ge-0/0/0 J2 port Ge-0/0/1 J2 port Ge-0/0/2 J2 port Ge-0/0/3 J4 port Ge-0/0/0 J4 port Ge-0/0/1 J4 port Ge-0/0/2 J4 port Ge-0/0/3 MGMT1 port 10/100 C3560 port console Cisco 2800 port console ASA5510 port console serveur1.ent1 port console serveur2.ent1 port console serveur3.ent1 port console PDU-AS1 port console MGMT2 port 10/100 C2960 port console MIR port console ISS port console serveur1.core1 port console serveur2.core1 port console PDU-AS2 port console MGMT3 port 10/100 HP1 port console HP2 port console J1 port console J2 port console J3 port console J4 port console PSEUDOL port console MEDIAL port console PDU-AS3 port console MGMT4 port 10/100 Summit port console J2300-1 port console J2300-2 port console N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A ADB0025 ADB0025 ADB0025 ADB0039 ADB0039 ADB0039 N/A N/A ADB0025 ADB0025 ADB0025 ADB0039 ADB0039 N/A N/A (ADB0039) (ADB0039) ADB0025 ADB0025 ADB0025 ADB0025 ADB0039 ADB0039 N/A N/A (ADB0039) ADB0025 ADB0025 Couleur Droit Bleu Bleu Blanc Blanc Blanc Blanc Jaune Jaune Gris Gris Gris Gris Gris Gris Gris Gris Gris Gris Gris Gris Bleu Blanc Noir Blanc Blanc Blanc Blanc Noir Bleu Blanc Bleu Bleu Blanc Blanc Noir Bleu Bleu clair Bleu clair Bleu Bleu Bleu Bleu Blanc Blanc Noir Bleu Blanc Bleu Bleu Droit Droit Droit Droit Droit Droit Droit Droit Croisé Croisé Croisé Croisé Croisé Croisé Croisé Croisé Croisé Croisé Croisé Croisé Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Rollover Rollover Droit Droit Droit Droit Droit Droit Droit Droit Rollover Droit Droit Continue sur la page suivante 18 TABLE 1.1 – continué de la page précédente Port destination Adaptateur Câble AS Port source 144 145 146 147 148 149 210 320 420 430 999 100 4 4 4 4 4 4 1/2 2/3 2/4 3/4 1 – MGMT4 port 4 MGMT4 port 5 MGMT4 port 6 MGMT4 port 7 MGMT4 port 8 MGMT4 port 16 C3560 port 23 C2960 port 23 C2960 port 22 HP2 port 24 C3560 port 22 ROT26 11#320 Firewall1.ent2 port console Firewall2.ent2 port console serveur1.ent2 port console serveur2.ent2 port console serveur3.ent2 port console PDU-AS4 port console C2960 port 24 HP1 port 24 Summit port 23 Summit port 24 gate-net port eth3 gate-net port eth4 ADB0025 ADB0025 ADB0039 ADB0039 ADB0039 N/A N/A N/A N/A N/A N/A N/A Couleur Droit Blanc Blanc Blanc Blanc Blanc Noir Bleu Bleu Bleu Bleu Bleu Bleu Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Droit Remarque. L’adresse MAC du port eth4 de gate-net est 00:90:0B:00:A1:09. 7 Connexion à la plateforme Se connecter à la passerelle sphinx.lip6.fr ssh <login>@sphinx.lip6.fr Se connecter à la gateway gate-net.rsr.lip6.fr : ssh [<login>@]gate-net.rsr.lip6.fr Une fois connecté à la gateway gate-net, les contrôleurs de console (ACS) relatifs à chaque AS ont les adresses IP suivantes : AS Adresse IP du contrôleur de console AS 1 AS 2 AS 3 AS 4 10.40.130.10 10.40.130.20 10.40.130.30 10.40.130.40 Donc pour se connecter à un ACS depuis la gateway gate-net : ssh [email protected] password: avocent Pour se connecter à un équipement depuis l’ACS, utiliser la commande ts_menu de l’ACS qui affiche les différents équipements connectés ainsi que leurs noms. Remarque. Pour se connecter aux contrôleurs de console physiquement, utiliser un câble croisé, le brancher sur l’interface 10/100BaseT de l’ACS et se donner l’adresse IP non réservée (10.40.130.50 par exemple). Il faut utiliser des câbles croisés pour relier les ACS avec les interfaces de la gateway gate-net. Pour obtenir les <login>, s’adresser aux administrateurs système qui administrent le réseau du LIP6. La gateway gate-net est connectée sur le réseau du LIP6 à partir de l’interface eth4. Il est possible de se connecter à une contrôleur de console de l’AS x directement avec la commande suivante : ssh -t <login>@sphinx.lip6.fr "ssh -t gate-net.rsr.lip6.fr 'ssh admin@10 .40.130.x0'" 19 7.1 Connexion physique à la plateforme Un serveur DHCP a été mis en place. Il s’agit du serveur serveur2.ent1.org, sur l’interface eth1 à l’adresse IPv4 10.40.130.12. Pour se connecter à la plateforme, se connecter à l’aide d’un câble droit sur l’un des ports libres des switchs des différents AS. La configuration devra être effective à l’aide de DHCP. Remarque. L’instance DHCP définie sur serveur2.ent1.org est la suivante (fichier /etc/dhcp/dhcpd .conf) : subnet 10.40.130.0 netmask 255.255.255.0 { range 10.40.130.100 10.40.130.200; option routers 10.40.130.2; } Bien configurer le serveur DHCP pour fonctionner sur le port eth1 (éditer le fichier /etc/default/isc -dhcp-server) : INTERFACES="eth1" 7.2 Accès à distance aux contrôleurs de console (ACS) sans mot de passe Il y a plusieurs sauts avant d’atteindre les contrôleurs de console : – Le serveur sphinx.lip6.fr – Le serveur gate-net.rsr.lip6.fr – Les contrôleurs de console 10.40.130.x0 Dans la suite, nous allons éditer au fur-et-à-mesure le fichier ~/.ssh/config afin de simplifier encore plus la connexion SSH aux serveurs distants. Nous allons commencer par les lignes suivantes qui concernent tous les hôtes : Host * ServerAliveInterval 120 ServerAliveCountMax 30 Pour se connecter en SSH à un hôte distant configuré dans le fichier ~/.ssh/config, il suffit de taper la commande : ssh <host> Configuration pour le serveur Sphinx Il faut créer un couple clé publique/clé privée à l’aide de la commande ssh-keygen sans taper de passphrse, et en choisissant le nom .ssh/id_rsa_sphinx : ssh-keygen -t rsa -f .ssh/id_rsa_sphinx Une fois les clés créées, deux fichiers sont créés : – .ssh/id_rsa_sphinx qui correspond à la clé privée, – .ssh/id_rsa_sphinx.pub qui correspond à la clé publique. Ajouter alors la clé publique .ssh/id_rsa_sphinx.pub sur le serveur sphinx.lip6.fr, dans le fichier .ssh/authorized_keys2 : scp ~/.ssh/id_rsa_sphinx.pub <login>@sphinx.lip6.fr:.ssh/authorized_keys_ ssh <login>@sphinx.lip6.fr cat .ssh/authorized_keys_ >> .ssh/authorized_keys2 && rm .ssh/authorized_keys_ La première connexion sans mot de passe vers le serveur sphinx.lip6.fr devrait être fonctionnelle en utilisant le fichier .ssh/id_rsa_sphinx : ssh -i .ssh/id_rsa_sphinx <login>@sphinx.lip6.fr Il est alors possible d’ajouter les informations concernant le serveur sphinx.lip6.fr dans le fichier ~/. ssh/config : 20 Host sphinx user <login> port 22 hostname sphinx.lip6.fr IdentityFile ~/.ssh/id_rsa_sphinx Il est possible de tester la connexion SSH avec l’hôte sphinx.lip6.fr : ssh sphinx. Configuration pour le serveur Gate-net Pour se connecter sur le serveur gate-net.rsr.lip6.fr, il suffit de faire la même procédure que sur le serveur sphinx.lip6.fr : sphinx$ ssh-keygen -t rsa -f .ssh/id_rsa_gate-net sphinx$ cat .ssh/id_rsa_gate-net.pub >> .ssh/authorized_keys2 Tester ensuite la connexion vers gate-net.rsr.lip6.fr : sphinx$ ssh -i .ssh/id_rsa_gate-net <login>@gate-net.rsr.lip6.fr Remarque. Les deux serveur sphinx.lip6.fr et gate-net.rsr.lip6.fr partagent le même système de fichiers NFS, de ce fait, les blocs de commandes suivants sont équivalents : sphinx$ cat >> .ssh/authorized_keys2 sphinx$ scp ~/.ssh/id_rsa_sphinx.pub <login>@sphinx.lip6.fr:.ssh/ authorized_keys_ sphinx$ ssh <login>@sphinx.lip6.fr sphinx$ cat .ssh/authorized_keys_ >> .ssh/authorized_keys2 && rm .ssh/ authorized_keys_ Il est alors possible d’ajouter les lignes suivantes dans le fichier ~/.ssh/config qui correspondent à l’hôte gate-net.rsr.lip6.fr : Host gate user <login> port 22 hostname gate-net.rsr.lip6.fr ProxyCommand ssh -W %h:%p sphinx IdentityFile ~/.ssh/id_rsa_gate-net Remarque. Le fichier d’identification (ou clé privée) ~/.ssh/id_rsa_gate-net se trouve sur votre ordinateur, en local. Il faudra donc la récupérer sur votre ordinateur à l’emplacement correspondant : scp <login>@sphinx.lip6.fr:~/.ssh/id_rsa_gate-net ~/.ssh/ Configuration sur les contrôleurs de console (Avocent ACS) Sur le serveur gate-net.rsr.lip6.fr, créer un nouveau couple de clés à l’aide de la commande : gate-net$ ssh-keygen -t rsa -f .ssh/id_rsa_acs Il faut alors transférer la clé publique .ssh/id_rsa_acs.pub sur les contrôleurs de console à l’aide de la commande suivante : gate-net$ scp ~/.ssh/id_rsa_acs.pub [email protected]:~/.ssh/authorized_keys_ gate-net$ ssh [email protected] [ACS]$ cat .ssh/authorized_keys_ >> .ssh/authorized_keys && rm .ssh/ authorized_keys_ Remarque. Sur les contrôleurs de console, le dossier ~/.ssh n’est pas forcément existant. Pour ce faire, se connecter sur la console en admin, créer le dossier ~/.ssh et mettre les droits qui conviennent : [ACS]$ chmod go-w ~/ [ACS]$ chmod 700 ~/.ssh [ACS]$ chmod 600 ~/.ssh/authorized_keys Tester ensuite la connexion SSH avec le contrôleur de console : gate-net$ ssh -i .ssh/id_rsa_acs [email protected] 21 Si des problèmes persistent (permission denied, prompt du mot de passe), éditer le fichier /etc/ssh/ sshd_config avec vi en root et décommenter les lignes suivantes : RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys Forcer l’authentification avec un mot de passe (attention, l’option ChallengeResponseAuthentication doit être positionnée à yes) : ssh -o PubkeyAuthentication=no <login>@<server>:<port> Remarque. Le contrôleur de console est également accessible en telnet Redémarrer le service SSH : kill -HUP `cat /var/run/sshd.pid` Il est alors possible d’éditer le fichier ~/.ssh/config en ajoutant les informations correspondant au contrôleur de console : Host asx user admin port 22 hostname 10.40.130.10 ProxyCommand ssh -W %h:%p gate IdentityFile ~/.ssh/id_rsa_acs Remarque. De même que pour le serveur gate-net.rsr.lip6.fr, il faut que le fichier ~/.ssh/id_rsa_acs se trouve sur votre ordinateur, en local. De ce fait, il est possible de le récupérer depuis le serveur sphinx .lip6.fr (les deux serveurs utilisent le même serveur de fichiers NFS) : scp <login>@sphinx.lip6.fr:~/.ssh/id_rsa_acs ~/.ssh/ Par ailleurs, il est possible d’utiliser le même couple de clés pour tous les contrôleurs de console. Remarque pour les utilisateurs de Windows Pour se connecter en SSH sur un serveur distant, il existe le programme PuTTY. Il n’est donc pas possible d’effectuer la manipulation expliquée précédemment sur PuTTY. De ce fait, il faut se connecter au serveur sphinx.lip6.fr et créer un fichier de configuration ~/.ssh/config qui permettra à l’utilisateur de se connecter sur le serveur gate-net.rsr.lip6.fr et les différents contrôleurs de console. Une fois connecté sur le serveur sphinx.lip6.fr, créer le fichier ~/.ssh/config de configuration SSH qui contient les lignes suivantes (le serveur est assez restrictif, et ne propose pas l’option -W pour SSH, et ne dispose pas de netcat non plus) : Host gate user <login> port 22 hostname gate-net.rsr.lip6.fr IdentityFile ~/.ssh/id_rsa_gate-net Host as1 user admin port 22 hostname 10.40.130.10 ProxyCommand ssh gate 'exec 3<>/dev/tcp/%h/22; cat <&3 & cat >&3;kill $!' IdentityFile ~/.ssh/id_rsa_acs Host as2 user admin port 22 hostname 10.40.130.20 ProxyCommand ssh gate 'exec 3<>/dev/tcp/%h/22; cat <&3 & cat >&3;kill $!' IdentityFile ~/.ssh/id_rsa_acs Host as3 user admin port 22 hostname 10.40.130.30 22 ProxyCommand ssh gate 'exec 3<>/dev/tcp/%h/22; cat <&3 & cat >&3;kill $!' IdentityFile ~/.ssh/id_rsa_acs Host as4 user admin port 22 hostname 10.40.130.40 ProxyCommand ssh gate 'exec 3<>/dev/tcp/%h/22; cat <&3 & cat >&3;kill $!' IdentityFile ~/.ssh/id_rsa_acs Les deux couples de clés (clé publique, clé privée) id_rsa_gate-net et id_rsa_acs ont été générés à l’aide de la commande ssh-keygen -t rsa : sphinx$ ssh-keygen -t rsa -f .ssh/id_rsa_gate-net sphinx$ ssh-keygen -t rsa -f .ssh/id_rsa_acs Par ailleurs, la clé publique id_rsa_gate-net.pub aura été ajoutée dans le fichier ~/.ssh/authorized_keys2 du serveur sphinx.lip6.fr (qui utilise le même système de fichier NFS que gate-net.rsr.lip6.fr) qui contient l’ensemble des clés publiques des hôtes autorisées à se connecter à ce compte par l’intermédiaire de RSA : sphinx$ cat ~/.ssh/id_rsa_gate-net.pub >> .ssh/authorized_keys2 Enfin, la clé publique id_rsa_acs aura été ajoutée au fichier ~/.ssh/authorized_keys des contrôleurs de console à l’aide de la commande scp : gate-net$ scp ~/.ssh/id_rsa_acs.pub [email protected]:~/.ssh/authorized_keys_ gate-net$ ssh [email protected] [ACS]$ cat .ssh/authorized_keys_ >> .ssh/authorized_keys && rm .ssh/ authorized_keys_ Remarque. Le répertoire ~/.ssh doit être en mode 700 et les fichiers contenant les clés publiques ~/.ssh /authorized_keys* doivent être en mode 600. Il est alors possible de se connecter directement aux contrôleurs de console, sans avoir ) taper de mot de passe depuis le serveur sphinx.lip6.fr en ayant une connexion transparente au serveur intermédiaire gate-net.rsr.lip6.fr : ssh asX 23 CHAPITRE Généralités sur les équipements 1 1.1 Introduction sur protocoles de base Généralités sur les VLANs Afin de créer plusieurs sous-réseaux dans les AS, nous utiliserons des VLANs (Virtual Local Area Network) qui permettent de créer des sous-réseaux virtuels au niveau d’un commutateur. Standard 802.1Q (IEEE) : taille de l’entête de 4 octets, permet de supporter au maximum 4094 VLANs en mode trunk. Dest MAC Untagged 802.1Q Source MAC Type Dest MAC Source MAC 802.1Q Type 6 6 4 2 Terminologie : – Trunking : une même connexion physique peut supporter plusieurs VLANs – Native VLAN : par défaut, les trames de ce VLAN sont untagged quand elles sont transmises dans un trunk. – Access VLAN : le VLAN auquel un access port est assigné. – Voice VLAN : si configuré, il permet d’activer un trunking minimal pour supporter le trafic de voix, en plus du trafic de données sur un access port. 1.2 IPv6 Dans le but d’avoir une plateforme évolutive, nous allons utiliser à la fois IPv4 et IPv6. Le protocole IPv6 est configuré pour tous les VLANs, sauf celui d’administration (pour l’AS x, il s’agit du VLAN x00). 8 Ver 16 24 Traffic Class 32 Global unicast Flow Label Payload Length Next Header Global Prefix Hop Limit 48 Link-local unicast Source Address Subnet Interface ID 16 64 FE80 : : /64 8 Flags FF 4 4 Entête IPv6 (de taille 40 octets) : – Version (4 bits) : toujours positionné à 6. – Traffic Class (8 bits) : une valeur de DSCP pour la QoS. – Flow Label (20 bits) : identifie les flots uniques (optionnel). 24 Scope Multicast Destination Address Interface ID 64 64 Group IP 112 2 – – – – – Payload Length (16 bits) : longueur du payload en octets. Next Header (8 bits) : entête ou protocole encapsulé (suivant). Hop Limit (8 bits) : similaire au champ TTL Time To Live de IPv4. Source Address (128 bits) : adresse IP de la source. Destination Address (128 bits) : adresse IP de la destination. Type des adresses IPv6 : – Unicast : communication un-à-un. – Multicast : communication un-à-plusieurs. – Anycast : une adresse configurée sur plusieurs équipements. MAC 02 EUI-64 00 0a 27 5c 88 0a 27 ff 5c 88 fe 19 19 Formation de l’identifiant EUI-64 à partir de l’adresse MAC : – Insérer 0xfffe entre les deux moitiés de l’adresse MAC – Positionner le 7e bit (universal/loacl flag) à 1. Multicast scopes Préfixes réservés ::/0 ::/128 ::1/128 FC00::/7 FE80::/10 FF00::/8 Default route Unspecified Loopback Unique local Link-local unicast Multicast 1 2 4 5 8 E Interface-local Link-local Admin-local Site-local Org-local Global Extention Headers : 0 Hop-by-hop Options 43 44 50 Routing Fragment Encapsulating Security Payload (ESP) Authentication Header (AH) Destination Options 51 60 Information additionnelle qui doit être examinée par chaque routeur du chemin Routage à la source Inclus quand un paquet a été fragmenté par la source Permet le chiffrement du payload (IPSec) Permet l’authentification du paquet (IPSec) Information additionnelle qui ne concerne que la destination 25 2 Rapide prise en main des équipements 2.1 Comparaison de commandes entre Cisco IOS et Juniper JunOS Juniper JunOS Cisco IOS Passer en mode configuration : enable conf[igure] t[erminal] # conf t cli congure Voir la configuration : show configuration [do] show run[ning-config] Remonter dans l’arborescence : exit up top # racine de l'arborescence Sauvegarder les changements : commit check commit wr[ite] me[mory] # wr me Equivalent de la commande grep : match <motif> # eg. [run] show route |match bgp grep <motif> Revenir dans les configurations enregistrées : configure replace target-url [list] [ force] [time seconds] [nolock] rollback Exécuter une commande dans l’arborescence : run <commande> do <commande> Supprimer une entrée : no <commande> delete <commande> Définir un nom à l’équipement : hostname <device name> run <commande> Obtenir la version de l’équipement : show version show hardware show version show system <option> Obtenir les logs de l’équipement : show logging show log messages Montrer le statut des interfaces configurées pour IP : show ip interface brief show interface terse Montrer la configuration, le statut et les statistiques des interfaces : show interface [<interface>] show interfaces [<interface>] detail 26 Afficher les informations concernant un port physique de l’équipement : show interfaces <interface> extensive show controller <interface> Afficher un résumé de la table de routage : show ip route show route Vérifier si une destination est atteignable : ping dest rapid # for cisco like output ping dest # for unix like output ping dest 2.2 Cisco IOS Visualiser les configurations existantes : Switch# Switch# Switch# Switch# show show show show vlan [id <vlan id>] interface [status | switchport] interface trunk running-config [int <interface>] Création d’un VLAN : Switch(config)# vlan <vlan id> Switch(config-vlan)# name <vlan name> Supprimer un VLAN : Switch(config)# no vlan <vlan id> Configuration access port : Switch(config)# interface <interface> Switch(config-if)# switchport mode access Switch(config-if)# switchport nonegotiate Switch(config-if)# switchport access vlan <vlan id> Switch(config-if)# switchport voice vlan <voice vlan id> Variante trunk port : Switch(config-if)# Switch(config-if)# Switch(config-if)# Switch(config-if)# switchport switchport switchport switchport mode trunk trunk encapsulation dot1Q trunk allowed vlan <vlan0, vlan2-vlan3> trunk native vlan <native vlan> Créer une interface virtuelle à un VLAN : Switch(config)# interface <interface>.<vlan id> Switch(config-if)# encapsulation dot1Q <vlan id> Port mirroring sur une interface : Switch(config)# monitor session <session id> source {vlan <vlan id> | interface <interface>} Switch(config)# monitor session <session id> destination interface <interface> Copier en FTP les fichiers de configuration (switch ou routeur) : Router# configure terminal Router(config)# ip ftp username adminftp Router(config)# ip ftp password password Router(config)# end Router# copy running-config ftp: ! Address or name of remote host []? 4.11.100.3 27 2.3 Juniper JunOS (routeurs) Afficher les commandes liés à une configuration :show | display set [relative] Le mot-clé relative permet d’afficher les commandes à faire depuis le menu contextuel courant. Comparer la configuration actuelle avec une configuration antérieure : show |compare rollback <1-9> – – – – Désactiver une commande : deactivate <command> Activer une commande : activate <command> Redémarrer le routeur Juniper : request system reboot Arrêter le routeur Juniper : request system poweroff Configuration de l’adressage IPv6 sans état autonome ou SLAAC (Stateless Address Autoconfiguration). Les serveurs construisent ainsi leur adresse avec le préfixe ::IID/64 (où IID correspond à l’identifiant d’interface EUI-64) edit protocols router-advertisement interface <interface> set prefix <IID>::/64 # construit àpartir de cette adresse set no-managed-configuration # mettre en place autoconfiguration (flag M=0) set no-other-stateful-configuration # pas serveur DHCP sur réseau (flag O=0) Monter une clé USB formatée en FAT 16/32 : user@router> start shell user root root@router% mount_msdos /dev/da0s1 /mnt root@router% ls /mnt Remarque. Il est possible de copier le système de fichier sur la clé USB de la manière suivante : cp /confif/juniper.conf.gz /mnt Ou bien : utiliser FTP pour envoyer les fichier sur les serveurs des entreprises 1 et 2 : ftp serveur3.ent<1,2>.org Connected to 4.11.100.3. 220 ProFTPD 1.3.3a Server (ftp-ent2) [::ffff:4.11.100.3] Name (4.11.100.3:root): adminftp 331 Mot de passe requis pour adminftp Password: <password> ftp> send juniper.conf.gz ftp> exit Remarque. Le dossier FTP cible doit être accessible par tout le monde : chmod 777 . 2.4 Juniper ScreenOS (firewalls) Configuration de l’interface d’administration Si eth0/z est l’interface reliée au réseau d’admin, alors : set interface eth0/z ip <firewall IP on admin network>/<subnet mask> Pour tester la connexion : set interface eth0/z manage ping Activer SNMP sur l’interface : Set interface eth0/z manage snmp Configuration du firewall en mode “transparent” Soit vlan1 le VLAN par défaut. set interface vlan1 ip <point-to-point link subnet IP>/<subnet mask> set vrouter trust-vr route <trust zone network IP>/<network mask> interface < router internal IP> metric 1 28 Remarque. Il faut d’abord enlever les interfaces des bgroup par défault. set set set set set interface ethernet0/x ip 0.0.0.0/0 # ethernet0/x : -> zone trust interface ethernet0/x zone v1-trust interface ethernet0/y ip 0.0.0.0/0 # ethernet0/y : -> extérieur interface ethernet0/y zone v1-untrust vrouter trust-vr route 0.0.0.0/0 interface vlan1 gateway <router external IP> metric 1 Polices (policies) : set policy from <zone 1> to <zone 2> <source address | any > <dest address | any > <service name> < permit | deny | reject | tunnel > Sauvegarder la configuration : save config Configurer SNMP : set set set set snmp snmp snmp snmp community public Read-Only name firewall1 location Paris contact "Olivier Fourmaux" 2.5 Extreme Networks Summit Afficher la configuration : show configuration Créer un VLAN : create vlan <vlan name> Ajouter un tag (label) à un VLAN : configure vlan <vlan name> tag <vlan num> Ajouter/supprimer des ports au VLAN : configure vlan <vlan name> <add|del> ports <port1>, <port2> <tagged|untagged> Assigner une IP à un VLAN : configure valn <vlan name> ip <vlan IP> <vlan mask> Activer le PoE (Power over Ethernet) sur tous les ports [un port] : enable inline-power [port <port>] Désactiver le PoE (Power over Ethernet) sur tous les ports [un port] : disable inline-power [port <port>] Configuration de SNMP : configure configure configure configure snmp snmp snmp snmp sysName Switch-AS4 sysLocation Paris sysContact "Olivier Fourmaux" add community readonly public Configuration du port mirroring : config mirroring {add | delete} ports <portlist> disable mirroring enable mirroring to <port> tagged show mirroring # Montrer la configuration de port mirroring 2.6 HP ProCurve Le HP ProCurve fournit par défaut une interface “graphique”. Un menu CLI (Command-Line Interface) est cependant accessible. Menu de configuration : configure Sortir du contexte actuel : 29 exit Sauvegarde des configurations effectuées : write memory Montrer les VLANs configurées : show vlans Configurer l’adresse IP (prendre soin de rentrer dans le VLAN auparavant) : ip address <IP address>/<prefix> Marquage 802.1q des ports pour qu’un port puisse supporter plusieurs VLANs (depuis le menu “graphique”) : 7. VLAN Menu > 3. VLAN Port Assignment Marquer les VLANs associés aux ports souhaités par Tagged ; le VLAN natif est marqué par Untagged. Prendre bien soin d’assigner le VLAN Default à No pour ces ports-ci. 2.7 Serveur sous Debian Adresse IP Modification de l’adresse IP de la machine : vim /etc/network/interfaces /etc/init.d/networking restart # prise en compte des paramètres changés Différentes configurations pour les interfaces : – Configuration statique : iface <interface name>inet static – Configuration dynamique (avec DHCP) : iface <interface name>inet dhcp – Configuration pour IPv6 : iface <interface name>inet6 {static | dhcp} – Configuration automatique au démarrage du serveur : auto <interface name> Commandes pour les interfaces : – Afficher les interfaces actives : ifconfig (option -a pour afficher toutes les interfaces) – Activer une interface : ifup <interface> – Désactiver une interface : ifdown <interface> Load Balancer ip route add default scope global nexthop via 4.11.100.61 weight 1 nexthop via 4.11.100.62 weight 1 Ajout d’une règle de routage qui permet de choisir aléatoirement l’une des deux passerelles : – 4.11.100.61 : routeur Juniper 2 – 4.11.100.62 : routeur Juniper 1 Remarque. A chaque fois que les interfaces sont modifiées ou que le serveur redémarre, il se peut que la règle par défaut ne soit plus présente (vérifier avec la commande ip route). Pour ce faire, retaper la commande ci-dessus. Sinon, les serveurs de l’AS 4 ne seront plus accessibles et ne pourront plus accéder à l’ensemble du réseau. VLANs Il est possible d’associer une interface donnée à plusieurs VLANs différents. Installer l’application vlan : apt-get install vlan Configuration des VLANs : vconfig add <interface> <vlan tag> ifconfig <interface>.<vlan tag> up Editer le fichier /etc/network/interfaces pour ajouter le VLAN à l’interface correspondante : 30 Accès à Internet Connecter un serveur à Internet (via la gateway gate-net). Le serveur est connecté au VLAN 999 par l’interface eth1. Le VLAN 999 permet aux serveurs d’accéder à Internet à l’aide d’un adresse privé de classe A. Changer l’adresse IP du port eth1 du serveur pour correspondre à l’adresse IP du port de la gateway (10.40.130.2). Editer le fichier /etc/network/interfaces : auto eth1 iface eth1 inet static address 10.40.130.xy # serveur dans AS x netmask 255.0.0.0 Activer l’interface eth1 : ifup eth1 Mettre à jour le système pour prendre en compte le proxy 10.40.130.2 (ie. l’adresse IP de l’interface eth4 de la gateway gate-net) : export http_proxy="http://10.40.130.2:8080" export https_proxy="http://10.40.130.2:8080" Remarque. Attention, cette règle ne sera valide que pour la session associée au terminal (pour une validité prolongée, placer ces deux lignes dans ~/.bashrc ou dans le fichier /etc/profile). Port série Accéder à un serveur Debian sur le port série (ie. configuration du serveur pour y accéder depuis l’ACS) : – Dans le fichier /etc/default/grub : GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,9600n8" GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no -stop=1" – Dans le fichier /etc/inittab : T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 – Entrer la commande : update-grub – Reboot du serveur. Dans le cas d’un autre serveur sous un autre système d’exploitation : – Dans le fichier /etc/inittab, au-dessus de la ligne 1:2345:respawn..... : T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 – Dans le fichier /boot/grub/menu.lst (ou le fichier grub.conf s’il n’existe pas), en-dessous des commentaires parlant de “password md5” au début du fichier : serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1 terminal --timeout=10 serial console – Dans les entrées grub du même fichier, tout en bas du fichier, à la fin de la ligne kernel : console=tty0 console=ttyS0,9600n8 – Reboot du serveur. Remarque. Pour accéder à un équipement à l’aide du port série, utiliser la commande screen : screen /dev/ttyS0 # Quitter : CTRL+A MAJ+D MAJ+D Pour installer screen : visiter l’URL http://packages.debian.org/squeeze/screen et télécharger l’archive qui correspond (pour nous : architecture amd64). Installer l’archive <package>.deb : sudo dpkg -i <package>.deb 31 Commande apt-get Désactiver le CD-ROM comme source principale de apt-get. Editer le fichier /etc/apt/sources.list : [sudo] vim /etc/apt/sources.list Commenter la ligne commençant par deb cdrom (# devant). Ajouter les sources : deb http://ftp.debian.org/debian/ squeeze-updates main contrib deb http://http.fr.debian.org/debian/ squeeze contrib non-free main deb-src http://http.fr.debian.org/debian/ squeeze contrib non-free main deb-src http://ftp.debian.org/debian/ squeeze-updates main contrib Mettre la jour la base de données locale des paquets de apt-get : apt-get update Wireshark Wireshark est un logiciel permettant de capturer du trafic sur des interfaces. – Installation de Wireshark : sudo apt-get install wireshark – Lancement de Wireshark : gksu wireshark (en mode root pour pouvoir accéder aux interfaces). Configuration du logiciel pour lister toutes les interfaces en mode user : – Re-configuration de Wireshark : dpkg-reconfigure wireshark-common – Positionner le curseur sur “OUI” (pour autoriser tous les utilisateurs à accéder aux interfaces) – Ajouter les droits d’exécution pour les users sur le fichier /usr/bin/dumpcap : sudo chmod +x /usr/bin/dumpcap – Lancer Wireshark depuis le lanceur d’application ou la commande wireshark 32 2.8 Avocent ACS 5016 Contrôleur de consoles (ACS : Advanced Controller System) de la série ACS 5000 comportant 16 ports RJ45 permettant, une fois reliés aux ports console des équipements, de les contrôler. Ils sont au nombre de quatre, un pour chaque système autonome et sont reliés au VLAN 999 présenté dans le chapitre 1. Le schéma suivant présente les branchements effectués entre le contrôleur de console MGNT1 et les équipements, ainsi que les branchements avec le power unit 1 pour l’AS 1. Liaison Serie Branchement prise de courant MGMT1 Catalyst 3560 Catalyst 2800 Serveur1.Ent1 Serveur2.Ent1 Serveur3.Ent1 ASA5510 Power Unit 1 F IGURE 2.1 – Intégration du contrôleur de console MGNT1 dans l’AS 1 Pour contrôler un équipement, utiliser la commande : ts_menu, puis choisir l’équipement à contrôler. Accéder au CLI (Command-Line Interface) de l’ACS : CLI Reset de l’ACS (Restore to factory defaults) : cli> sudo restoreconf factory_default Changer l’alias d’un port <port> : cli> config physicalports <port> general alias <server alias> Activer (ou désactiver) un port : cli> config physicalports <port> enable {yes|no} Modifier le protocole d’accès à un port : cli> config physicalports <port> general protocol <telnet|sshv2|consolessh> Sauvegarder les changements : cli> config savetoflash Sortir d’une console lorsque l’on est connecté en telnet : CTRL+<dollar> Remarque. Configuration du terminal pour telnet : 9600 bauds, 8 (data bits), N (parity), 1 (stop bits) et pas de flow control. Configuration de l’ACS via l’interface d’administration HTTP : – Utilisation du VLAN 999 qui permet l’administration à distance des équipements, – Pour se connecter à l’ACS correspondant à l’AS x, se connecter en ssh à l’adresse 10.40.130.x0, avec 0 < x < 4, et pour nom d’utilisateur admin (mot de passe : avocent) : ssh [email protected] 2.9 Avocent Power Management 1000 Les Avocent Power Management 1000 (ou PM/PDU 1000) permettent d’effectuer diverses mesures sur les équipements branchés dessus. Par ailleurs, ils sont accessibles à l’aide des contrôleurs de console présentés précédemment. Navigation dans le CLI : --:-- / cli-> cd <path> --:-- <path> cli-> cd / # haut de arborescence Enregistrer les changements : **:- <path> cli-> commit --:*- [<path>] cli-> save 33 Changer le nom d’hôte : --:- / cli-> cd /network/settings/ --:- settings cli-> set hostname=<hostname> **:- settings cli-> commit Changer le nom d’un PDU : --:- / cli-> cd power_management/pdus/ --:- / cli-> rename <pdu_id> --:*- [pdus] cli-> set new_pdu_id=<new pdu name> Changer le nom d’une prise de courant : --:- / cli-> cd /power_management/pdus/<pdu>/settings/outlets --:- outlets cli-> set <outlet num> name=<outlet name> Création d’un groupe de prises : --:- / cli-> cd power_management/outlet_groups/ --:- outlet_groups cli-> add --:*- [outlet_groups] cli-> set group_name=<group name> --:*- [outlet_groups] cli-> save --:- outlet_groups cli-> add <group name> --:*- [HUBBLE] cli-> set outlets= pdu= pdu_id= Contrôler le courant sur une prise (seulement PM3000) : --:- / cli-> cd power_management/pdus/<PDU_ID>/outlets --:- outlets cli-> [cycle|on|off|lock|unlock] <outlet_num[,..,outlet_num]> Erreur : Error: Outlet is metered only. It cannot be turned on, off or cycled. Action: ON. Outlet(s): PDU-AS2[1]. Remarque. Voir la page suivante : http://www.emersonnetworkpower.com/en-US/Products/ ACPower/RackPDU/Pages/AvocentPM100020003000PDUs.aspx (model comparison) 2.10 Câbles et connexions entre les équipements Les deux types de câbles avec des terminaisons RJ-45 que l’on utilise sont les suivants : – Les câbles droits, – Les câbles croisés. La prise RJ-45 (Registered Jack) est en fait un connecteur 8P8C (8 Position 8 contact) utilisé généralement pour Ethernet sur des pairs torsadées. Les standards TIA/EIA-568 définissent (entre autres) les dispositions des pins pour les pairs torsadées : T568A et T568B. Les définitions T568A et T568B sont présentées au niveau des figures 2.2, 2.3, 2.4 et 2.5 suivantes pour des câbles droits et croisés. Connexions des ports console des équipements : – Serveurs, Switch Summit, Switch ProCurve : câble rollover (bleu clair) RJ45 → DB-9, – Routeurs Juniper et Cisco : câble droit et adaptateur Cisco (ADB0039) branché sur l’équipement, – Cyclades PDM : câble droit seul (option pour la gestion automatique dans l’interface web). Remarque. Les câbles rollover (bleu clair) RJ45 → DB-9 peuvent être remplacés par un adaptateur ADB0025 YFDTE91 placé sur le port console DB-9 de l’équipement, puis en reliant un câble droit jusqu’au contrôleur de console. 34 Color Standard EIA/TIA T568A TX+ Green/White Tracer 1 1 Green/White Tracer TX- Green 2 2 Green PR 3 RX+ Orange/White Tracer 3 3 Orange/White Tracer Reserved Blue 4 4 Blue Reserved Blue/White Tracer 5 5 Blue/White Tracer RX- Orange 6 6 Orange Reserved Brown/White Tracer 7 7 Brown/White Tracer Reserved Brown 8 8 Brown PR 2 PR 1 PR 2 PR 4 F IGURE 2.2 – Câble droit de la norme T568A Color Standard EIA/TIA T568A Green/White Tracer 1 1 Orange/White Tracer Green 2 2 Orange Orange/White Tracer 3 3 Green/White Tracer Blue 4 4 Brown/White Tracer Blue/White Tracer 5 5 Brown Orange 6 6 Green Brown/White Tracer 7 7 Blue Brown 8 8 Blue/White Tracer F IGURE 2.3 – Câble croisé de la norme T568A Color Standard EIA/TIA T568B TX+ Orange/White Tracer 1 1 Green/White Tracer TX- Orange 2 2 Green PR 2 RX+ Green/White Tracer 3 3 Orange/White Tracer Reserved Blue 4 4 Blue Reserved Blue/White Tracer 5 5 Blue/White Tracer RX- Green 6 6 Green Reserved Brown/White Tracer 7 7 Brown/White Tracer Reserved Brown 8 8 Brown PR 3 PR 1 PR 3 PR 4 F IGURE 2.4 – Câble droit de la norme T568B Color Standard EIA/TIA T568B Orange/White Tracer 1 1 Orange/White Tracer Orange 2 2 Green Green/White Tracer 3 3 Green/White Tracer Brown/White Tracer Blue 4 4 Blue/White Tracer 5 5 Brown Green 6 6 Orange Brown/White Tracer 7 7 Blue Brown 8 8 Blue/White Tracer F IGURE 2.5 – Câble croisé de la norme T568B 35 Avocent ACS 5000, Cyclades PM 1000 Routeurs Cisco, routeurs/firewalls Juniper Newtorks Patch Channel Signal Type RJ-45-Pin Patch Channel Signal Type RJ-45-Pin RTS DTR TxD GND CTS RxD DCD DSR Output Output Output Reference Input Input Input Input 1 2 3 4 5 6 7 8 RTS DTR TxD GND GND RxD DSR CTS Output Output Output Reference Reference Input Input Input 1 2 3 4 5 6 7 8 Abréviations HP ProCurve, Extreme Summit x450e, serveurs Patch Channel Signal Type DB-9-Pin DCD RxD TxD DTR GND DSR RTS CTS RI Input Input Output Output Reference Input Output Input Input 1 2 3 4 5 6 7 8 9 CTS DCD DSR DTR GND RI RTS RxD TxD Clear To Send Data Carrier Detect Data Set Ready Data Termnal Ready Ground Ring Indicator Request To Send Receive Data Transmit Data Adaptateurs fournis : les adaptateurs fournis permettent de modifier les dispositions des différents signaux transmis par les ports des équipements. Ces derniers sont présentés aux figures 2.6 et 2.7 suivantes. Cyclades adapter ADB0025 Female RJ-45 (Cyclades ACS 5000) Female DB-9 (Console port) Orange/White Tracer 1 7 DTR Orange 2 TxD Green/White Tracer 3 GND Blue 4 CTS Blue/White Tracer RxD Green DCD DSR RTS Green/White Tracer RTS 4 Green DTR 3 Orange/White Tracer TxD 5 Blue GND 5 8 Blue/White Tracer CTS 6 2 Green RxD Brown/White Tracer 7 6 Brown/White Tracer DCD Brown 8 F IGURE 2.6 – Adaptateur ADB0025 permettant de connecter les équipements Cisco Cyclades adapter ADB0039 Male RJ-45 (Cyclades ACS 5000) Male RJ-45 (console port) RTS Orange/White Tracer 1 8 Green/White Tracer CTS DTR Orange 2 7 Green DSR TxD Green/White Tracer 3 6 Orange/White Tracer RxD GND Blue 4 4 Blue GND CTS Blue/White Tracer 5 1 Blue/White Tracer RTS RxD Green 6 3 Green TxD DCD Brown/White Tracer 7 5 Brown/White Tracer GND DSR Brown 8 2 Brown DTR F IGURE 2.7 – Adaptateur ADB0039 permettant de connecter les équipements munis d’un port console DB-9 36 CHAPITRE Implémentation de fonctionnalités (routeurs) 1 1.1 Protocoles de routage Routage statique Juniper JunOS Configuration statique des routes sur les routeurs Juniper (à partir du menu [edit]) Configurer une route statique et spécifier l’adresse suivante à être utilisée quand le trafic est routé vers cette route statique : set routing-options static route <destination prefix> next-hop <next-hop IP> Configurer la route par défaut (default gatway) : set routing-options static route 0.0.0.0/0 next-hop <gateway IP> Options sur la route statique : set routing-options static route <destination prefix> [options] – Toujours garder la route statique dans la table de routage (forwarding table) : retain – Empêcher la route statique d’être re-annoncée (readvertised) : no-readvertise – Enlever les routes inactives de la table de routage : active Cisco IOS Configuration statique des routes sur les routeurs Cisco Configurer une route statique : Router(config)# route <interface> <destination prefix> <mask> <next-hop IP> [< distance>] Remarque. Le paramètre <distance> est la distance administrative de la route (par défaut, elle est égale à 1 si aucune valeur n’est spécifiée). Configurer la route par défaut (0.0.0.0/0) : Router(config)# route <interface> {0 0 | 0.0.0.0 0.0.0.0} <gateway IP> [< distance> | tunneled] Remarque. Il est possible de remplacer 0.0.0.0 0.0.0.0 par 0 0 pour indiquer <destination prefix><mask> 1.2 IGP (Internor Gateway Protocol) Par défaut, OSPF est implémenté sur l’ensemble des réseaux de la plateforme. Cependant, il est possible d’implémenter RIP ou IS-IS. L’ensemble des opérations à effectuer sont décrites dans les sections suivantes. 37 3 Type Algorithme Admin Distance Métrique Standards Protocoles Protocole Transport Authentification AllSPF address AllDR address Etat de liens Dijkstra 110 100 000 kbps/vitesse du lien RFCs 2328, 2740 IP IP/89 Plaintext, MD5 8 Version 224.0.0.5 224.0.0.6 16 24 Type 32 Length Router ID Area ID Checksum Instance ID Reserved Data F IGURE 3.1 – Entête OSPF OSPF (Open Shortest Path First) Juniper JunOS JunOS gère à la fois OSPF et OSPFv3 qui permet l’utilisation de IPv6. Dans le menu [edit protocols ospf] edit protocols ospf set area 0.0.0.0 interface <interface> [passive] Variante OSPFv3 pour IPv6 : edit protocols ospf3 set area 0.0.0.0 interface <interface> [passive] Remarque. Le mot-clé passive permet d’annoncer la route sur le réseau interne, mais n’envoie pas de paquet OSPF hello. Afficher les voisins (neighbors) OSPF : run show ospf neighbor Cisco IOS De même, Cisco IOS gère à la fois OSPF et OSPFv3. Router(config)# router ospf <num> ! Advertising other static protocols to OSPF Router(config-router)# redistribute static subnets ! Backbone Router(config-router)# network <network address> <reversed mask> area 0 Configuration d’une interface avec OSPF : Router(config)# interface Ethernet0/1 Router(config-if)# description <description> Router(config-if)# ip address <interface IP address> <mask> Router(config-if)# ip ospf <num> area 0 ! Optional MD5 authentication configured Router(config-if)# ip ospf authentication message-digest Router(config-if)# ip ospf message-digest-key 1 md5 FooBar ! Give the priority in DR election Router(config-if)# ip ospf priority 100 Debug OSPF : Router# Router# Router# Router# Router# Router# show ip [route | protocols] show ip ospf interface show ip ospf neighbor show ip ospf border-routers show ip ospf virtual-links debug ip ospf [...] 38 RIP (Routing Information Protocol) Type Algorithme Admin Distance Métrique Standards Protocoles IP Protocole Transport Authentification Multicast IP Vecteur de distance Bellman-Ford 120 Hop count (max. 15) RFCs 2080, 2453 IPv4, IPv6 UDP Plaintext, MD5 224.0.0.9 / FF02::9 Implémentations de RIP : – RIPv1 : implémentation originale, limitée à un routage par classes (classful routing). Obsolète. – RIPv2 : introduit pour permettre un routage sans classes (classless routing), l’authentification, les mises à jours déclanchées (triggered updates) et les annonces multicast (multicast announcements). – RIPng, RIP Next Generation : Etend RIPv3 pour le support du routage IPv6. Les fonctions sont similaires à RIPv2, et sont donc tout aussi limitées. Comparaison des différentes implémentations : IP Admin distance Port UDP Classless Adresse d’avertissement Authentification RIPv1 RIPv2 RIPng IPv4 120 520 Non Broadcast Aucune IPv4 120 520 Oui IPv6 120 521 Oui 224.0.0.9 FF02::9 MD5 Aucune Terminologie : – Split horizon : un routeur n’annonce pas une route au voisin par lequel il l’a apprise. – Route poisonning : quand le réseau devient injoignable, une mise-à-jour avec une métrique infinie est générée pour annoncer explicitement que la route est injoignable. – Poison Reverse : un router annonce qu’un réseau est injoignable par l’interface par laquelle il l’a appris. Juniper JunOS Configuration minimale pour le protocole RIP. [edit protocols rip] # Créer le groupe <group name> et ajouter une interface set group <group name> neighbor <interface name> # Répéter pour chaque interface du groupe <group name> [edit policy-options] # Inclure la condition pour correspondre aux routes directes set policy-statement advertise-rip-routes term from-direct from protocol direct set policy-statement advertise-rip-routes term from-rip from protocol rip # Accepter cette condition set policy-statement advertise-rip-routes term from-direct then accept set policy-statement advertise-rip-routes term from-rip then accept Configuration minimale pour RIPng : [edit protocols ripng] set group <group name> neighbor <interface name> # Répéter pour chaque interface du groupe <group name> [edit policy-options] set policy-statement redist-direct from protocol direct set policy-statement redist-direct the accept 39 Cisco IOS Cisco IOS est compatible avec RIPv2 et RIPng. Configuration de RIPv2 : ! Enable RIPv2 IPv4 routing Router(config)# router rip Router(config-router)# version 2 ! Disable RIPv2 automatic summarization Router(config-router)# no auto-summary ! Designate RIPv2 interfaces by network Router(config-router)# network <network> ! Identify unicast-only neighbors Router(config-router)# neighbor <IP address> ! Originate a default route Router(config-router)# default-information originate ! Designate passive interfaces Router(config-router)# passive-interface {<interface> | default} ! Modify timers Router(config-router)# timers basic <update> <invalid> <hold> <flush> Configuration des interfaces avec RIPv2 : ! Configure manual route summarization Router(config-if)# ip summary-address rip <network mask> ! Enable MD5 authentication (RIPv2 only) Router(config-if)# ip rip authentication mode md5 Router(config-if)# ip rip authentication key-chain <key-chain> Configuration de RIPng : ! Enable IPv6 routing Router(config)# ipv6 unicast-routing ! Enable RIPng IPv6 routing Router(config)# ipv6 router rip <name> ! Toggle split-horizon and poison-reverse Router(config-router)# [no] split-horizon Router(config-router)# [no] poison-reverse ! Modify timers Router(config-router)# timers basic <update> <invalid> <hold> <flush> Configuration des interfaces avec RIPng : ! Enable RIPng on the interface Router(config-if)# ipv6 rip <name> enable ! Configure manual route summarization Router(config-if)# ipv6 rip <name> summary-address <prefix> Debug : Router# Router# Router# Router# Router# 1.3 show ip[v6] protocols show ip[v6] rip database show ip[v6] route rip debug ip rip { database | events } debug ipv6 rip [<interface>] EGP (Exterior Gateway Protocol) Utilisation du seul protocole de routage inter-domaine BGP (Border Gateway Protocol). Type eBGP Admin Distance iBGP Admin Distance Standards Protocoles Protocole Transport Authentification 40 Vecteur de chemins 20 200 RFC 4271 IP TCP/179 MD5 Terminologie : – Autonomous System (AS) : domaine logique sous le contrôle d’une seule et même entité. – External BGP (eBGP) : liens BGP qui couvrent les bordures de l’AS. – Internal BGP (iBGP) : liens BGP qui sont formés dans l’AS. – Synchronization Requirement : une route doit être connue par un IGP avant qu’elle soit annoncée aux pairs BGP. Attributs BGP : Nom Description Well-known mandatory : doit être supporté et propagé 1 Origin Type de l’origine (IGP, EGP, inconnu) 2 AS Path Liste des AS que l’annonce a traversé 3 Next Hop Pair extérieur dans l’AS voisin Well-known Discretionary : doit être supporté, propagation optionnelle 5 Local preference Métrique utile aux voisins locaux pour atteindre les destinations externes (par défaut : 100) 6 Atomic Aggregate Inclut les AS qui ont été jetés à cause d’une agrégation de routes Optional Transitive : marqué comme partiel if non supporté par le voisin 7 Aggregator ID et AS de la route résumée 8 Community Label de la route Optional Nontransitive : supprimé si non supporté par le voisin 4 Multiple Exit Discrimina- Métrique utile aux voisins externes pour atteindre l’AS local (par tor (MED) défaut : 0) 9 Originator ID Identifiant du noeud à l’origine de la route reflector 10 Cluster List Liste des identifiants des clusters 13 Cluster ID Cluster source – Weight Attribut propriétaire (Cisco) non communiqué aux pairs Sélection de la route : 1 2 3 4 5 Attribut Weight Local Preference Self-Originated AS Path Origin 6 7 8 9 10 MED External IGP Cost eBGP Peering Rouer ID Description Préférence administrative Communiquée entre les pairs d’un même AS Préférer les chemins d’origine locale Minimiser les sauts entre AS Préférer les routes apprises avec IGP plutôt que EGP, et EGP plutôt qu’inconnu Utilisé par les pairs externes pour entrer dans un AS Préférer les routes eBGP plutôt que les routes iBGP Considérer mes métriques IGP Favoriser les routes stables Tie Breaker Etats de voisins : – Idle : voisin ne répond pas – Active : tentative de connexion – Connect : connexion TCP établie Préférence Plus élevée Plus élevée Vrai Plus court IGP Plus petit eBGP Plus petit Plus vielle Plus petit – Open Sent : message Open envoyé – Open confirm : réponse reçue – Established : lien établi iBGP (internal BGP) iBGP est BGP utilisé en interne dans un AS comme un mécanisme pour échanger des informations entre plusieurs routeurs de bordure BGP. Les routeurs parlant iBGP doivent être connecté en réseau maillé (full mesh) pour éviter les boucles. 41 Juniper JunOS Pour tous les routeurs de l’AS. Il faut utiliser les adresses IP loopback des routeurs Juniper pour qu’ils puissent communiquer entre eux (pour la robustesse/disponibilité des routeurs, afin de prévenir qu’une interface soit inactive). Les adresses IP loopback sont alors configurées de la manière suivante pour les routeurs de l’AS 3 : – Juniper 1 : 10.255.3.1 – Juniper 2 : 10.255.3.2 – Juniper 4 : 10.255.3.4 Configuration de l’adresse loopback : edit interfaces lo0 set unit 0 family inet address 10.255.<AS number>.<router number>/32 Editer les options de routage : edit routing-options set router-id <router loopback address> autonomous-system <AS number> Editer les paramètres du protocole BGP : edit protocols bgp group internal-peers set type internal set local-address <router loopback address> export next-hop-self neighbor <neighbor router loopback address> Créer la règle next-hop-self : edit policy-options policy-statement next-hop-self edit term bgp # annonce des routes apprises avec BGP set from protocol bgp # paramètre next-hop contient l'adresse du routeur (pour défauts de route) set then next-hop self Debug BGP : # Lister les routes annoncées a un voisin [run] show route advertising-protocol bgp IP_pair # Voir les préfixes annoncés/reçus via les pairs : [run] show bgp neighbor Cisco IOS Configuration de iBGP pour les routeurs Cisco. Router(config)# router bgp <AS number> Router(config-router)# neighbor <neighbor IP> remote-as <same AS number> eBGP (external BGP) eBGP (External Border Gateway Protocol) est utilisé pour transporter des données à d’autres systèmes autonomes qui utilisent BGP également. Juniper JunOS set routing-options autnonmous-system <AS number> set roting-options static route <network address>/<network prefix> discard Editer les paramètres du protocole BGP ([edt protocol bgp]) : edit protocols bgp group <group name> set type external # E-BGP set export TO-EXTERNAL # utilisation de la règle TO-EXTERNAL set peer-as <neighbor AS number> set neighbor <neighbor IP address> 42 Créer la règle TO-EXTERNAL : edit policy-options policy-statement TO-EXTERNAL edit term 1 # premier amendement # annoncer une route configurée statiquement set from protocol static # annonce des routes statiques concernant le préfixe de l'AS set from route-filter <network address>/<network prefix> set then accept up edit term 2 # second amendement set then reject # rien d'autre n'est annoncé Remarque. Pour un AS de transit, il faut en plus annoncer les routes apprises avec E-BGP : edit term 2 set from protocol bgp set then accept up edit term 3 set then reject Cisco IOS Configuration de eBGP pour les routeurs Cisco Router(config)# router Router(config-router)# Router(config-router)# Router(config-router)# number> bgp <AS number> bgp dampening # description network <network address> <network mask> neighbor <neighbor IP address> remote-as <neighbor AS Ne pas oublier de créer la route vers null (sinon la route ne sera pas annoncée avec BGP) Router(config-router)# ip route <network address> <network mask> Null0 Debug / troubleshooting BGP : Router# Router# Router# Router# Router# show ip bgp [summary] show ip bgp neighbors show ip route [bgp] clear ip bgp * [soft] debug ip bgp [...] Influencer la sélection de chemins : Router(config-router)# Router(config-router)# Router(config-router)# Router(config-router)# Router(config-router)# neighbor 172.16.0.1 weight 200 ! weight bgp default local-preference 100 ! local preference default-metric 400 ! MED neighbor 172.16.0.1 route-map Foo ! route map bgp bestpath as-path ignore ! ignore AS path Installer un attribut local-pref : Router(config)# route-map LOCALPREF permit 10 Router(config-route-map)# set local-preference 500 Router(config-route-map)# router bgp <AS BGP number> Router(config-router)# neighbor <BGP peer> route-map LOCALPREF in 43 2 MPLS (MultiProtocol Label Switching) 8 16 Label 24 TC L2 32 S TTL IP Label stack F IGURE 3.2 – entête MPLS Attributs : – Label (20 bits) : valeur unique de label – Traffic class/EXP (3 bits) : marquage de QoS (Quality of Service) à l’aide d’un mappage de CoS (Class of Service) – Bottom of Stack (1 bit) : indique que le label est le dernier dans la pile – Time to Live (8 bits) : compteur de sauts mappé du champ TTL de IP Terminologie : – Label Distribution Protocol (LDP) : protocole de distribution de paquets (RFC 3036) – Resource reSerVation Protocol - Traffic Engineering (RSVP-TE) : protocole de réservation de ressources sur un réseau IP, extension du protocole RSVP. – Label Switching Router (LSR) : tout routeur effectuant un label switching – Label-Switched Path (LSP) : chemin unidirectionnel traversant un ou plusieurs LSR que prend un labelswitched packet qui appartient à une FEC – Forwarding Equivalence Class (FEC) : groupe de paquets qui sont forwardés de la même manière, typiquement à l’aide du préfixe de l’adresse destination et/ou de la classe de service (CoS) – Label Information Base (LIB) : contient tous les labels appris par un LSR à l’aide d’un protocole de distribution de labels (RSVP, LDP, TDP. . .) – Label FIB (LFIB) : base de donnée de routage pour des paquets étiquetés L’implémentation de MPLS n’est possible que pour au moins trois routeurs interconnectés dans le même système autonome. Il est nécessaire de spécifier les rôles des routeurs pour un LSP donné (Label Switched Path) : – Ingress router (LER, Label Edge Router) – Egress router (LER, Label Edge Router) – Transit routeurs (LSR, Label Switched Router) Afin de faire de la qualité de service (QoS), nous allons surtout développer la manière dont MPLS est implémenté, en utilisant RSVP. Le schéma 3.3 suivant montre la manière dont MPLS est implémenté dans l’AS 3. Juniper JunOS Implémentation de MPLS/RSVP. Activer MPLS et RSVP sur tous les routeurs mis en jeu : # Activer MPLS edit protocols mpls set interface all # activer MPLS sur toutes les interfaces set interface <interface> disable # désactiver MPLS sur l'interface # Activer RSVP edit protocols rsvp set interface all # activer RSVP sur toutes les interfaces set interface <interface> disable # désactiver RSVP sur l'interface 44 PSEUDOL MEDIAL L2 IP Ingress Router LER LSP Egress Router LER AS 2 AS 4 J2 J1 Transit Router LSR L2 J4 IP F IGURE 3.3 – MPLS dans l’AS 3, dans le sens J2 → J4 Activer MPLS sur toutes les interfaces mises en jeu dans la topologie : set interfaces <interface> family mpls Configurer un LSP (Label-Switched Path) edit protocol mpls set label-switched-path <lsp name> to <egress router> Remarque. Il faut bien configurer le LSP sur chacun des routeurs LER (Label Edge Router) afin que le LSP soit valide : – LSP de l’ingress router vers l’egress router – LSP inversé de l’egress router vers l’ingress router (qui voient donc leurs rôles inversés) Attention à bien activer le Traffic Engineering pour OSPF (quand OSPF est utilisé en tant que IGP) : edit protocols ospf set traffic-engineering shortcuts lsp-metric-into-summary up edit protocols mpls traffic-engineering bgp-igp Debug MPLS/RSVP : show show show show show route table inet.3 rsvp neighbor rsvp interface rsvp session detail mpls lsp extensive Remarque. Il est possible de créer un fichier de statistiques pour MPLS : [protocols mpls] mpls { statistics { file mpls-stats.txt; auto-bandwidth; } Le fichier de statistique est alors accessible par la commande : [run] file show /var/log/mpls-stats.txt Cisco IOS Configuration de MPLS pour les routeurs Cisco. ! Activer CEF Router(config)# ip cef ! Selctionner un protocole de distibution de labels Router(config)# mpls label protocol ldp ! Activer MPLS sur les interfaces Router(config)# interface <interface name> Router(config-if)# ip address <IP address> <mask> Router(config-if)# mpls ip 45 ! Augmenter la MTU de MPLS (multilabel stack) Router(config-if)# mpls mtu 1512 Debug : Router(config)# Router(config)# Router(config)# Router(config)# Router(config)# Router(config)# show mpls interfaces show mpls ldp bindings [detail] ! (LIB) show ip cef [detail] ! (FIB) show mpls ldp neighbors show mpls forwarding-table [detail] ! (LFIB) debug mpls [...] Implémentation de MPLS-TE avec RSVP, en s’appuyant sur RSVP : Router(config)# mpls traffic-eng area <area number> Router(config)# mpls traffic-eng router-id <loopback address> ! doit avoir un masque 255.255.255.255 Router(config)# Router(config)# ip cef [distributed] Router(config)# mpls traffic-engineering tunnel ! Activer MPLS/RSVP sur les interfaces concernées Router(config)# interface <interface name> Router(config-it)# bandwidth <bandwidth> Router(config-it)# ip address <IP address> <mask> Router(config-it)# mpls traffic-engineering tunnel Router(config-it)# ip rsvp bandwidth <bandwidth> ! Configuration d'un tunnel Router(config)# interface <tunnel name> Router(config-it)# ip unnumbered <loopback address> Router(config-it)# tunnel destination <dest address> Router(config-it)# tunnel mode mpls traffic-eng ! Annonce de la présence du tunne par le protocole de routage Router(config-it)# tunnel mpls traffic-eng autoroute announce 46 CHAPITRE Implémentation de services (serveurs) 1 NTP (Network Time Protocol) NTP est un protocole permettant la synchronisation des horloges locales des systèmes d’exploitation des équipements d’un même réseau sujet à la gigue (jitter). NTP utilise UDP sur le port 123. serveur1.core1 Serveurs AS 1 MEDIAL Serveurs AS 4 requête NTP serveur3.ent1 serveur2.core1 PSEUDOL serveur3.ent2 F IGURE 4.1 – Architecture NTP dans la plateforme Debian Les serveurs ayant pour système d’exploitation Debian peuvent à la fois être utilisés en tant que serveur NTP, ainsi que client NTP. Configuration d’un serveur NTP Installation du serveur NTP (à partir du CD d’installation de Debian par exemple) : apt-get install ntp ntpdate Le fichier de configuration du serveur NTP se trouve par défaut dans : /etc/ntp.conf : server 127.0.0.1 # Spécifier le serveur NTP père (itself) fudge 127.0.0.1 stratum 10 Exécuter le deamon ntp : /etc/init.d/ntp start Configuration d’un client NTP Vérifier que le deamon ntp n’est pas en marche (eg. commande top). Dans le cas échéant, supprimer le lien symbolique ntp du dossier /etc/rc5.d et stopper le deamon ntp : /etc/init.d/ntp stop. Installer le client NTP : apt-get install ntpdate Planifier une synchronisation périodique (eg. Tous les jours à 12 :00) : $ crontab -e # Editeur NANO 00 12 * * * /usr/sbin/ntpdate <NTP server IP> 47 4 Redémarrer cron : /etc/init.d/cron restart Utilisation de crontab : export EDITOR=vi crontab -e crontab -l crontab -r # Minute # (0-59) 0 Hour (0-23) 2 Spécifier un éditeur pour le fichier crontab Editer un fichier crontab, créé si besoin Afficher le fichier crontab Supprimer le fichier crontab Day of Month Month (1-31) (1-12 or Jan-Dec) 12 * Day of Week (0-6 or Sun-Sat) 0,6 Command <command> Remarque. Il est possible de placer plusieurs commandes à la suite : – En utilisant && pour qu’elles soient exécutées successivement, – En utilisant ; pour qu’elles soient exécutées simultanément. Afficher la date du système : date Fixer la date sur le système : date [MMjjhhmm[[CC]AA][.ss]] Juniper JunOS Configuration manuelle de la date/heure : set system time-zone Europe/Berlin set date 201001251115.00 # January 25, 2010 and 11:15:00 a.m set date ntp <ntp server IP> Configuration de NTP : set system ntp server <ntp server IP> version 4 prefer set system ntp server <ntp server 2 IP> version 4 Cisco IOS Configuration de NTP en mode client : ! Configurer l'adresse IP du serveur NTP set ntp server <ntp server IP> ! Activer le mode NTP client set ntp client enable ! Vérifier la configuration NTP show ntp [noalias] 2 DHCP (Dynamic Host Configuration Protocol) DHCP est un protocole qui permet d’assigner une adresse IP à un équipement, dès sa connexion sur un LAN où se trouve un serveur DHCP. Debian Installation de DCHP pour Debian : apt-get install isc-dhcp-server Editer le fichier de configuration /etc/dhcp/dhcpd.conf : option domain-name "<domain name>"; option domain-name-servers <domain name server IP>; subnet 192.168.1.0 netmask 255.255.255.0 { range <lowest IP address> <highest IP address>; option routers <router IP/name>; } Etablir des baux statiques : host <host name> { hardware ethernet <MAC address>; fixed-address <IP address>; } 48 Redémarrer le service DCHP : /etc/init.d/isc-dhcp-server restart Remarque. Pour configurer l’interface sur laquelle le serveur DHCP intervient, il faut éditer le fichier /etc /default/isc-dhcp-server : # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth1" Juniper JunOS Aller dans le menu de configuration DHCP : top edit system services dhcp Editer une plage (pool) d’adresses à attribuer : edit pool <network>/<prefixe> set address-range low <lowest IP address> high <highest IP address> set default-router <default router IP address> Configurer des baux statiques : edit static-binding <MAC address> set fixed-address <fixed IP address> set host-name <hostname> Cisco IOS Exclure des plages d’adresses : Router(config)# ip dhcp excluded-address <start> [<end>] Création d’une pool d’adresses à attribuer : Router(config)# ip dhcp pool <pool name> Router(dhcp-config)# network <network address> <network mask> Router(dhcp-config)# default-router <default router IP> ! Facultatif Router(dhcp-config)# dns-server <DNS server IP> Router(dhcp-config)# domain-name <domain name> Configurer des baux statiques : Router(dhcp-config)# host <host ip> <mask> Router(dhcp-config)# {client-identifier|hardware-address} <MAC address> Router(dhcp-config)# client-name <client name> Remarque. Pour créer des baux statiques, il faut avoir au préalable configuré une nouvelle pool spécifique au mapping. Durée du bail : Router(dhcp-config)# lease inifinte # bail inifini Router(dhcp-config)# lease <days> <hours> <minutes> Activer le service DHCP sur le routeur : Router(config)# service dhcp Commandes de debug : Router# show ip dhcp binding 3 Serveur HTTP (Apache) HTTP est un protocole permettant d’afficher des pages web sur les navigateurs des clients via port TCP/80. Un service HTTP est installé par défaut sur les serveurs Debian. Il est accessible depuis l’adresse localhost (127.0.0.1) depuis le serveur lui-même et depuis sont adresse dans le réseau depuis les autres serveurs. Les fichiers HTML sont placés par défaut dans le dossier /var/www. Redémarrer le service Apache : /etc/init.d/apache2. 49 4 Serveur FTP (File Transfer Protocol) FTP est un protocole permettant le transfert de fichier. La signalisation se fait sur le port TCP/20 et le transfert de fichier proprement dit se fait sur le port TCP/21. Installation de proftpd : apt-get install proftpd Le serveur FTP utilise les comptes de Debian pour gérer les authentifications. Editer le fichier /etc/proftpd.conf. Dans notre cas, nous allons simplement autoriser les utilisateurs à écrire dans le dossier /mnt/ftp par défaut : #Seul l'utilisateur adminftp a le droit d'écrire dans /mnt/ftp <Directory /mnt/ftp> <Limit WRITE> AllowUser adminftp DenyAll </Limit> </Directory> 5 DNS (Domain Name Service) DNS est un protocole permettant de mettre en correspondance des adresses physiques et des adresses logiques. La structure logique des adresses est hiérarchique : <sous-domaine>.<domaine>.<tld>. 5.1 Configuration sur un seul as (pas de hiérarchie) Client Editer le fichier /etc/resolv.conf : domain [<domain>.]<tld> search [<domain>.]<tld> nameserver <DNS server IP> Serveur Dans le fichier /etc/hostname, donner le nom complet de la machine. Par exemple : serveur3.ent1. org où : serveur3 est le <host>, ent1 est le <domain> et org est le <tld>. Redémarrer le service hostname.sh : /etc/init.d/hostname.sh start Dans le fichier /etc/host.conf, définir la séquence de recherche pour la résolution de nom : order hosts, bind multi on Editer le fichier /etc/hosts (ce fichier permet de bypasser la résolution de nom classique par serveur DNS) : 127.0.0.1 localhost.<domain>.<tld> localhost 23.7.100.3 <host>.<domain>.<tld> <host> Editer le fichier /etc/resolv.conf (ce fichier est utile à la résolution de noms du domaine) : domain <domain>.<tld> search <domain>.<tld> nameserver <DNS server IP> Installer le service bind : apt-get install bind9 Aller ensuite dans le dossier /etc/bind (cd /etc/bind) et copier le fichier db.local pour le domaine <domain>.<tld> qui nous intéresse (cp db.local db.<domain>.<tld>) Editer le ficher db.<domain>.<tld> : 50 ; BIND data file for <interface> interface ; $TTL 604800 @ IN SOA <host>.<domain>.<tld>. root.<domain>.<tld>. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS <host>.<domain>.<tld>. <host> IN A <host IP> <Ajouter une ligne par machine du réseau> Copier ensuite le fichier db.127 pour le domaine <domain>.<tld> qui nous intéresse (cp db.127 db. <domain>.<tld>.inv) Editer le fichier db.<domain>.<tld>.inv : ; BIND reverse data file for <interface> interface ; $TTL 604800 @ IN SOA <host>.<domain>.<tld>. root.<domain>.<tld>. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS <host>. <host IP LSByte> IN PTR <host>.<domain>.<tld>. <Ajouter une ligne par machine du réseau> Editer le fichier named.conf.local (et non le fichier racine named.conf) : zone "<domain>.<tld>" { type master; file "/etc/bind/db.<domain>.<tld>"; forwarders{}; }; zone "<reversed IP>.in-addr.arpa" { type master; file "/etc/bind/db.<domain>.<tld>.inv"; forwarders{}; }; Redémarrez le service bind9 : /etc/init.d/bind9 restart Debug On peut vérifier la syntaxe : named-checkzone webadonf.lan /etc/bind/db.webadonf.lan[.inv] named-checkconf /etc/bind/named.conf[.options] 5.2 DNS entre les AS Sur chaque serveur DNS, éditer le fichier /etc/bind/db.root et commenter toutes les lignes du fichier. Les serveurs DNS de chaque AS doivent être indiqués. Pour cela, ajouter deux lignes pour chaque AS en les adaptant : . 360000 IN NS <domain>.<tld>. <domain>.<tld>. 3600000 A <AS DNS server IP> Remarque. Il y a 4 AS, donc il faut ajouter 6 lignes dans le fichier db.root de chaque serveur DNS. 51 6 Supervision des équipements Afin de superviser l’ensemble des équipements, nous utilisons le protocole SNMP (Supervision Network Management Protocol) qui utilise les ports UDP/161 et UDP/162 (pour les traps). 6.1 Installation et configuration de Nagios Nagios est un outil qui permet de superviser des équipements à l’aide du protocole SNMP (Simple Network Management Protocol). Installation de Nagios : apt-get install nagios3 Définir les noms des machines administrées (éditer le fichier /etc/nagios3/conf.d/hosts.cfg) : define host{ host_name <name> alias <alias> address <ip> check_command <commande executée> } La liste des commandes que l’on peut exécuter se trouve dans les fichiers .cfg présents dans le dossier /etc/nagios-plugins/config, comme check-swithch-alive, check-router-alive ou check -host-alive. Définir les groupes de machines (éditer le fichier /etc/nagios3/conf.d/hostgroups_nagios2.cfg ): define hostgroup{ hostgroup_name <group name> alias <alias> members <member 1>, <member 2>, ... } Définir les services supervisés sur les hôtes ou les groupes (éditer le fichier /etc/nagios3/conf.d/ services_nagios2.cfg) : define service{ hostgroup_name <group> # ou host_name <host> service_description <description> check_command <command> } Les commandes disponibles sont présentes dans le dossier /etc/nagios-plugins/config. Afin de prendre en compte les configurations, il faut redémarrer le service : /etc/init.d/nagios3 restart 6.2 Configuration de SNMP (client) Afin de vérifier que SNMP est bien activé sur les routeurs, on doit utiliser l’utilitaire snmpwalk. Il faut tout d’abord veiller à ce que le paquet snmp soit téléchargeable ; pour ce faire, il faut ajouter une source apt dans le fichier /etc/apt/sources.list : deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free Il est alors possible d’installer snmp à l’aide de la commande apt-get install snmp. Il est possible de tester le protocole SNMP sur les routeurs avec cet exemple : 52 snmpwalk -c public -v 2c 13.8.0.36 1.3.6.1.4.1.2636.3.1.13.1.5 iso.3.6.1.4.1.2636.3.1.13.1.5.1.1.0.0 = STRING: "midplane" iso.3.6.1.4.1.2636.3.1.13.1.5.4.1.0.0 = STRING: "Jseries CPU fan" iso.3.6.1.4.1.2636.3.1.13.1.5.7.1.0.0 = STRING: "FPC: FPC @ 0/*/*" iso.3.6.1.4.1.2636.3.1.13.1.5.8.1.1.0 = STRING: "PIC: 4x GE Base PIC @ 0/0/*" iso.3.6.1.4.1.2636.3.1.13.1.5.9.1.0.0 = STRING: "Routing Engine" iso.3.6.1.4.1.2636.3.1.13.1.5.9.1.1.0 = STRING: "USB Hub" iso.3.6.1.4.1.2636.3.1.13.1.5.9.1.2.0 = STRING: "Removable Compact Flash" 6.3 Configuration des équipements pour SNMP Cisco : Router(config)# Router(config)# Router(config)# Router(config)# Router(config)# Router(config)# snmp-server community public RO ! Read-Only snmp-server community private RW ! Read-write snmp-server location Paris snmp-server contact Olivier Fourmaux snmp-server enable traps snmp host <snmp server> traps SNMPv2 Juniper : [edit snmp] community public { authorization read-only; client { 4.11.100.32/28; # seule autorisation 0.0.0.0/0 restrict; # interdiction àtout le monde } } 6.4 Utilisation de Cacti Introduction et installation Cacti est un outil open-source permettant de consulter aisément des mesures de performances effectuées ayant pour source des serveurs (et les services fonctionnant sur ceux-ci), ou autres équipements réseaux. Cacti communique généralement avec les équipements réseaux en utilisant le protocole SNMP. Pour fonctionner convenablement, Cacti requiert la présence d’un serveur web HTTP (Apache, Nginx, Lighttpd, . . .), d’un serveur de base de donnée (plutôt de type MySQL), ainsi que de PHP. Nous utilisons des distributions Debian, de ce fait, nous installons Cacti simplement grâce au gestionnaire de paquets aptitude, de la manière suivante : apt-get install cacti. Configuration BDD/Utilisateurs Il faut ensuite configurer Cacti (via un navigateur) afin de lui permettre d’utiliser MySQL. L’installation est simple, puisque tout est quasiment automatique. . . Il faut se rendre à l’adresse http://localhost/cacti/ et procéder de la manière suivante : – Sélectionner “New Install”, puis “Next”, – On arrive ensuite sur une page qui vérifie que les outils requis par Cacti sont présents sur la machine (tout doit être vert). Cliquer enfin sur “Finish”, – Ensuite on arrive sur la page de login, s’authentifier avec le couple de login/mot de passe suivant : admin /admin, on doit ensuite choisir un nouveau mot de passe. Cliquer sur “Save”. Cacti est enfin configuré. 53 Ajouts d’équipements sources Il faut tout d’abord bien s’assurer que les équipements soient compatibles SNMP, et bien sûr configurés. – Cliquer sur le lien “Create devices for network”, – Cliquer sur “Add” en haut à droite, juste en dessous de “Logout”. Remplir les champs “Description”, “Hostname” (ie. IP de la machine), . . . Mettre “Host template”" à “Generic SNMP-enabled Host”, “SNMP Version” à “Version 2”, on valide le tout en cliquant sur le bouton “Create”. On va maintenant ajouter les informations à récupérer sur l’équipement : – Cliquer sur “Data Source List” (approximativement en haut à droite), ensuite sur le lien “Add” à droite, – Changer “Selected Data Template” à “Interface – Traffic” puis cliquer sur le bouton “Create”, – Sur la page qui s’affiche, juste cliquer sur le bouton “Save”. Remarque. Il faut parfois patienter quelques minutes avant que la requête SNMP ne soit réalisé. On va créer un graphique par interface sur lequel on aura le débit du trafic sur l’interface en octet/sec : – Cliquer sur “Create Graphs for this Host”, – Sélectionner les interfaces qui nous intéressent, ne pas oublier de changer la valeur de “Select a graph type :” selon ce que l’on recherche (ici trafic en octets) puis valider avec “Create”. Il faut maintenant ajouter l’équipement dans l’arbre : – Cliquer sur “Graph Trees” dans le menu de gauche, puis “Default Tree”. 54 Cliquer sur “Add”. Sur la page chargée, changer la valeur de “Tree Item Type” par “Host”, puis Choisir dans la liste “Host” l’équipement à ajouter, on valide ensuite avec “Create”. On peut modifier le texte affiché des graphes dans la “Graph List” de l’équipement, afin de rendre plus lisible les informations (PORT 24 → serveur2), etc. Il faut patienter quelques minutes (environ 5), avant de pouvoir consulter le résultat dans l’onglet bleu “Graphs”. 7 VPN OpenVPN est basé sur une architecture client/serveur. Il doit être installé aux deux extrémités du VPN. Une extrémité est désignée comme serveur (ici le serveur 1 de l’AS 4) et l’autre comme client (le serveur 2 de l’AS 1). Installation d’OpenVPN (sur le serveur et le client) : apt-get install openvpn. server.crt server.key client.crt client.key Internet serveur1.ent2 Serveur OpenVPN ca.crt serveur1.ent1 Client OpenVPN dh1024.pem F IGURE 4.2 – Architecture VPN dans la plateforme 7.1 Configuration du serveur OpenVPN Se connecter en root : su sous debian. Il faut tout d’abord ouvrir un terminal et effectuer une copie dans son dossier /root des scripts de génération de clés : 55 cp /usr/share/doc/openvpn/examples/easy-rsa ~/openvpn/ -R L’ensemble des commandes se feront dans le répertoire déplacé : cd ~/openvpn/2.0/ Maintenant éditer le fichier vars et initialiser les variables KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL. Ne laisser surtout pas un seul champ vide. Il faut modifier les dernières lignes à sa convenance. Dans notre cas : export export export export export KEY_COUNTRY=FR KEY_PROVINCE=ileDeFrance KEY_CITY=paris KEY_ORG=pfres [email protected] Puis effectuez la commande : . ./vars pour prendre en compte les changements des variables. On efface toutes les clés et certificats existants à l’aide de la commande : ./clean-all. Puis, il faut créer le certificat et la clé de l’Autorité de Certification Maitre (Master Certificate Authority (CA) : ./build-ca Le certificat et la clé de l’Autorité de Certification sont à présent créés au niveau des fichiers : ca.crt et ca.key dans le dossier keys. Nous allons générer un certificat et une clé privée pour le serveur. Si le nom du serveur est : server, le certificat et la clé privée sont créés à l’aide de la commande : ./build-key-server server. Laisser les paramètres par défaut et et accepter les deux questions. Les paramètres Diffie-Hellman doivent être générés pour le serveur OpenVPN : ./build-dh Attention pour le serveur le fichier d’exemple est compressé dans le fichier : server.conf.gz, il faut le gunzipper de la façon suivante : cd /usr/share/doc/openvpn/examples/sample-config-files sudo gunzip server.conf.gz Puis exécuter la commande ci dessous : sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/ openvpn/ La configuration par défaut est correcte et ne nécessite pas de modifications dans notre cas. Remarque. Il faut prendre une attention toute particulière concernant : – L’utilisation du pool d’adresses 192.168.0.0/24 pour le VPN : il ne faut qu’un réseau utilise des adresses de cette plage. – Si le nom du serveur n’est pas server il faut éditer le fichier et changer le nom des fichiers server.[ ca|cert|key] en <server name>.[ca|cert|key]. Le serveur doit recevoir les paquets VPN du client sur une interface précise. Pour ce faire, éditer la ligne : local 4.11.100.1 dans /etc/openvpn/server.conf. Editez ensuite la directive remote pour indiquer l’adresse IP/nom d’hôte et le port du serveur OpenVPN. Ici : remote 4.11.100.1 1193. 7.2 Configuration du client OpenVPN Il faut copier le répertoire donné en exemple dans l’installation de OpenVPN pour le client : cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/ openvpn/ De la même manière que pour le serveur, il faut générer ensuite le couple de clés et certificats du client client1 à l’aide de la commande : ./build-key client1 Comme le fichier de configuration du serveur, éditer d’abord les paramètres ca, cert et key pour pointer vers les fichiers générés précédemment (du client cette fois). Dans notre cas il faut renommer client.ca en client1.ca, etc. 56 7.3 Finalisation (wrap-up) Il faut également déplacer (commande cp pour le serveur et scp pour le client) les clés et certificats dans le dossier /etc/openvpn. Sont concernés les fichiers suivants : – ca.crt : pour le serveur et le client, – Pour le serveur : les fichiers server.crt, server.key, dh1024.pem – Pour le client : les fichiers client.crt, client.key, ca.crt Pour simplifier la recherche de problèmes (troubleshooting), il est préférable de démarrer le serveur OpenVPN depuis la ligne de commande (ie. dans le dossier /etc/openvpn) plutôt que de démarrer le démon (ie. / etc/init.d/openvpn start). Dans un terminal : # Serveur cd /etc/openvpn && sudo openvpn server.conf # Client cd /etc/openvpn && sudo openvpn client.conf Si le VPN fonctionne, alors de nouvelles interfaces auront être activées sur le serveur et le client (commande ifconfig). Par ailleurs, la nouvelle interface doit avoir une adresse IP dans le pool d’adresses indiqué sur le fichier configuration du serveur. Si les nouvelles interfaces sont activées, il est possible de pinger le client à partir du serveur ou réciproquement : ping 192.168.0.1. Si le ping a fonctionné, le VPN fonctionne ! Vous pouvez utiliser le démon (ie. /etc/init.d/openvpn start). Il est ensuite possible d’ajouter des machines au client et/ou au serveur. Dans le cadre du projet, et pour rester dans un caractère général, on n’obligera pas les hôtes à passer par le VPN. 8 IPSec IPSec (IP Secure) est un protocole de sécurité pour IP. Il est composé de : – Ecapsulation Security Payload (ESP) qui permet de chiffrer les données, – Authentication Header (AH) qui permet d’authentifier les données. Par ailleurs, il peut être utilisé en mode tunnel (ie. encapsulation de tout le paquet IP) ou en mode transport (ie. encapsulation du payload). Pour implémenter IPSec sur la plateforme, nous utilisons le paquet ipsec-tools : sudo apt-get install ipsec-tools. Editer le fichier /etc/ipsec-tools.conf à l’aide d’un éditeur de texte. Le fichier est composé de deux parties : – Une première partie définissant les clés à utiliser (commandes add), – Une seconde partie définissant les politiques de sécurité (commande spdadd). 8.1 Configuration des clés à utiliser Définition des clés que les deux partis vont utiliser à l’aide de la commande add : add <local ip> <remote ip> [ah|esp] <unique number 1> [-E|-A] <encryption algorithm> <key 1>; add <remote ip> <local ip> [ah|esp] <unique number 2> [-E|-A] <encryption algorithm> <key 2>; Pour utiliser les modes AH et ESP, il faudra taper deux fois les deux lignes précédentes : – Avec l’option -A (authentication) et deux clés différentes et un algorithme d’authentification (eg. hmacmd5), – Avec l’option -E (encryption) et deux autres clés différentes et un algorithme de chiffrement (eg. 3descbc, aes-cbc). 57 8.2 Configuration des politiques de sécurité Les politiques de sécurité permettent de définir les politiques pour les communications entrantes et sortantes. Pour accepter toutes les communications entrantes et/ou sortantes, utiliser le mot-clé any. spdadd <local ip> [<port>|any] <remote ip> [<port>|any] -P out ipsec esp/{transport|tunnel}//{require|option} [ah/{transport|tunnel}//{require|option}]; spdadd <remote ip> [<port>|any] <local ip> [<port>|any] -P in ipsec esp/{transport|tunnel}//{require|option} [ah/{transport|tunnel}//{require|option}]; Remarque. Le manuel associé à ipsec-tools est accessible à l’aide de la commande man setkey 8.3 Finalisation Protéger le fichier ipsec-tools.conf à l’aide de la commande : sudo chmod 750 ipsec-tools.conf Cela empêche un utilisateur mal intentionné d’avoir accès aux clés. Pour activer le service, utiliser la commande : sudo /etc/init.d/setkey start. 58 CHAPITRE VoIP et Qualité de service (QoS) 1 VoIP (Voice over IP) La VoIP est une technique qui permet de communiquer par la voix sur des réseaux compatibles IP. Afin d’implémenter la VoIP sur la plateforme, nous avons choisi d’utiliser Asterisk. Asterisk implémente les protocoles H.320, H.323 et SIP, ainsi qu’un protocole spécifique nommé IAX (Inter-Asterisk eXchange). Ce protocole IAX permet la communication entre deux serveurs Asterisk ainsi qu’entre client et serveur Asterisk. Asterisk peut également jouer le rôle de registrar et passerelle avec les réseaux publics (RTC, GSM, etc.) Configuration des équipements : interface <interface> ! Configure data and voice access VLANs switchport access vlan <VLAN> switchport voice vlan <VLAN> ! Trust ingress QoS markings mls qos trust cos ! Optionally pre-allocate power for the port power inline static [max <wattage>] 1.1 Installation du serveur de voix Asterisk Mettre à jour Debian : apt-get update && apt-get dist-upgrade Installer les dépendances pour Asterisk 10 Debian : install -y build-essential linux-headers-`uname -r` libxml2-dev ncurses-dev libsqlite3-dev sqlite3 Créer un répertoire dans /usr/src pour Asterisk : mkdir /usr/src/asterisk Aller dans ce répertoire : cd /usr/src/asterisk Télécharger Asterisk 10 et les outils DAHDI en utilisant la commande wget : wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk -10.0.0.tar.gz && wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases /dahdi-linux-complete-2.6.0+2.6.0.tar.gz Extraire les deux archives tar.gz : tar -xvzf asterisk-10.0.0.tar.gz && tar -xvzf dahdi-linux-complete -2.6.0+2.6.0.tar.gz Installer (build) les outils DAHDI sur Debian (à faire avant d’installer Asterik) : 59 5 cd dahdi-linux-complete-2.6.0+2.6.0/ make all && make install && make config Lancer les outils DAHDI : /etc/init.d/dahdi start Installer (build) Asterisk 10 pour Debian 6 en le compilant : cd ../asterisk-10.0.0/ make clean ./configure Une fois la configuration de l’application terminée, le logo Asterisk doit apparaître : .$$$$$$$$$$$$$$$=.. .$7$7.. .7$$7:. .$$:. ,$7.7 .$7. 7$$$$ .$$77 ..$$. $$$$$ .$$$7 ..7$ .?. $$$$$ .?. 7$$$. $.$. .$$$7. $$$$7 .7$$$. .$$$. .777. .$$$$$$77$$$77$$$$$7. $$$, $$$~ .7$$$$$$$$$$$$$7. .$$$. .$$7 .7$$$$$$$7: ?$$$. $$$ ?7$$$$$$$$$$I .$$$7 $$$ .7$$$$$$$$$$$$$$$$ :$$$. $$$ $$$$$$7$$$$$$$$$$$$ .$$$. $$$ $$$ 7$$$7 .$$$ .$$$. $$$$ $$$$7 .$$$. 7$$$7 7$$$$ 7$$$ $$$$$ $$$ $$$$7. $$ (TM) $$$$$$$. .7$$$$$$ $$ $$$$$$$$$$$$7$$$$$$$$$.$$$$$$ $$$$$$$$$$$7$$$$. Afin de personnaliser l’installation de Asterisk, installer (build) en utilisant menuselect : make menuselect Installer (make) Asterisk 10 : make && make install – Lancer la console Asterisk avec la commande asterisk – Lancer le service Asterisk : /etc/init.d/asterisk start 1.2 Utilisation du serveur de voix Asterisk L’un des téléphones sera placé dans l’AS 1 et l’autre dans l’AS 4 dans les sous-réseaux suivants : – AS 1 : 23.7.100.48/29 (vlan 112) – AS 4 : 4.11.100.64/28 (vlan 444) Ces sous-réseaux sont dédiés à la téléphonie. Les détails des adresses des AS 1 et 4 ont été donnés respectivement au niveau des sections 2 et 5 du chapitre 1. L’outil rasterisk permet : – L’affichage des messages d’erreurs en direct, – L’affichage de l’état des téléphones, – L’affichage de l’état des liens trunk. 60 Pour vérifier l’enregistrement des téléphones, la commande sip show peers permet d’afficher l’état des utilisateurs. Editer le fichier /etc/asterisk/sip.conf : [general] context=local ; context par defaut pour les utilisateurs bindport=5060 ; port UDP du protocole SIP bindaddr=0.0.0.0 ; trafic 0.0.0.0 pour toutes les interfaces language=fr ; messages vocaux en français register => trunk_AS4_vers_AS1:[email protected] ; enregistrement auprès du serveur Asterisk Ent2 (AS 4). [Bob] ; obligatoire ; login SIP secret=pfres ; obligatoire ; mot de passe SIP type=friend ; obligatoire ; autorise les appels entrant et sortant host=dynamic ; obligatoire ; adresse IP du client callerid="Bob" <100> ; facultatif ; nom et numméro de téléphone affichés sur le téléphone appelé. [trunk_AS1_vers_AS4] ; trunk pour enregistrement du serveur Asterisk Ent2 (AS 4) auprès du serveur Ent1 (AS 1). context=local secret=pfres type=friend host=dynamic insecure=port,invite Afin de vérifier que l’enregistrement est bien effectif, exécuter la commande sip show registery dans rasterisk. La colonne State du trunk doit être à l’état Registered (cela n’est possible que si le serveur de l’AS 4 est aussi configuré). Editer le fichier /etc/asterisk/extensions.conf : [local] exten => 100, 1, Dial(SIP/Bob, 10) ; les appels arrivant sur le serveur Asterisk àdestination du numéro 100 sont envoyés vers le téléphone de Bob pendant 10 secondes. exten => _2XX, 1 ,Dial(SIP/trunk_AS1_vers_AS4/${EXTEN}) ; les appels arrivant sur le serveur Asterisk àdestination de numéro commençant par 2 sont envoy és sur le serveur Ent2 (AS 4). Il faut bien sur faire une configuration équivalente sur le serveur Asterisk de l’AS 4. Remarque. Pour prendre en compte les changements, effectuer la commande : /etc/init.d/asterisk restart 1.3 Configuration des téléphones Configurer les adresses IP et masques sur les téléphones Linksys SPA962 en utilisant directement le menu du téléphone (touche fichier puis sous-menu network). Se connecter à l’interface web du téléphone. Cliquer sur admin et advanced en haut gauche, puis cliquer sur l’onglet Ext 1. Noter l’adresse de votre serveur Asterisk dans le champ proxy, noter le login et le mot de passe (ici pfres) de Bob dans les champs User ID et Password. Placer (xxx) dans le champ Dial Plan. Ceci indique que l’on utilise des numéros à 3 chiffres. Placer Enable IP dialing sur no. Cliquer enfin sur Submit All changes (le téléphone redémarre alors). 61 2 2.1 QoS (Quality of Service) Généralités Modèles de qualité de service : – Best effort : aucune politique de QoS n’est implementée. – Intergrated Services (IntServ) : le protocole RSVP (Ressource Reservation Protocol) est utilisé pour réserver de la bande passante pour les flots à travers tous les nœuds sur un chemin. – Differentiated Services (DiffServ) : les paquets sont classifiés et marqués individuellement. Les décisions concernant les politiques de QoS sont prises indépendamment par chaque nœud sur un chemin. Marquage de QoS des trames (couche 2) : Médium Ethernet Frame Relay ATPM MPLS Nom Class of Service (CoS) Discard Eligibility (DE) Cell Loss Priority (CLP) Traffic Class (TC) Type 3-bit 802.1p field in 802.1Q header 1-bit drop eligibility flag 1-bit drop eligibility flag 3-bit field compatible with 802.1p Precedence Ver HL TOS Len DSCP Marquage de QoS des paquets IP : – IP Precedence : les premiers 3 bits du champ TOS de l’entête IP (limité à 8 classes) – Differentiated Services Code Point (DSCP) : les premiers 6 bits du champ TOS de l’entête IP sont évalués pour avoir plus de classes disponibles. Rétro-compatibilité avec IP Precedence. 56 48 46 32 34 36 38 24 26 28 30 16 18 20 22 8 10 12 14 0 Binary 111000 110000 101110 100000 100010 100100 100110 011000 011010 011100 011110 010000 010010 010100 010110 001000 001010 001100 001110 000000 DSCP NC2/CS7 NC1/CS6 EF CS4 AF41 AF42 AF43 CS3 AF31 AF32 AF33 CS2 AF21 AF22 AF23 CS1 AF11 AF12 AF13 BE Forwarding Class Network-control Internetwork-control Expedited-forwarding (Critical) Flash Override Assured-forwarding Assured-forwarding Assured-forwarding Flash Assured-forwarding Assured-forwarding Assured-forwarding Immediate Assured-forwarding Assured-forwarding Assured-forwarding Priority Assured-forwarding Assured-forwarding Assured-forwarding Best-effort 62 Packet Loss Priority (PLP) Low Low Low Low Low Medium High Low Low Medium High Low Low Medium High Low Low Medium High N/A Prec. 7 6 5 4 3 2 1 0 Gestion de file d’attente (Congestion Avoidance) : – Random Eraly Detection (RED) : les paquets sont jetés aléatoirement avant que la file ne soit pleine pour éviter les drop tail. RED permet de désynchroniser les fenêtres de congestion TCP avec un bon paramétrage. – Weighted RED (WRED) : RED avec la capacité de distinguer le trafic prioritaire en se basant sur son marquage QoS. – Class-Based WRED (CBWRED) : WRED utilisé à l’intérieur d’une file d’attente class-based WFQ (CBWFQ). No Yes Queuing Decision Software Queue Scheduler Software Queue HW Queue Full? Hardware Queue Software Queue F IGURE 5.1 – Diagramme de QoS Terminologie : – Per-Hop Behavior (PHB) : actions individuelles de QoS effectuées à chaque nœud indépendant DiffServ. – Trust Boundary : au-delà de ce point, le marquage QoS des paquets entrant n’est pas certain (trusted). – Tail Drop : a lieu lorsqu’un paquet est jeté parce que la file est pleine. – Policing : impose un plafond artificiel sur la bande passante qui peut être utilisée. Le trafic excédant par rapport à la politique est re-classifié ou jeté. – Shaping : similaire à policing, mais met en buffer le trafic excédant pour délayer la transmission. La bande passante est mieux utilisée, mais du délai est introduit. – TCP Synchronization : les flux synchronisent les fenêtres TCP, ce qui sous-utilise le lien. DCSP Per-Hop Behaviors : – Class Selector (CS) : compatible avec les valeurs de IP Precedence. – Assured Forwarding (AF) : 4 classes avec des drop preferences variables. – Expedited Forwarding (EF) : priorité en file d’attente pour le trafic sensible au temps. Ingress Node Interior Node TCA PHB PHB Egress Node TCA PHB (a) Architecture DiffServ (Differentiated Services) Classification / Marking / Policing / Shaping Classification / Marquage / Contrôle / Mise en forme Queuing / Dropping File d'attente / Rejet (b) Traffic Conditioning Agreement (TCA) (c) Per-Hop Behavior (PHB) 63 Priority Queuing (PQ) First In First Out (FIFO) High Tx Ring Medium Normal Hardware Queue Low – Les paquets sont traités dans leur ordre d’arrivée. – Aucune priorité n’est utilisée. – File d’attente par défaut sur les interfaces à hautdébit (> 2 Mbit/s). – 4 files d’attente statiques non re-configurables. – Les files d’attente de plus hautes priorités sont toujours vidées avant celles de plus basses priorités. – Les files d’attente de basses priorité ont des risques de famine (au niveau de la bande passante). Weighted Fair Queuing (WFQ) Custom Queuing (CQ) Queue A 500 B/cycle Queue B 4500 B/cycle Queue C Hardware Queue Flow 1 Flow 2 Hardware Queue 1500 B/cycle ... Flow n Hardware Queue – Rotation des files d’attente en utilisant Weighted Round Robin (WRR). – Traite un nombre configurable d’octets de chaque file d’attente par tour. – Evite la famine au niveau de chaque file d’attente, mais aucun délai de bout-en-bout garanti (pas adapté pour le trafic sensible au temps). – Les files d’attente sont créées dynamiquement pour chaque flot pour assurer un traitement équitable. – Statistiquement, les paquets des flots les plus “agressifs” sont jetés plus souvent. – Aucun support pour le trafic sensible au temps. Class-Based Weighted Fair Queuing (CBWFQ) Low Latency Queuing (LLQ) Queue A 512 kbps Min Queue B 1024 kbps Min Default Priority Hardware Queue Remainder 2.2 Queue A 512 kbps Min Queue B 1024 kbps Min Default – WFQ avec des files d’attente configurées par un administrateur. – Une quantité/pourcentage de bande passante est allouée à chaque file d’attente. – Aucun support pour le trafic sensible au temps. 512 kbps Max Remainder – CBWFQ avec une politique de priorité stricte pour la file d’attente. – Très configurable, tout en assurant le support pour le trafic sensible au temps. Implémentation dans Juniper JunOS Ingress BA Classifier Policing (Ingress) Multifield Classifier Forwarding Policy Forwarding Class Fabric Loss Priority Egress Rewrite Marker Scheduler Shaper RED Multifield Classifier Policing (Egress) F IGURE 5.2 – Processus de QoS au niveau des routeurs Juniper Les composantes définissant la Class of Service pour les routeurs Juniper sont les suivantes : 64 Hardware Queue Multifield Classifier Associer les code-points DSCP ou EXP et les PLP (Packet Loss Priority) à une classe de services donnée aux différents flots [edit class-of-service classifiers] Forwarding-classes Définir plusieurs files d’attente. Quatre classes sont définies par défaut sur Juniper : – File d’attente (Queue) 0 : classe Best-Effort, – File d’attente (Queue) 1 : classe Expedited-Forwarding, – File d’attente (Queue) 2 : classe Assured-Forwarding, – File d’attente (Queue) 3 : classe Network-Control. [edit class-of-service forwarding-classes] Interfaces Appliquer des règles données (définies au niveau des classifiers) aux interfaces souhaitées [edit class-of-service interfaces] Scheduler Définir un comportement pour le trafic sortant en fonction de la forwarding-class [edit class-of-service schedulers] Scheduler-map Associer les schedulers à une forwarding-class [edit class-of-service scheduler-maps] Policer Restreindre selon des critères (bande passante, sporadicité, . . .) les différents flots [edit firewall policer <policer name>] Filter Filtrer des flots particulier selon différents critères (adresse IP source/destination, protocole de la couche transport, . . .) [edit firewall filter <filter name>] Debug/Troubleshooting : show show show show class-of-service class-of-service class-of-service class-of-service <interface> classifier name <classifier name> code-point-aliases dscp rewrite-rule MPLS et QoS Les routeurs Juniper de l’AS 3 doivent pouvoir à la fois supporter la QoS tout en utilisant MPLS. De ce fait, il est nécessaire de les rendre compatibles avec le Traffic Class implémenté au niveau de MPLS (avec le champ EXP). Utilisation du champ EXP de MPLS (EXPerimental) qui correspond à la classe de service pour le protocole MPLS. Il s’agit de E-LSP (EXP-inferred Label Switched Path) qui peuvent porter des paquets avec 8 PerHop Behavior distincts pour un seul LSP. Code Point Forwarding Class Loss Priority 000 001 010 011 100 101 110 111 Best effort Best effort Expedited forwarding Expedited forwarding Assured forwarding Assured forwarding Network control Network control Low High Low High Low High Low High Redéfinir les valeurs DSCP en valeurs pour le champ EXP de MPLS : [edit class-of-service] rewrite-rules { exp base-exp-remarking { forwarding-class be { loss-priority low code-point 000; 65 } forwarding-class loss-priority loss-priority } forwarding-class loss-priority } assured-forwarding { low code-point 001; high code-point 010; expedited-forwarding { low code-point 101; } } Attacher les rewrite rules aux interfaces concernées des routeurs concernés : [edit class-of-service interfaces] <interface> { unit <interface unit> { rewrite-rules { dscp <rewrite DSCP rule>; exp <rewrite EXP rule>; } } } 2.3 Implémentation dans Cisco IOS Différentes étapes pour la configuration de la QoS Première étape : définir le trafic qui nécessite une qualité de service particulière au niveau du routeur. Cela peut se faire à l’aide de : – Les Access Control List (ACL), – La fonction NBAR (Network Based Application) définie par Cisco, qui permet au routeur de reconnaître du trafic particulier (HTTP, Skype. . .) Création des ACL en utilisant la commande : Router(config)# access-list <acl number> {deny | permit | remark} <protocol> { <source> <source-wildcard> | host <source> | any} [operator <port>] {<dest > <dest-wildcard> | host <dest> | any} [operator <port>] Deuxième étape : créer une classe de trafic (traffic class) à l’aide de class-map. Une class-map répartit le trafic en différents groupes. Router(config)# class-map [match-all | match-any] <class name> ! Match criteria for class map based on a specified Access Control List (ACL) Router(config-cmap)# match access-group {<access group> | name <access group name>} ! Valeurs optionnelles Router(config-cmap)# match any ! successful for all packets Router(config-cmap)# match class-map <class name> Router(config-cmap)# match destination-address mac <MAC address> Router(config-cmap)# match discard-class <class number> Router(config-cmap)# match [ip] dscp <dscp value> ! match criterion is a specific IP DSCP Router(config-cmap)# match field <protocol> <protocol field> {eq [mask] | neq [mask] | gt | lt | range <range> | regex <string>} <value> [next <nextprotocol>] Router(config-cmap)# match input-interfaces <interface name> Router(config-cmap)# match protocol <protocol name> Router(config-cmap)# match source-address mac <address destination> 66 Troisième étape : créer une une politique de trafic (traffic policy) à l’aide d’une policy-map. Une policy-map permet d’appliquer d’appliquer des politiques sur les classes définies lors de l’étape précédente avec class-map. Router(config)# policy-map <policy name> Router(config-pmap)# class {<class name> | class-default } ! name of a traffic class ! Valeurs optionnelles Router(config-pmap-c)# bandwidth {<bandwidth kbps | percent <percent>} Router(config-pmap-c)# fair-queue <number of queues> Router(config-pmap-c)# police <bps> [<burst normal>] [<burst max>] conformaction <action> exceed-action <action> [violate-action <action>] Router(config-pmap-c)# priority {<bandwidth kbps> | percent <percentage>} [< burst>] Router(config-pmap-c)# queue-limit <number of packets> Router(config-pmap-c)# random-detect [dscp-based | prec-based] ! enable WRED or DWRED Router(config-pmap-c)# set discard-class <value> Router(config-pmap-c)# set [ip] dscp {<dscp value> | <from field> [table < table map name>]} Router(config-pmap-c)# service-policy <policy map name> Router(config-pmap-c)# shape {average | peak} <mean rate> [<burst size> [< excess burst size>]] Quatrième étape : attacher la policy-map à l’interface. Il est possible d’appliquer la policy-map soit dans le mode input ou le mode output, en utilisant la commande : Router(config)# interface <interface> Router(config-if)# service-policy output [type-access-control] {input | output } <policy map name> Par ailleurs, si NBAR est utilisé pour reconnaître le trafic, il faut également activer NBAR sur l’interface à l’aide de la commande suivante : Router(config-if)# ip nbar protocol-discovery Cinquième étape : vérifier la classe de trafic et la politique de trafic : Router# show class-map [type {stack | access-control}] [<class map name>] Router# show policy-map <policy map> [class <class name>] Remarque. Pour classifier le trafic, il est possible d’utiliser : – La commande rate-limit – Une policy-map que l’on attache aux interfaces en input. Configuration des edge routers ! Creation de listes pour repérer le trafic VoIP Router(config)# access-list 101 remark RTP Traffic Router(config)# access-list 101 permit udp any any range 16384 32767 Router(config)# access-list 101 permit ip host 23.7.100.51 host 4.11.100.67 Router(config)# access-list 102 remark SIP Traffic Router(config)# access-list 102 permit tcp any any eq 5060 Router(config)# access-list 102 permit udp any any eq 5060 ! Classer les paquets entrant selon leur valeur de ToS Router(config)# class-map match-all expedited-forwarding Router(config-cmap)# match access-group 101 Router(config)# class-map match-all assured-forwarding Router(config-cmap)# match access-group 102 67 ! Définition d'une policy-map Router(config)# policy-map QOS-policy Router(config-pmap)# class expedited-forwarding Router(config-pmap-c)# priority 512 Router(config-pmap)# class assured-forwarding Router(config-pmap-c)# priority 256 Router(config-pmap)# class class-default Router(config-pmap-c)# fair-queue Router(config-pmap-c)# random-detect ! Attacher les policies aux interfaces Router(config)# interface <interface> Router(config-if)# rate-limit input access-group 102 2560000 65536 65536 conform-action set-dscp-transmit 34 exceed-action set-dscp-continue 0 Router(config-if)# rate-limit input access-group 101 5120000 65536 65536 conform-action set-dscp-transmit 46 exceed-action set-dscp-continue 0 Router(config-if)# rate-limit input 1408000 8000 8000 conform-action transmit exceed-action drop Router(config-if)# service-policy output QOS-policy Configuration des transit routers ! Classer les paquets entrant selon leur valeur de ToS Router(config)# class-map match-all expedited-forwarding Router(config-cmap)# match dscp 46 Router(config)# class-map match-all assured-forwarding Router(config-cmap)# match dscp 34 ! Définition d'une policy-map Router(config)# policy-map QOS-policy Router(config-pmap)# class expedited-forwarding Router(config-pmap-c)# priority 512 Router(config-pmap)# class assured-forwarding Router(config-pmap-c)# priority 256 Router(config-pmap)# class class-default Router(config-pmap-c)# fair-queue Router(config-pmap-c)# random-detect ! Attacher les policies aux interfaces Router(config)# interface <interface> Router(config-if)# service-policy output QOS-policy 3 Application au projet Afin de faire transiter la VoIP plusieurs protocoles ont besoin d’être “avantagés” par rapport aux autres : – Le protocole SIP (Session Initiation Protocol) est un protocole de signalisation, comme H.323, et transite entre les serveurs Asterisk, – Le protocole RTP (Real-Time Protocol) est un protocole transportant la voix, transitant entre les deux téléphones. Les éléments entrant en jeu pour la VoIP sont récapitulés dans le tableau suivant : Eléments Serveur Asterisk Téléphone IP AS 1 AS 4 23.7.100.50 23.7.100.51 4.11.100.66 4.11.100.67 Il y a donc deux catégories de routeurs qui sont mis en jeu : – Les routeurs de bordure : les routeurs des AS 1 et 4 connectés aux AS 2 et 3 qui devront marquer les paquets et faire du PHB (Per-Hop Behavior) également, – Les routeurs de cœur : les routeurs des AS 2 et 3 qui devront faire du PHB (Per-Hop Behavior). 68 local-pref 100 Juniper1 ISS AS 4 MIR AS 1 AS 2 Routeur AS 1 J2 J1 Serveur1.Ent2 Asterisk Juniper2 Serveur1.Ent1 Asterisk J4 AS 3 local-pref 200 F IGURE 5.3 – Transit de la VoIP entre les AS 1 et 4 Remarque. Nous avons choisi volontairement de prendre le chemin le plus long pour aller de l’AS 1 vers l’AS 4 et y revenir. Il y a au total 9 sauts. Nous avons choisi de procéder de cette manière pour pourvoir mettre en évidence le rôle de la QoS dans la VoIP. Par ailleurs, afin de configurer le champ EXP de MPLS, il faut absolument passer par l’AS 3, d’où le transit par les 4 AS. Il a été possible de forcer le passage vers l’AS 3 à partir de l’AS 4 (qui est multihomé par les AS 2 et 3) en considérant une valeur plus élevée pour l’attribut Local-Preference pour l’AS 3 par rapport à l’AS 2. Concernant la QoS en particulier, nous avons défini trois classes de trafic qui sont répertoriées dans le tableau suivant : Type de trafic Classe de service DSCP EXP (TC) PLP RTP (Voix) SIP (Signalisation) Reste Expedited-Forwarding Assured-Forwarding Best-Effort EF (46 / 101110) AF41 (34 / 100010) BE (0 / 000000) EF (000) AF (100) BE (000) Low Low Low Remarque. Les routeurs Juniper comportent quatre classes de service par défaut qui sont celles présentées dans le tableau précédent, avec la classe Network-Control de DSCP CS6. Les classes de services sont représentées par le schéma suivant : Trafic RTP Expedited Forwarding Trafic SIP Best Effort Toutes les classes Assured Forwarding F IGURE 5.4 – Quality of Service 69 4 Montée en charge et analyse Montée en charge Utilisation de la commande iperf : Server# iperf -u -s Client# iperf -c <server address> -i <interval> -t <time to transmit> -rub < packet size> Client# iperf -c 4.11.10.3 -i 2 -t 30 -rub 600M Remarque. La commande iperf est disponible sur les serveurs suivants : – serveur1.ent1.org avec pour adresse IP : 23.7.100.1 – serveur3.ent2.org avec pour adresse IP : 4.11.100.30 Analyse de traces Avec le logiciel Wireshark, il est possible de capturer du trafic et de l’exporter en format pcap. Notre objectif est de capturer du trafic en considérant plusieurs protocoles : – Le protocole SIP qui permet la signalisation, – Le protocole RTP qui permet de transit de la voix, – Le reste du trafic qui doit transiter en best effort. Afin de représenter le trafic sur des graphiques à l’aide de gnuplot, il nous faut tout d’abord récupérer les champs qui nous sont utiles pour l’analyse (notamment l’instant d’arrivée de la trame sur l’interface d’écoute, la taille du paquet IP). Pour ce faire, nous allons utiliser l’outil tshark, qui n’est autre que Wireshark en ligne de commande : tshark -e frame.time_relative -e ip.len -Tfields -R rtp -r capture.pcap > rtp_traffic tshark -e frame.time_relative -e ip.len -Tfields -R sip -r capture.pcap > sip_traffic tshark -e frame.time_relative -e ip.len -Tfields -R "not (sip or rtp)" -r capture.pcap > remainder_traffic Une fois le trafic classé, il nous suffit d’utiliser un script AWK pour regrouper les différentes instants (discrets) en classes (continu). Nous avons choisit d’avoir une précision au dixième de seconde, afin d’avoir un nombre conséquent de paquets, mais pas trop par instant. Nous avons alors le script AWK suivant : BEGIN {} { split($2, a, ","); for(i in a) { count[int($1*10.0)] += a[i] } } END { for(i in count){ printf("%f\t%d\n", i/10.0, count[i]); } } Enfin, nous utilisons un script gnuplot pour tracer les courbes : reset unset key set xlabel 'Temps' set ylabel 'Octets' set term postscript.pdf enhanced color "Times-Roman" 22 set style fill solid 0.5 noborder 70 set output 'throughput.pdf' set boxwidth 0.15 plot "gp_bg" u 1:(max) w filledcurves above y1=0. lc rgb"#eeeeee" notitle,\ '< tshark -e frame.time_relative -e ip.len -Tfields -R "not (sip or rtp)" -r capture.pcap | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "Remainder" smooth freq w boxes lc rgb"blue",\ '< tshark -e frame.time_relative -e ip.len -Tfields -R rtp -r capture.pcap awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "RTP" smooth freq w boxes lc rgb"green",\ '< tshark -e frame.time_relative -e ip.len -Tfields -R sip -r capture.pcap | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "SIP" smooth freq w boxes lc rgb"red" plot '< cat remainder_traffic | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "RTP" smooth freq w boxes lc rgb"red",\ '< cat rtp_traffic | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "RTP" smooth freq w boxes lc rgb"red",\ '< cat sip_traffic | awk -f analyse.awk | sed "s/\,/\./" | sort -n' using 1:2 t "SIP" smooth freq w boxes lc rgb"green" Remarque. Pour tracer un fond de couleur grise pour mettre en valeur une partie du graphique, il suffit de tracer le graphique qui nous intéresse avant la commande set term : p '< cat rtp_traffic | awk -f amalyse.awk | sed "s/\,/\./" | sort -n' using 1:2 Puis d’utiliser la variable gnuplot GPVAL_Y_MAX qui permet d’avoir la valeur maximale des données pour fixer la hauteur du graphique : set yrange [0:max]. Enfin, il est possible de tracer le fond gris pour mettre en valeur les données : plot "background" u 1:(GPVAL_Y_MAX) w filledcurves above y1=0. lc rgb"#eeeeee" notitle où background est un fichier contenant deux lignes : l’abscisse de départ et l’abscisse d’arrivée du fond. Nous avons donc le graphique suivant : 1e+06 Octets 100000 iperf 10000 RTP 1000 SIP 100 10 0 20 40 60 80 Temps 100 120 140 160 F IGURE 5.5 – Capture de trafic entre Juniper 2 (AS 3) et MIR (AS 2) Nous pouvons donc constater que les trafics de voix (RTP, en rouge) et de signalisation (SIP, en vert) restent constants, même quand il y a du trafic transversal (avec iperf, en beu). De ce fait, l’implémentation de qualité de service est fonctionnelle au cœur de la plateforme. 71 CHAPITRE Troubleshooting Routeurs Cisco 3820 Les routeurs C3820 perdent leur configuration au reboot Les routeurs Cisco C3850 perdent leur configuration lors d’un redémarrage ou d’une perte de courant. Cause Le router peut ignorer la configuration de démarrage située dans la NVRAM (non-volatile RAM) pendant sa boot sequence. Pour le vérifier, il faut compléter les étapes suivantes : a. Après que le routeur ait démarré, ne pas entrer dans le menu de configuration initial (initial configuration dialog) : chosir No. b. Presser la touche “Entrée” pour afficher le prompt Router> c. Saisir le mot-clé enable pour entrer dans le mode privilégié d. Router#show start Si la configuration n’est pas la même que celle enregistrée avec le redémarrage du routeur, passer à l’étape suivante. e. Router#show version La dernière ligne affichée correspond à quelque chose comme : Configuration register is 0x2142 Dans notre exemple, le router ignore la configuration de démarrage stockée dans la NVRAM pendant sa boot sequence. Solution Le registre de configuration n’a pas été configuré proprement. Pour changer le registre de configuration, taper les commandes suivantes : Router# configure terminal Router(config)# config-register 0x2102 Router(config)# end ! Vérification Router# show version ... Configuration register is 0x2142 (will be 0x2102 at next reload) ! Router reload Router#reload System configuration has been modified. Save? [yes/no]: n Proceed with reload? [confirm] Remarque. Pour de plus amples détails, se référer au support web de Cisco : http://www.cisco.com/ en/US/products/hw/routers/ps233/products_tech_note09186a00800a65a5.shtml 72 6 L’interface des routeurs est bloquée au niveau 2 Cause Sur les routeurs CISCO 3825, l’attribution d’une adresse IP à une interface renvoie une erreur et ne peut s’effectuer. Solution Les routeurs CISCO 3825 possèdent des interfaces fonctionnant par défaut au niveau 2, il conviendra de ne pas oublier de taper la commande : Router(config-int)# no switchport Dans le cas où nous souhaitons utiliser une interface destiné à effectuer du routage, cette commande est nécessaire. Sans celle-ci, l’attribution d’une adresse IP à une interface n’est pas possible. Problème de ping entre les ASs Cause La plupart du temps, il s’agit d’un câble mal branché. Le taquet de certains câbles est effet absent, ce qui peut mener à des débranchements occasionnels. Solution Se référer aux diodes des commutateurs. Les diodes doivent être allumées en vert si le câble est bien branché des deux côtés. Par ailleurs, la liste des câbles est disponible à la section 6. Une fois le câble rebranché, les protocoles de routage vont progressivement converger pour créer une route entre tous les ASs. Il faut donc attendre entre 1 et 5 minutes. Cause La configuration de load-balancer du serveur serveur3.ent2.org (AS 4) est inexistante. Solution Il suffit de se connecter au serveur serveur3.ent2.org de l’AS 4 à l’aide du contrôleur de console et ajouter la ligne suivante : ip route add default scope global nexthop via 4.11.100.61 weight 1 nexthop via 4.11.100.62 weight 1 Les téléphones IP sont inactifs (diodes orange) Cause Les serveurs Asterisk des ASs de types entreprise (AS 1 et AS 4) sont désactivés : – serveur1.ent1.org – serveur2.ent2.org Solution Les serveurs comportant le daemon Asterisk sont peut-être éteints (ou n’ont pas encore démarrés). Le daemon Asterisk n’est peut-être pas encore activé : /etc/init.d/asterisk restart Vérifier que les téléphones soient bien enregistrés à l’aide de la commande sip show registery dans le CLI rasterisk. Pour plus d’informations, se référer à la section sur Asterisk 1.2 Impossible de contrôler un équipement à l’aide du contrôleur de console L’erreur suivante apparaît lorsque l’on essaye de se connecter à un port console : Connection closed by foreign host error reading pseudo-tty: Input/output error (5) Cause Il existe des utilisateurs déjà connectés à l’équipement via le même protocole (ici, telnet). Solution Sur tous les équipements, il est impossible à plusieurs utilisateurs de se connecter simultanément sur le port console. Passer par le réseau de la plateforme en se connecter en SSH sur l’équipement souhaité. 73 Multi-homing de l’AS 4 Cause L’AS 4 est transitif : il donne aux AS 2 et AS 3 toutes les routes apprises : – Annonce faite à l’AS 2 : la route vers l’AS 3 et ses clients, – Annonce faite à l’AS 3 : la route vers l’AS 2 et ses clients. Il est donc considéré comme fournisseur par tous ses voisins (et non comme client). Solution Le comportement par défaut de BGP sur les OS des routeurs est d’annoncer aux voisins toutes les routes apprises, cependant dans notre cas, nous sommes juste client de deux fournisseurs différents, nous avons donc dû filtrer les routes annoncées pour restreindre les annonces BGP à notre unique réseau. Concernant le routeur Juniper 3 Le système de fichier (partitionné en UFS) de la carte compact flash du routeur Juniper 3 semble être corrompu. De ce fait, il faudrait le remplacer avec une version non corrompue. Cependant, la version que nous avons trouvée (junos-jsr-10.3R2.11-export-cf1024) est faite pour une carte compact flash de 1024 Mo (au lieu de 256 Mo, taille de la carte compact flash actuelle). Comme indiquée sur cette page web, la manipulation reste facile d’accès. Cependant, le fichier suivant : junos-jseries-8.2R2.4-export-cf256 (qui est le système de fichiers actuel des routeurs J4350) nécessaire reste introuvable. 74 CHAPITRE Bibliographie [1] Site web packetLife.net. Accès : http://packetlife.net. Accédé pour la dernière fois le 7 juin 2012. [2] Site web Juniper. Accès : http://www.juniper.net/techpubs/software/jseries/ junos82/. Accédé pour la dernière fois le 7 juin 2012. [3] Site web Cisco. Accès : http://www.cisco.com/en/US/docs/ios/12_2/qos/ command/reference/qrfcmd8.html. Accédé pour la dernière fois le 7 juin 2012. [4] K. Dooley et I. Brown (2006). Cisco IOS Cookbook. (2e ed.). O’Reilly. [5] A. Garrett. JUNOS Cookbook. O’Reilly [6] W. Goralski, C. Gadecki M. Bushong (2011). JunOS for DUMMIES. (2e ed.). Wiley. [7] G. Clarke (2011). CCENT Certification All-in-One for DUMMIES. Wiley. [8] S. Angelescu (2010). CCNA Certification All-in-One for DUMMIES. Wiley. [9] A. Tanenbaum et D. Wetherall (2011). Comupter Networks. (5e ed.). Pearson. [10] G. Pujolle (2011). Les réseaux. (7e ed.). Eyrolles. [11] T. Thomas, D. Pavlichek, L. Dwyer, R. Chowbay, W. Downing, J. Sonderegger (2002). Juniper Networks Reference Guide : JUNOS Routing, Configuration, and Architecture. (1re ed.). Addison Wesley. [12] G. Davies (2011). DAY ONE : DEPLOYING BASIC QOS. Juniper Networks Books. [13] T. Fiola et J. Panagos (2011). THIS WEEK : DEPLOYING MPLS. Juniper Networks Books. [14] J. Panagos et A. Statti (2011). DAY ONE : JUNOS MONITORING AND TROUBLESHOOTING. Juniper Networks Books. [15] Avocent (2010). CYCLADES ACS 5000 Installation/Administration/User Guide. Avocent Corporation. [16] Avocent (2010). CYCLADES ACS 5000 Command Reference Guide. Avocent Corporation. [17] Avocent (2011). Avocent PM PDU Installer/User Guide. Avocent Corporation. [18] Extreme Networks (2007). ExtremeXOS Summit Family Switches Hardware Installation Guide. Extreme Networks, Inc. [19] Hewlett-Packard Company (2006). ProCurve Series 2900 Switches Installation and Getting Started Guide. Hewlett-Packard Development Company. [20] Juniper Networks, Inc (2012). Junos OS Class of Service Configuration Guide. Juniper Networks, Inc. [21] Juniper Networks, Inc (2011). JUNOS Software J Series Services Routers Hardware Guide. Juniper Networks, Inc. [22] Juniper Networks, Inc (2011). JUNOS Software MPLS. Juniper Networks, Inc. Merci pour votre attention :) 75 7