EDX Network / Formation BGP
Transcription
EDX Network / Formation BGP
EDX Network / Formation BGP Journée 1 Protocole BGP, principe du routage opérateur Comment effectuer une configuration croisée au niveau des switchs ? Comment mettre en place du BGP avec 2 transitaires et un IXP? Journée 2 Les bonnes pratique de redondance de l'infrastructure switch/routeurs Tests validation et recette pour failover/failback Les méthode de supervision pour l'infrastructure BGP Accès aux VMs ssh [email protected] ssh [email protected] ssh [email protected] ssh [email protected] ssh [email protected] ssh [email protected] Configuration des VMs ● OS : CentOS 7 rpm -ivh https://dl.fedoraproject.org/pub/epel/epelrelease-latest-7.noarch.rpm yum -y install iftop iptraf-ng mtr traceroute net-tools yum -y update systemctl disable NetworkManager.service systemctl disable firewalld.service setenforce 0 vi /etc/selinux/config SELINUX=disabled Activation de l'IP Forwarding vi /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 sysctl -p Configuration de la loopback cd /etc/sysconfig/network-scripts vi ifcfg-lo:0 DEVICE=lo:0 IPADDR=10.X.0.1 NETMASK=255.255.255.255 ONBOOT=yes BOOTPROTO=static ifup lo:0 ping 10.X.0.1 Installation de quagga yum -y install quagga systemctl enable zebra systemctl enable bgpd systemctl enable ospfd touch /etc/quagga/ospfd.conf touch /etc/quagga/bgpd.conf chown quagga:quagga /etc/quagga/*.conf systemctl start zebra systemctl start ospfd systemctl start bgpd vtysh Linux et la/les tables de routage ● Comment voir sa table de routage ? ● Comment voir ses adresses IP ? ● Policy routing ? La théorie de la double route par défaut Mon routeur BGP doit-il avoir une route par défaut ? ? Exercice : Première session BGP conf t router bgp 6500X neighbor 82.196.29.33 remote-as 198435 neighbor 82.196.29.33 ebgp-multihop 4 ! exit show ip bgp sum show ip bgp show ip bgp neighbor 82.196.29.33 routes show ip bgp neighbor 82.196.29.33 advertised-routes Couper une session BGP Lorsque l'on souhaite couper un transit ou un peering, on essayera dans la mesure du possible de le faire de manière « propre », on évitera ainsi : ●De débrancher physiquement l'interface du voisin BGP ●De modifier/supprimer l'interface physique ou virtuelle sur lequel le voisin est connecté On utilisera la commande suivante : router bgp 1234 neighbor 1.1.1.1 shutdown no neighbor 1.1.1.1 shutdown ! Exercice : Annoncer son allocation router bgp 6500X network 10.X.0.0/16 ! ip route 10.X.0.0 255.255.0.0 Null0 show ip bgp neigh 82.196.29.33 advertised-routes Exercice : Deuxième session BGP Il faut maintenant configurer une deuxième session de transit avec le routeur : 82.196.29.34 Choix du meilleur chemin 1/ Le poids (weight) le plus fort 2/ La local-pref la plus forte 3/ Préférence à une route définie via une commande network 4/ Le chemin d'AS_PATH le plus court 5/ Priorité à l'IGP par rapport à l'EGP 6/ La plus petite MED (Multi Exit Descriminator) 7/ On préferera les routes apprises en eBGP (transit) que les routes apprises au sein de notre ASN 8/ D'abord la route apprise en première 9/ La route dont le routeur id est le plus faible Meilleur chemin formation1.edxnetwork.eu# show ip bgp 8.8.8.8 BGP routing table entry for 8.8.8.0/24 Paths: (2 available, best #1, table Default-IP-Routing-Table) Advertised to non peer-group peers: 82.196.29.33 198435 15169 82.196.29.34 from 82.196.29.34 (37.49.237.32) Origin IGP, metric 0, localpref 100, valid, external, best Community: 25309:64900 64512:1008 Last update: Wed Oct 21 15:55:10 2015 198435 3215 5511 15169 82.196.29.33 from 82.196.29.33 (31.172.160.2) Origin IGP, metric 0, localpref 100, valid, external Community: 64512:1003 Last update: Wed Oct 21 15:43:53 2015 Filtrer ses annonces BGP Afin d'optimiser les performances, on essayera de mettre les règles les plus utilisées en première. Un deny implicite est appliqué pour tout le trafic qui ne match aucune règle. ip prefix-list MYCOMPANY seq 5 permit 10.X.0.0/16 ip prefix-list MYCOMPANY seg 10 permit 10.X.0.0/16 le 24 router bgp 6500X neighbor 82.196.29.33 prefix-list MYCOMPANY out neighbor 82.196.29.34 prefix-list MYCOMPANY out ! Exercice : Refuser RFC1918 ● Filtrage entrant : – 10.0.0.0/8 – 192.168.0.0/16 – 172.16.0.0/12 Maximum prefix Limite le nombre de route que l'on apprend d'un peer BGP. neighbor 77.95.71.5 maximum-prefix 30000 neighbor {ip-address | peer-group-name} maximum-prefix maximum [threshold] [restart restart-interval] [warningonly] En cas du dépassement du seuil, la session BGP va automatiquement se couper. Il faudra une opération manuelle de la part de l'administrateur pour débloquer la session, sauf si le paramètre restart (minutes) a été précisé. Lors de la commande « show ip bgp sum », la session apparaîtra en idle : Neighbor 77.95.71.5 V 4 AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 200 965 948 0 0 0 00:02:24 Idle (PfxCt) On pourra utiliser la commande pour redémarrer la session : clear ip bgp 77.95.71.5 Soft reconfiguration Inbound Permet de garder en mémoire les routes apprises par un peer BGP même si ces dernières n'ont pas été retenues par le protocole BGP et/ou filtrées : Neighbor 77.95.71.5 soft-reconfiguration inbound Cela permet l'exécution des commandes suivantes : show ip bgp neighbors 77.95.71.5 received-routes show ip bgp neighbors 77.95.71.5 routes Weight Forcer les routes apprises par un peer BGP plutôt que par un autre (peu importe le nb de saut ou la qualité du lien) : neighbor neighbor neighbor neighbor 77.95.71.5 remote-as 43100 77.95.71.5 weight 10000 31.172.160.251 remote-as 198435 31.172.160.251 weight 100 On cherche içi à favorise les routes apprises via le peering LyonIX que par un transitaire. Attention : ce paramètre ne se transmet pas de proche en proche au sein du même ASN. Le poids reste interne au routeur. Pour transférer cette information à l'ensemble des routeurs d'un même ASN, il faut utiliser la local préférence ! Peer group C'est la possibilité d'utiliser les mêmes options pour plusieurs peer BGP : neighbor neighbor neighbor neighbor neighbor neighbor neighbor neighbor neighbor neighbor LYONIX peer-group LYONIX send-community LYONIX weight 1000 LYONIX soft-reconfiguration inbound LYONIX prefix-list MYASN out LYONIX maximum-prefix 30000 77.95.71.5 remote-as 43100 77.95.71.5 peer-group LYONIX 77.95.71.9 remote-as 43100 77.95.71.9 peer-group LYONIX Exercice : utilisation du template ● En se basant sur l'exemple précédent, créez un peer group spécifique pour l'ensemble des sessions de transit IP. Exercice : Peering ● ● ● On souhaite mettre en place des sessions de peering entre les différents participants de la formation sur le subnet 212.18.243.64/26 Le routeur formation1 montera 2 sessions BGP avec : – Formation6 – Formation2 L'objectif est d'échanger du trafic mais aussi d'être opérateur de transit pour le réseau 10.0.0.0/8 Utilisation des route-map Ils permettent de réaliser un filtrage plus complexe que les simples ACL. route-map TRANSIT-OUT permit 5 match ip address prefix-list MYCOMPANY ! route-map TRANSIT-IN permit 999 set local-preference 200 ! Lorsqu'il y a plusieurs « match », toutes les conditions doivent être valables (ET). Sur un ligne match, on peut retrouver plusieurs ACL. Dés que l'un d'entre eux est vrai, la route est validée (OU). Enfin sans commande match, toutes les routes sont valides ! Exercice : Création de 2 templates ● ● On doit désormais créer 2 peer groups : – 1 pour les 2 routeurs de transits – 1 pour le peering (tous les routeurs de la formation) Chaque peer group utilisera des routes map – Les routes apprises via transit auront une local pref = 100 – Les routes apprises via peering auront une local pref = 200 Exercice : RFC1918 et route-map ● On propose maintenant de supprimer la prefixlist concernant les ip privées rattachée au peer group pour l'intégrer dans le route-map Faut-il faire un deny d'une route ? JAMAIS ! Sauf raison militaire/politique/concurrentielle. Exercice : Changer la priorité d'une route ● ● ● Par défaut, pour joindre l'IP 8.8.8.8, on passe par TopIX On suppose que l'on a un problème sur cette liaison spécifiquement pour cette destination (ip route add blackhole 8.8.8.8/32) Quelle configuration peut-on mettre en place pour que le routage se fasse à travers le transit Orange ? Exercice : Gandi ● Faire la même chose pour www.gandi.net – IPv4 – Route apprise par les transitaires (CIDR) – Ajout au préfix list AS Path Il peut être difficile ou contraignant de filtrer uniquement via des prefixes lists car on ne connait pas à priori toutes les routes provenant d'un ASN particulier. Cela est d'autant plus vrai pour les gros opérateurs. L'as-path permet de filtrer TOUTES les routes appartenant ou traversant un opérateur : On utilisera la commande suivante : ip as-path access-list 1 permit ^1234_3215 ip as-path access-list 2 permit ^1234_12322 route-map TRANSIT-IN permit 10 match as-path 1 set local-preference 100 ! route-map TRANSIT-IN permit 20 set local-preference 1000 ! Exercice : Favoriser une route via AS Path ● On souhaite désormais forcer tout ce qui est à destination de l'AS12322 (Free) via le routeur N°2 AS Path Prepend Permet d'allonger virtuellement le chemin d'ASN, et d'ainsi limiter le trafic entrant à travers un voisin BGP. route-map TRANSIT-OUT permit 1 set as-path prepend 1234 1234 MED (Multi Exit descriminator) Cela permet à ses voisins BGP de connaître le chemin que l'on préfère utiliser pour joindre notre réseau. C'est un attribut optionnel. On l'utilise souvent lorsque l'on a un double raccordement à un opérateur de transit et que l'on préfère être joint via un routeur plutôt qu'un autre (PRA par exemple). route-map TRANSIT-A permit 10 set metric 200 ! Communautés BGP, principes ● Il s'agit d'informations supplémentaires (en plus du préfixe et de l'as path) pouvant indiquer la provenance d'une route ou influer le trafic entrant formation1.edxnetwork.eu# show ip bgp 8.8.8.8 BGP routing table entry for 8.8.8.0/24 Paths: (2 available, best #2, table Default-IP-Routing-Table) Not advertised to any peer 198435 3215 5511 15169 82.196.29.33 from 82.196.29.33 (31.172.160.2) Origin IGP, metric 0, localpref 100, valid, external Community: 64512:1003 (Route apprise via TRANSIT Orange) Last update: Mon Oct 26 11:04:26 2015 198435 15169 82.196.29.34 from 82.196.29.34 (37.49.237.32) Origin IGP, metric 0, localpref 100, valid, external, best Community: 25309:64900 64512:1008 (via peering TopIX) Last update: Wed Oct 21 16:05:09 2015 Send community Permet d'envoyer des drapeaux/communautés au peer BGP qui lui permette par exemple de connaître : ●la provenance d'un préfixe ●Le type de préfixe (client, fournisseur, web, smtp) ●D'influencer le peer BGP sur ces annonces et comment joindre votre réseau ●Le trafic à mettre en blackhole neighbor 77.95.71.5 send-community Communauté BGP, utilisation Elles permettent de donner des informations supplémentaires sur une route apprise ou que l'on souhaite redistribuer. ip bgp-community new-format ip community-list standard TRANSIT1 permit 1234:1001 ip community-list standard TRANSIT2 permit 1234:1002 ip community-list standard PEERING permit 1234:2001 On peut ensuite utiliser les route-map pour ajouter une communauté ou faire un filtre route-map TRANSIT1-in permit set community 1234:1001 ! route-map PEERING-out deny match community TRANSIT1 ! Exercice : TopIX ● On préfère éviter les routes apprises à turin : – 64512:1008 Blackhole Avertir son/ses transitaires que l'on souhaite blacklister une IP/réseau ●Cette fonctionnalité doit être proposé par son transitaire ●Soit une session BGP séparée permet d'annoncer la ou les routes à blacklister ●Soit il faut tagger la route/préfixe avec une communauté spécifique Cas d'EDX Network : conf t ip route X.X.X.X 255.255.255.255 Null0 router bgp YourAS network X.X.X.X mask 255.255.255.255 route-map blackhole route-map blackhole permit 10 set community 0:666 End Le blackhole n'est pertinent que si les sessions de peering sont coupées ainsi que les transitaires ne sachant pas faire du blackhole. Voici 1 commande pour générer 1 flood icmp qu'on va couper avec le blackhole : ping -i 0.1 -s 65000 A.B.C.D > /dev/null Commandes utiles # IPv4 show ip bgp sum show ip bgp X.X.X.X show ip bgp neighbor show ip bgp neighbor show ip bgp neighbor clear ip bgp X.X.X.X X.X.X.X advertised-routes X.X.X.X received-routes X.X.X.X routes soft # IPv6 show ip bgp ipv6 unicast summary … # VRF show ip bgp vpnv4 all summary Bonding sur 2 switchs différents interface GigabitEthernet0/0 description PRODUCTION no ip address no ip proxy-arp duplex auto speed auto ! interface GigabitEthernet0/2 backup interface GigabitEthernet0/1 Description SECOURS no ip address no ip proxy-arp ! Show interfaces GigabitEthernet0/1 is standby mode, line protocol is down 2 routeurs BGP, 1 gateway Plusieurs protocoles possibles : ●VRRP ●HSRP ●GLPB (permet le loadbalancing par rapport à une adresse MAC) Les commandes qq soit le protocole sont assez proche : interface Ethernet0/0 ip address 10.0.0.1 255.255.0.0 glbp 1 ip 10.0.0.10 glbp 1 weighting 160 glbp 1 load-balancing weighted vrrp 2 … standby 3 ... end Exemple : isoler le peering BGP et VRF router bgp 1234 address-family ipv4 vrf PEERING neighbor LYONIX peer-group neighbor LYONIX send-community neighbor LYONIX weight 1000 neighbor LYONIX soft-reconfiguration inbound neighbor LYONIX prefix-list AS-FMI out neighbor LYONIX route-map LYONIX-out out neighbor LYONIX maximum-prefix 30000 neighbor 77.95.71.5 remote-as 43100 neighbor 77.95.71.5 peer-group LYONIX neighbor 77.95.71.5 activate neighbor 77.95.71.9 remote-as 43100 neighbor 77.95.71.9 peer-group LYONIX neighbor 77.95.71.9 activate Exit-address-family ! ip vrf PEERING rd 1234:110 import ipv4 unicast map MY-NETWORKS expport ipv4 unicast map ALL ! show ip bgp vpnv4 all show ip bgp vpnv4 all summary Pourquoi le port-channel est mon ami ? Tout simplement car : Son oid SNMP ne changera jamais ●Vous pourrez upgrader vers un autre type de port sans avoir à rechanger l'intégralité de votre configuration ●Il faut le voir comme une interface virtuelle même si l'on a qu'un seul port:) ● interface Port-channel1.500 encapsulation dot1Q 500 ip address 10.0.0.2 255.255.255.0 ! interface GigabitEthernet0/0 description PRODUCTION channel-group 1 ! show interfaces port-channel 1 L'intérêt de mettre en place de l'OSPF Pour que les routeurs du backbone connaissent toutes les interco vers les transitaires interface eth2 ip ospf message-digest-key 1 md5 OSPF1 router ospf 1 redistribute connected subnets network A.B.C.0/24 area 0.0.0.0 area 0.0.0.0 authentication message-digest ! Superviser sessions BGP avec Nagios/SNMP Télécharger nagios-plugins-1.4.16 Fichier contrib/check_bgp.pl my %uplinks = ( 1273, 'Uplink ECRC', 1755, 'Uplink EBONE', 3300, 'Uplink AUCS' ); Superviser Cisco avec Nagios Voici les commandes/plugins que l'on peut utiliser : define command{ command_name check_snmp_env command_line $USER1$/check_snmp_env.pl -H $HOSTADDRESS$ -f -T $ARG1$ -2 -C $_HOSTSNMP_COMMUNITY$ -f } define command{ command_name check_snmp_load command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -f -T $ARG1$ -2 -C $_HOSTSNMP_COMMUNITY$ -w $ARG2$ -c $ARG3$ -f } define command{ command_name check_snmp_mem command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -f $ARG3$ -2 -C $_HOSTSNMP_COMMUNITY$ -w $ARG1$ -c $ARG2$ -f } define command{ command_name check_snmp_procs command_line $USER1$/check_snmp_procs.pl -H $HOSTADDRESS$ -C $_HOSTSNMP_COMMUNITY$ -N $ARG1$ } Activation SNMP Cela permet de pouvoir grapher notre équipement via le protocole SNMP sans ajout d'un soft particulier. Attention de bien protéger via un ACL. snmp-server community public RO SNMP ip access-list standard SNMP permit 77.95.64.190 permit 31.172.160.0 0.0.0.255 ! Syslog externe Exporte les logs de l'équipement vers un serveur de logs centralisé Logging 10.0.0.1 Logging 10.0.0.2 Sécuriser l'accès Telnet/SSH Exporte les logs de l'équipement vers un serveur de logs centralisé access-list 23 permit 10.0.0.0 0.0.0.255 line vty 0 15 access-class 23 in privilege level 15 transport input telnet ssh ! Activer SSH Sur les IOS le permettant, il faut générer les clés RSA ip domain-name mondomaine.ext # Pas utile sur les 3750 ip ssh rsa keypair-name sshkeys ip ssh version 2 crypto key generate rsa usage-keys label sshkeys modulus 768 Activation IPv6 Sur un routeur ipv6 cef Sur un switch show sdm prefer sdm prefer dual-ipv4-and-ipv6 default reload Rancid/SVN Outil permettant d'historiser les différentes configurations des équipements réseaux. yum -y install svn rancid vi /etc/rancid/rancid.conf svn rancid-svn vi /etc/aliases rancid-<group>: root rancid-admin-<group>: root newaliases rancid-run cd /usr/local/src wget http://web.rickyninja.net:81/rancid/rancid-dell-extension.tgz tar xvfz rancid-dell-extension.tgz cp d* /usr/libexec/rancid/ vi /usr/bin/rancid-fe ajouter dell => dlogin IP Accounting router(config-if)# ip accounting output-packets router(config)# ip accounting-transits count router# show ip accounting [checkpoint] output-packets router# clear ip accounting IPerf Permet de valider la bande passante entre 2 serveurs : # Coté client iperf -c A.B.C.D # Coté serveur iperf -s Outils externes https://stat.ripe.net/198435#tabId=at-a-glance ●http://www.bgpmon.net/ ●http://bgplay.routeviews.org/ ●http://cyclops.cs.ucla.edu ● Questions ● http://www.edx-net.fr ● [email protected] ● PAGES Vincent ● +33 6 28 22 91 13