Easy VPN Server Avec DVTI (Dynamic Vpn Tunnel Interfaces)
Un article sur la configuration de VPN Site to Site en utilisant les fonctionnalités Easy VPN Server avec des DVTI.
Topologie dynagen: EzVPN
Introduction:
L’avantage de cette solution est que l’on va pouvoir simplement créer plusieurs VPN avec les même paramètres en utilisant les templates. Les interface VTI supportent aussi d’autres protocoles que le protocole IP. Cette solution n’utilises pas non plus de crypto maps: Tout ce qui est routé vers l’interface tunnel sera encrypté. De même, le traffic encrypté peut être reçu par n’importe quelle interface physique (tant qu’il correspond au traffic de l’interface tunnel).
Lorsque le VPN est établi, une route statique par défaut est créé vers le hub VPN (sauf en cas de split tunneling, cas ou le traffic internet ne passe pas par le VPN).
Note, si le routeur est configuré avec une route statique par défaut, il faut que son AD soit supérieur a 1, sans quoi la route intallée par Easy VPN ne sera pas prise en compte (AD = 1).
Pré-configuration
Je vais simplement configuré une route par défaut sur le client et la passerelle VPN avec du PAT:
VPNGate(config)#int f0/0 VPNGate(config-if)#ip add 80.0.1.2 255.255.255.0 VPNGate(config-if)#no sh VPNGate(config)#ip nat inside source list 1 interface F0/0 overload VPNGate(config)#access-list 1 permit any VPNGate(config)#ip route 0.0.0.0 0.0.0.0 80.0.1.1 10 ! AD = 10 pour VPN, sinon tout passera par le net! VPNGate(config)#int f0/0 VPNGate(config-if)#ip nat outside VPNGate(config-if)#int loop 1 VPNGate(config-if)#ip nat inside VPNGate(config-if)#ip add 192.168.1.1 255.255.255.0 VPNGate(config-if)#exit
VPNClient(config)#int f0/0 VPNClient(config-if)#ip add 80.0.0.2 255.255.255.0 VPNClient(config-if)#no sh VPNClient(config-if)#ip nat inside source list 1 interface F0/0 overload VPNClient(config)#access-list 1 permit any VPNClient(config)#ip route 0.0.0.0 0.0.0.0 80.0.0.1 10 ! AD = 10 pour VPN, sinon tout passera par le net! VPNClient(config-if)#int f0/0 VPNClient(config-if)#ip nat outside VPNGate(config-if)#int loop 1 VPNGate(config-if)#ip nat inside VPNGate(config-if)#ip add 192.168.0.1 255.255.255.0 VPNGate(config-if)#exit
WAN(config)#int f0/0 WAN(config-if)#ip add 80.0.0.1 255.255.255.0 WAN(config-if)#no sh WAN(config-if)#int f0/1 WAN(config-if)#ip add 80.0.0.1 255.255.255.0 WAN(config-if)#no sh WAN(config-if)#exit
Configuration du hub (VPNGate)
Création de la policy ISAKMP avec une clé par défaut (en production, utiliser une PKI serait plus sécurisé)
VPNGate(config)#crypto isakmp policy 1
VPNGate(config-isakmp)#encryption aes
VPNGate(config-isakmp)#hash sha
VPNGate(config-isakmp)#group 2
VPNGate(config-isakmp)#auth pre
VPNGate(config-isakmp)#auth pre-share
VPNGate(config-isakmp)#exit
VPNGate(config)#crypto isakmp key password address 0.0.0.0 0.0.0.0
Creation de la configuration client
Il faut spécifier les paramètres qui seront envoyés au client, à la manière du remote VPN. Ici, nous allons créer les paramètres pour le groupe cisco, ainsi qu’un profile ISAKMP pour les utilisateurs de ce groupe. Il faut aussi créer un utilisateur pour authentifier le router.
VPNGate(config)#username VPNClient password EzVPNPass VPNGate(config)#aaa new-model VPNGate(config)#aaa authentication login IKMPLogin local VPNGate(config)#aaa authorization network IKMPAuthor local VPNGate(config)#crypto isakmp client configuration group GroupeEzVPN VPNGate(config-isakmp-group)#key password VPNGate(config-isakmp-group)#domain labo.lan VPNGate(config-isakmp-group)#pool EzVPNPool VPNGate(config-isakmp-group)#exit VPNGate(config-isakmp-group)#acl 101 VPNGate(config)#ip local pool EzVPNPool 192.168.10.1 192.168.10.100 VPNGate(config)#access-list 101 permit ip 192.168.1.0 0.0.0.255 any VPNGate(config)#crypto isakmp profile IKMPProfile1 % A profile is deemed incomplete until it has match identity statements VPNGate(conf-isa-prof)#match identity group GroupeEzVPN VPNGate(conf-isa-prof)#client configuration address respond VPNGate(conf-isa-prof)#isakmp authorization list IKMPAuthor VPNGate(conf-isa-prof)#client authentication list IKMPLogin VPNGate(conf-isa-prof)#virtual-template 1 VPNGate(conf-isa-prof)#exit
Note: On aurait pu utiliser des paramètres par défaut via les commandes crypto isakmp client config…/Crypto isakmp client auth…/Crypto isakmp author list… (voir mon article sur le remote VPN)
Note2: L’acl sert à spécifier le traffic qui doit passer dans le VPN. Sans ça, tout passera par le VPN (pas de split tunneling).
Configuration IPSEC
Ici on créé un transform set et un profile IPSec qui sera rattaché à l’interface Template
VPNGate(config)#crypto ipsec transform-set EzVPNTSet esp-aes esp-sha VPNGate(cfg-crypto-trans)#exit VPNGate(config)#crypto ipsec profile IPSecProfile1 VPNGate(ipsec-profile)#set transform-set EzVPNTSet VPNGate(ipsec-profile)#set isakmp-profile IKMPProfile1 VPNGate(ipsec-profile)#exit
Configuration de l’interface VTI
La commande ip unnumbered permet de partager l’adresse ip de l’interface F0/0
VPNGate(config)#interface virtual-template 1 type tunnel . VPNGate(config-if)#ip unnumbered fastEthernet 0/0 VPNGate(config-if)#tunnel source f0/0 VPNGate(config-if)#tunnel mode ipsec ipv4 VPNGate(config-if)#tunnel protection ipsec profile IPSecProfile1
Voila c’est tout pour le hub, attaquons la config du client:
Configuration du client
La configuration du client, comme vous vous en doutez, vas être beaucoup plus simple:
Configuration ISAKMP
VPNClient(config)#crypto isakmp key password address 0.0.0.0 0.0.0.0
Le reste sera récupéré sur le serveur easy vpn
Configuration EzVpn
VPNClient(config)#int virtual-template 1 type tunnel VPNClient(config-if)#tunnel mode ipsec ipv4 VPNClient(config)#crypto ipsec client ezvpn ezVpnConnection1 VPNClient(config-crypto-ezvpn)#connect manual VPNClient(config-crypto-ezvpn)#group GroupeEzVPN key password VPNClient(config-crypto-ezvpn)#local-address f0/0 VPNClient(config-crypto-ezvpn)#peer 80.0.1.2 !VPNGate VPNClient(config-crypto-ezvpn)#mode client VPNClient(config-crypto-ezvpn)#virtual-interface 1 EZVPN: For virtual-interface to take effect apply ezvpn on a real interface VPNClient(config-crypto-ezvpn)#exit VPNClient(config)#int f0/0 VPNClient(config-if)#crypto ipsec client ezvpn ezVpnConnection1 VPNClient(config-if)#int loop 1 VPNClient(config-if)#crypto ipsec client ezvpn ezVpnConnection1 inside
Connexion du VPN:
manuellement
VPNClient#crypto ipsec client ezvpn connectezVpnConnection1
VPNClient#
*Mar 1 01:54:17.268: EZVPN(ezVpnConnection1): Pending XAuth Request, Please enter the following command:
*Mar 1 01:54:17.268: EZVPN: crypto ipsec client ezvpn xauth
VPNClient#crypto ipsec client ezvpn xauth
Username: VPNClient !Client créé avec la commande username sur VPNGate
Password:
VPNClient#
*Mar 1 01:55:07.599: %CRYPTO-6-EZVPN_CONNECTION_UP: (Client) User= Group=GroupeEzVPN Client_public_addr=80.0.0.2 Server_public_addr=80.0.1.2 Assigned_client_addr=192.168.10.1
*Mar 1 01:55:07.799: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0, changed state to up
automatiquement
Sur le serveur, ajouter l’option save password, sans quoi le serveur rejetteras les login et forcera le renseignement manuel du login mot de passe
VPNGate(config)#crypto isakmp client configuration group GroupeEzVPN VPNGate(config-isakmp-group)#save-password VPNGate(config-isakmp-group)#exit
Sur le client
VPNClient(config-crypto-ezvpn)#xauth userid mode local VPNClient(config-crypto-ezvpn)#username VPNClient password EzVPNPass VPNClient(config-crypto-ezvpn)#connect auto
Tests:
VPNClient#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is 80.0.0.1 to network 0.0.0.0
80.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 80.0.0.0/24 is directly connected, FastEthernet0/0
S 80.0.1.2/32 [1/0] via 80.0.0.1
192.168.10.0/32 is subnetted, 1 subnets
C 192.168.10.4 is directly connected, Loopback0
C 192.168.0.0/24 is directly connected, Loopback1
S 192.168.1.0/24 [1/0] via 0.0.0.0, Virtual-Access2
S* 0.0.0.0/0 [10/0] via 80.0.0.1
VPNClient#ping 192.168.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/52/133 ms
ISAKMP
VPNClient#sh crypto session Crypto session current status Interface: FastEthernet0/0 Session status: UP-ACTIVE Peer: 80.0.1.2 port 500 IKE SA: local 80.0.0.2/500 remote 80.0.1.2/500 Active IPSEC FLOW: permit ip 0.0.0.0/0.0.0.0 0.0.0.0/0.0.0.0 Active SAs: 2, origin: crypto map VPNClient#sh crypto ipsec client ezvpn Easy VPN Remote Phase: 6 Tunnel name : ezVpnConnection1 Inside interface list: Loopback1 Outside interface: Virtual-Access2 (bound to FastEthernet0/0) Current State: IPSEC_ACTIVE Last Event: SOCKET_UP Address: 192.168.10.5 !IP du pool configuré Mask: 255.255.255.255 Default Domain: labo.lan Save Password: Disallowed Split Tunnel List: 1 Address : 192.168.1.0 !Paramètres définit par l'ACL 101 sur VPNGate Mask : 255.255.255.0 Protocol : 0x0 Source Port: 0 Dest Port : 0 Current EzVPN Peer: 80.0.1.2 VPNClient#sh crypto map ! crypto maps générées automatiquement Crypto Map: "Virtual-Access2-head-0" idb: FastEthernet0/0 local address: 80.0.0.2 Crypto Map "Virtual-Access2-head-0" 65536 ipsec-isakmp Map is a PROFILE INSTANCE. Peer = 80.0.1.2 Extended IP access list access-list permit ip any any Current peer: 80.0.1.2 Security association lifetime: 4608000 kilobytes/2147483 seconds PFS (Y/N): N DH group: group2 Transform sets={ ezvpn-profile-autoconfig-transform-0, ezvpn-profile-autoconfig-transform-1, ezvpn-profile-autoconfig-transform-2, ezvpn-profile-autoconfig-transform-3, ezvpn-profile-autoconfig-transform-4, ezvpn-profile-autoconfig-transform-5, ezvpn-profile-autoconfig-transform-6, ezvpn-profile-autoconfig-transform-7, ezvpn-profile-autoconfig-transform-8, ezvpn-profile-autoconfig-transform-9, ezvpn-profile-autoconfig-transform-10, ezvpn-profile-autoconfig-transform-11, ezvpn-profile-autoconfig-transform-12, ezvpn-profile-autoconfig-transform-13, ezvpn-profile-autoconfig-transform-14, ezvpn-profile-autoconfig-transform-15, ezvpn-profile-autoconfig-transform-16, ezvpn-profile-autoconfig-transform-17, ezvpn-profile-autoconfig-transform-18, ezvpn-profile-autoconfig-transform-19, } Interfaces using crypto map Virtual-Access2-head-0: Virtual-Access2
VPNGATE:
VPNGate#sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is 80.0.1.1 to network 0.0.0.0
80.0.0.0/24 is subnetted, 1 subnets
C 80.0.1.0 is directly connected, FastEthernet0/0
192.168.10.0/32 is subnetted, 1 subnets
S 192.168.10.5 [1/0] via 0.0.0.0, Virtual-Access2
C 192.168.1.0/24 is directly connected, Loopback1
S* 0.0.0.0/0 [10/0] via 80.0.1.1
VPNGate#
Recent Entries
- Reponse tardive aux commentaires
- CCIE #43827
- VRF-Aware GETVPN, DMVPN, et FLEXVPN Spoke To Spoke
- Mes articles sur supportforums
- Définir des « handlers » personnalisés pour associer les liens d’un protocole avec une application perso.
- DMVPN over GETVPN avec KS COOP (redondance) et KS Forwarding
- EAP-TLS avec Autorité de certification autonome (Standalone CA) sous Windows 2003
- Static subnet NAT avec VRF pour monter des ‘PODs’ (LAB)
- Capture WiFi en mode monitor sous windows, et capture par process
- Comment taper un point d’interrogation ‘?’ dans un mot de passe ?
décembre 31st, 2009 at 2:28
[…] va considérer que l’IP du routeur RBO1 est statique, sinon il aurait fallu faire de l’easy-vpn, ce qui aurait été possible, mais je n’avais pas envie. Pour le site-to-site je vais vous […]