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-à-site | Host-à-site (road warrior) | |
|---|---|---|
| Pairs | Deux routeurs, IP fixes connues des deux côtés | Un routeur fixe, des clients nomades à IP variable |
| Authentification typique | PSK (rapide à déployer, deux extrémités connues) | Certificats X.509 (scalable, pas de secret partagé par client) |
| Interface tunnel | crypto map (classique) ou VTI statique | Virtual-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 bloccrypto ikev2 profile+transform-setque pour la crypto map, référencés dans uncrypto ipsec profileau lieu d'unecrypto 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-mapavecmatchsur 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 1360sur l'interface tunnel évite des soucis TCP silencieux (SSH ou HTTPS qui « pendouille »). crypto mapappliqué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 ?