Cisco IOS / IOS-XE : eBGP avec VeryCloud (AS198825) sur tunnel GRE

Cisco IOS / IOS-XE : eBGP avec VeryCloud (AS198825) sur tunnel GRE

Configuration complète sur Cisco IOS / IOS-XE : tunnel GRE vers le PoP VeryCloud, sessions eBGP IPv4 + IPv6 dual-stack, prefix-list, route-map, sécurisation MD5. Pour ISR, CSR1000v, Catalyst 8000.

Introduction

Cisco IOS reste la référence opérateur pour les routeurs d'edge en France. Que tu aies un ISR 4000, un CSR 1000v virtuel sur VMware/KVM, un Catalyst 8000 ou un 8200/8300, la config BGP+GRE est quasiment identique. Ce tuto te donne le squelette validé pour un Remote Transit IP VeryCloud.

Prérequis

  • Un routeur Cisco IOS / IOS-XE avec IP publique fixe
  • Le mail technique VeryCloud avec :
    • PUB_VC : endpoint VeryCloud du tunnel
    • 169.254.X.1/30 : peer-IP v4 VeryCloud
    • 2a0e:XXXX:XXXX::0/127 : peer-IP v6 VeryCloud
    • MD5_SECRET si tu as choisi l'auth MD5
  • Ton ASN (public ou 64512-65534 privé)
  • Tes préfixes IPv4 et IPv6
  • Accès CLI privileged

Étape 1 : Sauvegarder la config existante

enable
copy running-config startup-config
copy startup-config flash:backup-pre-transit.cfg

Étape 2 : Activer IPv6 routing si pas déjà fait

configure terminal
!
ipv6 unicast-routing
ipv6 cef
!
exit

Étape 3 : Créer l'interface Tunnel GRE

configure terminal
!
interface Tunnel0
 description "VeryCloud Remote Transit IP - GRE"
 ip address 169.254.X.2 255.255.255.252
 ipv6 address 2a0e:XXXX:XXXX::1/127
 ip mtu 1476
 ip tcp adjust-mss 1436
 ipv6 mtu 1456
 tunnel source GigabitEthernet0/0/0
 tunnel destination PUB_VC
 tunnel mode gre ip
 no shutdown
!
exit

