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

Documents pareils