Aller au contenu principal

VPN IPsec site-à-site — Cisco IOS ↔ Cisco IOS

Configuration d'un tunnel IPsec site-à-site (deux réseaux fixes reliés en permanence) entre deux routeurs Cisco, avec IKEv2 et clé pré-partagée (PSK). Pour le scénario host-à-site avec certificats X.509 (client nomade), voir VPN IPsec IKEv2 — strongSwan ↔ Cisco IOS.

Différence avec le host-à-site

Site-à-siteHost-à-site (road warrior)
PairsDeux routeurs, IP fixes connues des deux côtésUn routeur fixe, des clients nomades à IP variable
Authentification typiquePSK (rapide à déployer, deux extrémités connues)Certificats X.509 (scalable, pas de secret partagé par client)
Interface tunnelcrypto map (classique) ou VTI statiqueVirtual-Template / DVTI (une interface clonée par client)
Trafic protégéDéfini par ACL (« quel trafic entre les deux LAN »)Généralement tout le trafic du client vers le LAN distant

Topologie de référence

LAN-A 10.1.1.0/24 ── [Routeur A] ══ Internet ══ [Routeur B] ── LAN-B 10.2.2.0/24
<IP_PUBLIQUE_A> <IP_PUBLIQUE_B>

Méthode 1 — Crypto Map (classique, la plus répandue)

Routeur A

! --- Phase 1 : IKEv2 ---
crypto ikev2 proposal PROP-SITE
encryption aes-cbc-256
integrity sha256
group 14

crypto ikev2 policy POL-SITE
proposal PROP-SITE

crypto ikev2 keyring KEYRING-SITE
peer ROUTEUR-B
address <IP_PUBLIQUE_B>
pre-shared-key <ClePartageeSolide>

crypto ikev2 profile PROFILE-SITE
match identity remote address <IP_PUBLIQUE_B> 255.255.255.255
authentication local pre-share
authentication remote pre-share
keyring local KEYRING-SITE

! --- Phase 2 : trafic à protéger ---
ip access-list extended ACL-VPN-A-VERS-B
permit ip 10.1.1.0 0.0.0.255 10.2.2.0 0.0.0.255

crypto ipsec transform-set TSET-SITE esp-aes 256 esp-sha256-hmac
mode tunnel

crypto map CMAP-SITE 10 ipsec-isakmp
set peer <IP_PUBLIQUE_B>
set transform-set TSET-SITE
set ikev2-profile PROFILE-SITE
match address ACL-VPN-A-VERS-B

! --- Application sur l'interface WAN ---
interface GigabitEthernet0/0
ip address <IP_PUBLIQUE_A> 255.255.255.252
crypto map CMAP-SITE

Routeur B (configuration miroir)

crypto ikev2 proposal PROP-SITE
encryption aes-cbc-256
integrity sha256
group 14

crypto ikev2 policy POL-SITE
proposal PROP-SITE

crypto ikev2 keyring KEYRING-SITE
peer ROUTEUR-A
address <IP_PUBLIQUE_A>
pre-shared-key <ClePartageeSolide>

crypto ikev2 profile PROFILE-SITE
match identity remote address <IP_PUBLIQUE_A> 255.255.255.255
authentication local pre-share
authentication remote pre-share
keyring local KEYRING-SITE

ip access-list extended ACL-VPN-B-VERS-A
permit ip 10.2.2.0 0.0.0.255 10.1.1.0 0.0.0.255

crypto ipsec transform-set TSET-SITE esp-aes 256 esp-sha256-hmac
mode tunnel

crypto map CMAP-SITE 10 ipsec-isakmp
set peer <IP_PUBLIQUE_A>
set transform-set TSET-SITE
set ikev2-profile PROFILE-SITE
match address ACL-VPN-B-VERS-A

interface GigabitEthernet0/0
ip address <IP_PUBLIQUE_B> 255.255.255.252
crypto map CMAP-SITE

:::warning L'ACL doit être symétrique (miroir) entre les deux routeurs permit ip 10.1.1.0/24 10.2.2.0/24 côté A doit correspondre à permit ip 10.2.2.0/24 10.1.1.0/24 côté B. Une ACL asymétrique est la cause la plus fréquente d'un tunnel qui monte en Phase 1 (show crypto ikev2 sa OK) mais ne chiffre aucun trafic en Phase 2. :::

Méthode 2 — VTI statique (plus simple à administrer, tout le trafic entre les deux sites)

interface Tunnel0
ip address 172.31.0.1 255.255.255.252
tunnel source GigabitEthernet0/0
tunnel mode ipsec ipv4
tunnel destination <IP_PUBLIQUE_B>
tunnel protection ipsec profile IPSEC-PROF-SITE

! Routage statique du LAN distant à travers le tunnel
ip route 10.2.2.0 255.255.255.0 Tunnel0
  • Une interface tunnel routable remplace la logique crypto map + ACL : plus lisible, compatible avec du routage dynamique dans le tunnel (OSPF/EIGRP), et le trafic protégé est simplement « tout ce qui est routé vers l'interface Tunnel », pas défini par ACL.
  • Nécessite un crypto ipsec profile (même bloc crypto ikev2 profile + transform-set que pour la crypto map, référencés dans un crypto ipsec profile au lieu d'une crypto map) — voir la structure équivalente dans la fiche DMVPN pour le détail des blocs IKEv2/transform-set/profile.

Vérification (commune aux deux méthodes)

show crypto ikev2 sa ! Phase 1 : session IKE établie ?
show crypto ipsec sa ! Phase 2 : compteurs encaps/decaps, SPI
show crypto map ! (méthode crypto map) associations configurées
show interface tunnel 0 ! (méthode VTI) état de l'interface tunnel
ping 10.2.2.1 source 10.1.1.1 ! déclenche la négociation si le tunnel est "on-demand"

:::tip Le tunnel ne monte qu'au premier paquet intéressant (crypto map) Avec une crypto map, IKE ne se déclenche que lorsqu'un paquet correspondant à l'ACL traverse l'interface — show crypto ikev2 sa vide juste après un no shutdown est normal, pas une erreur. La méthode VTI, elle, tente d'établir le tunnel dès que l'interface est up. :::

:::warning Pièges fréquents

  • NAT sur le chemin : si l'un des deux routeurs est lui-même derrière un NAT (double NAT), il faut de la NAT-Traversal (UDP 4500) et souvent exempter le trafic VPN du NAT sortant côté LAN (route-map avec match sur l'ACL VPN, exclue de la règle NAT globale) — sinon le routeur NAT son propre trafic chiffré vers lui-même.
  • MTU/fragmentation : comme pour DMVPN, l'overhead ESP réduit le MTU utile — ip tcp adjust-mss 1360 sur l'interface tunnel évite des soucis TCP silencieux (SSH ou HTTPS qui « pendouille »).
  • crypto map appliquée à la mauvaise interface : elle doit être sur l'interface WAN qui porte l'IP publique/routable, pas sur une interface LAN. :::

📝 Tester ses connaissances

1. Quelle méthode d'authentification est typiquement utilisée en site-à-site, par opposition au host-à-site ?

2. Pourquoi un tunnel qui monte en Phase 1 (`show crypto ikev2 sa` OK) peut-il ne chiffrer aucun trafic en Phase 2 ?

3. Quel est l'avantage principal de la méthode VTI (Virtual Tunnel Interface) par rapport à une crypto map ?

4. Pourquoi ajouter `ip tcp adjust-mss` sur l'interface tunnel d'un VPN IPsec ?