Notes :

  • tunnel source : interface ou IP publique de TON routeur (préfère une interface au cas où l'IP change)
  • ip mtu 1476 : 1500 - 24 (header GRE)
  • ip tcp adjust-mss 1436 : MSS clamping pour TCP (1476 - 20 IP - 20 TCP)
  • IPv6 MTU = 1456 (1500 - 24 GRE - 20 IPv4 outer... attention, dépend de la version IOS, ajuster si besoin)

Étape 4 : Tester le tunnel

end
show interface Tunnel0
ping 169.254.X.1
ping ipv6 2a0e:XXXX:XXXX::0

Si ça répond → tunnel OK. Sinon vérifier PUB_VC et que ta source GigabitEthernet0/0/0 a bien une IP publique joignable de l'extérieur.

Étape 5 : Préfixes statiques pour annonce

configure terminal
!
ip route 192.0.2.0 255.255.255.0 Null0
ip route 198.51.100.0 255.255.255.0 Null0
ipv6 route 2001:DB8::/32 Null0
!
exit

Routes vers Null0 = équivalent du blackhole : la route existe dans la RIB pour permettre l'annonce BGP, le trafic sans route plus spécifique va au null.

Étape 6 : Prefix-lists pour filtrage

configure terminal
!
! Prefixes qu'on annonce (export)
ip prefix-list TO-VC-V4 seq 10 permit 192.0.2.0/24
ip prefix-list TO-VC-V4 seq 20 permit 198.51.100.0/24

ipv6 prefix-list TO-VC-V6 seq 10 permit 2001:DB8::/32

! Filtre bogons en entree (import) - non exhaustif, exemples
ip prefix-list NO-BOGONS seq 10 deny 0.0.0.0/8 le 32
ip prefix-list NO-BOGONS seq 20 deny 10.0.0.0/8 le 32
ip prefix-list NO-BOGONS seq 30 deny 127.0.0.0/8 le 32
ip prefix-list NO-BOGONS seq 40 deny 169.254.0.0/16 le 32
ip prefix-list NO-BOGONS seq 50 deny 172.16.0.0/12 le 32
ip prefix-list NO-BOGONS seq 60 deny 192.0.2.0/24 le 32
ip prefix-list NO-BOGONS seq 70 deny 192.168.0.0/16 le 32
ip prefix-list NO-BOGONS seq 80 deny 198.18.0.0/15 le 32
ip prefix-list NO-BOGONS seq 100 permit 0.0.0.0/0 le 24

ipv6 prefix-list NO-BOGONS6 seq 10 deny ::/0 ge 49
ipv6 prefix-list NO-BOGONS6 seq 20 permit ::/0 le 48
!
exit

Étape 7 : Route-maps

configure terminal
!
route-map TO-VC permit 10
 match ip address prefix-list TO-VC-V4
exit

route-map TO-VC6 permit 10
 match ipv6 address prefix-list TO-VC-V6
exit

route-map FROM-VC permit 10
 match ip address prefix-list NO-BOGONS
exit

route-map FROM-VC6 permit 10
 match ipv6 address prefix-list NO-BOGONS6
exit
!
exit

Étape 8 : Configurer eBGP

configure terminal
!
router bgp 65000
 bgp router-id 192.0.2.1
 bgp log-neighbor-changes
 no bgp default ipv4-unicast
 timers bgp 30 90
 !
 ! Neighbor IPv4
 neighbor 169.254.X.1 remote-as 198825
 neighbor 169.254.X.1 description "VeryCloud Transit v4"
 neighbor 169.254.X.1 password MD5_SECRET
 neighbor 169.254.X.1 ebgp-multihop 2
 !
 ! Neighbor IPv6
 neighbor 2a0e:XXXX:XXXX::0 remote-as 198825
 neighbor 2a0e:XXXX:XXXX::0 description "VeryCloud Transit v6"
 neighbor 2a0e:XXXX:XXXX::0 password MD5_SECRET
 neighbor 2a0e:XXXX:XXXX::0 ebgp-multihop 2
 !
 ! Address-family v4
 address-family ipv4
  network 192.0.2.0 mask 255.255.255.0
  network 198.51.100.0 mask 255.255.255.0
  neighbor 169.254.X.1 activate
  neighbor 169.254.X.1 soft-reconfiguration inbound
  neighbor 169.254.X.1 route-map FROM-VC in
  neighbor 169.254.X.1 route-map TO-VC out
  neighbor 169.254.X.1 maximum-prefix 5000
 exit-address-family
 !
 ! Address-family v6
 address-family ipv6
  network 2001:DB8::/32
  neighbor 2a0e:XXXX:XXXX::0 activate
  neighbor 2a0e:XXXX:XXXX::0 soft-reconfiguration inbound
  neighbor 2a0e:XXXX:XXXX::0 route-map FROM-VC6 in
  neighbor 2a0e:XXXX:XXXX::0 route-map TO-VC6 out
  neighbor 2a0e:XXXX:XXXX::0 maximum-prefix 1000
 exit-address-family
!
exit

Notes :

  • ebgp-multihop 2 est utile car le peer-IP du tunnel n'est pas sur une interface directement connectée à la même /24 que ton IP physique
  • password doit être identique des deux côtés
  • network annonce uniquement les préfixes pour lesquels une route existe dans la RIB

Étape 9 : Sauvegarder

end
write memory

Étape 10 : Vérifier les sessions

show ip bgp summary

BGP router identifier 192.0.2.1, local AS number 65000
BGP table version is 12, main routing table version 12
1 network entries using 248 bytes of memory

Neighbor        V    AS  MsgRcvd  MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
169.254.X.1     4 198825    1234     567        12    0    0 01:23:45            1

State/PfxRcd qui affiche un nombre (1 = default route reçue) = session établie.

Pour IPv6 :

show bgp ipv6 unicast summary

Étape 11 : Vérifier les routes

! Routes reçues
show ip bgp neighbors 169.254.X.1 received-routes
show bgp ipv6 unicast neighbors 2a0e:XXXX:XXXX::0 received-routes

! Routes annoncées
show ip bgp neighbors 169.254.X.1 advertised-routes
show bgp ipv6 unicast neighbors 2a0e:XXXX:XXXX::0 advertised-routes

! Table BGP
show ip bgp
show bgp ipv6 unicast

! RIB
show ip route bgp
show ipv6 route bgp

Tu dois voir la default route 0.0.0.0/0 via 169.254.X.1 dans show ip route.

Dépannage

show ip bgp summary : neighbor en Idle ou Active

  • Tunnel pas UP : show interface Tunnel0
  • ping 169.254.X.1 échoue
  • ACL bloque TCP/179 : show access-list

Established mais PfxRcd: 0

  • Côté VeryCloud, pas d'annonce envoyée
  • Soft-reconfiguration : clear bgp ipv4 unicast 169.254.X.1 soft in pour forcer un refresh

Tes préfixes pas annoncés

  • network 192.0.2.0 mask 255.255.255.0 sans route correspondante dans RIB → vérifie show ip route 192.0.2.0
  • Route-map TO-VC trop restrictive

MD5 auth failed

  • Mot de passe identique des 2 côtés exactement
  • Capture : debug ip bgp 169.254.X.1 → tu verras le password mismatch
  • Désactive debug : undebug all après troubleshoot

Hold time expired

  • Tunnel instable (MTU/PMTU)
  • Vérifie ip mtu et ip tcp adjust-mss sur le tunnel

Commandes utiles

show ip bgp summary
show bgp ipv6 unicast summary
show ip bgp neighbors 169.254.X.1
show ip bgp 0.0.0.0/0
show ip route bgp
show interface Tunnel0
show ip tcp tcb           ! Sessions TCP, utile pour voir port 179

! Soft reset (sans coupure)
clear bgp ipv4 unicast 169.254.X.1 soft in
clear bgp ipv4 unicast 169.254.X.1 soft out

! Hard reset
clear ip bgp 169.254.X.1

! Debug (à activer/désactiver vite)
debug ip bgp 169.254.X.1
debug ip bgp events
undebug all

Conclusion

Cisco IOS + tunnel GRE + eBGP = la combo classique du Remote Transit IP. La config tient en une centaine de lignes une fois propre. Les pièges sont sur le MTU/MSS, le ebgp-multihop, et le MD5. Suis ce squelette et tu seras UP en moins d'une heure.

Pour aller plus loin : BFD pour failover sous-seconde, communautés BGP pour traffic engineering, RPKI via Cisco RPKI server, redondance multi-PoP via 2 tunnels.

Ressources

Rejoignez notre serveur communautaire Discord

Pour toute question, suggestion ou simplement pour discuter avec la communauté, rejoignez-nous sur Discord !

900+Membres