Upload
dinhdiep
View
232
Download
2
Embed Size (px)
Citation preview
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] [email protected] [email protected] [email protected] [email protected] [email protected]
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
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.
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
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!
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