EDX Network / Formation BGP - ouestix.fr · Protocole BGP, principe du routage opérateur Comment...

56
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

Transcript of EDX Network / Formation BGP - ouestix.fr · Protocole BGP, principe du routage opérateur Comment...

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

Configuration des VMs

● OS : CentOS 7rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-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:0DEVICE=lo:0IPADDR=10.X.0.1NETMASK=255.255.255.255ONBOOT=yesBOOTPROTO=static

ifup lo:0

ping 10.X.0.1

Installation de quagga

yum -y install quagga

systemctl enable zebrasystemctl enable bgpdsystemctl enable ospfd

touch /etc/quagga/ospfd.conftouch /etc/quagga/bgpd.confchown quagga:quagga /etc/quagga/*.conf

systemctl start zebrasystemctl start ospfdsystemctl 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 trouter bgp 6500X neighbor 82.196.29.33 remote-as 198435 neighbor 82.196.29.33 ebgp-multihop 4!exit

show ip bgp sumshow ip bgp show ip bgp neighbor 82.196.29.33 routesshow 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 6500Xnetwork 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 fort2/ La local-pref la plus forte3/ Préférence à une route définie via une commande network4/ Le chemin d'AS_PATH le plus court5/ Priorité à l'IGP par rapport à l'EGP6/ 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 ASN8/ D'abord la route apprise en première9/ 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/24Paths: (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

ip prefix-list MYCOMPANY seq 5 permit 10.X.0.0/16ip 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!

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.

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] [warning-only]

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 V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd77.95.71.5 4 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 77.95.71.5 remote-as 43100 neighbor 77.95.71.5 weight 10000 neighbor 31.172.160.251 remote-as 198435 neighbor 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 LYONIX peer-group neighbor LYONIX send-community neighbor LYONIX weight 1000 neighbor LYONIX soft-reconfiguration inbound neighbor LYONIX prefix-list MYASN 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.9 remote-as 43100 neighbor 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 prefix-list 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 PathIl 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_3215ip 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 entrantformation1.edxnetwork.eu# show ip bgp 8.8.8.8BGP routing table entry for 8.8.8.0/24Paths: (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, utilisationElles 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:1001ip community-list standard TRANSIT2 permit 1234:1002ip 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

BlackholeAvertir 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 tip route X.X.X.X 255.255.255.255 Null0router bgp YourASnetwork X.X.X.X mask 255.255.255.255 route-map blackholeroute-map blackhole permit 10set community 0:666End

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

# IPv4show ip bgp sumshow ip bgp X.X.X.Xshow ip bgp neighbor X.X.X.X advertised-routesshow ip bgp neighbor X.X.X.X received-routesshow ip bgp neighbor X.X.X.X routesclear ip bgp X.X.X.X soft

# IPv6show ip bgp ipv6 unicast summary…

# VRFshow ip bgp vpnv4 all summary

Bonding sur 2 switchs différentsinterface 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 interfacesGigabitEthernet0/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

BGP et VRFExemple : isoler le peeringrouter 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 allshow 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.16Fichier contrib/check_bgp.pl

my %uplinks = ( 1273, 'Uplink ECRC', 1755, 'Uplink EBONE', 3300, 'Uplink AUCS' );

Superviser Cisco avec NagiosVoici 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 SNMPip 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.1Logging 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 3750ip ssh rsa keypair-name sshkeysip ssh version 2crypto key generate rsa usage-keys label sshkeys modulus 768

Activation IPv6

Sur un routeuripv6 cef

Sur un switchshow sdm prefersdm prefer dual-ipv4-and-ipv6 defaultreload

Rancid/SVN

Outil permettant d'historiser les différentes configurations des équipements réseaux.

yum -y install svn rancidvi /etc/rancid/rancid.conf svnrancid-svnvi /etc/aliases rancid-<group>: root rancid-admin-<group>: rootnewaliasesrancid-runcd /usr/local/srcwget http://web.rickyninja.net:81/rancid/rancid-dell-extension.tgztar 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é clientiperf -c A.B.C.D

# Coté serveuriperf -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