Les objectifs :
Les solutions :
Les conventions : gw = gateway (passerelle) fw = firewall a.b.c.d = ip de la gw du bureau e.f.g.h = ip du firewall du bureau
Pour commencer, voici le détail de la configuration réseau
Mon reseau 192.168.1.0/24 | | Ma gateway (slack 8 / K 2.4.5) 192.168.1.100 glouglou.yi.org (80.13.12.xx) | | GW wanadoo 80.13.12.1 | | Internet | | GW bureau a.b.c.d | | FW (RH6.2 / K 2.2.16) 192.168.100.254 e.f.g.h (ip externe) | | le reseau interne 192.168.0.0/16
Pour commencer, il faut installer Freeswan. La doc du produit étant suffisamment bien faite sur ce sujet, pas la peine de revenir dessus. Attention la compilation sur des machines peu puissante peut prendre du temps surtout lors de la generation des cles (une 20aine de minutes sur mon cyrix 166+/32Mo)
Important : le réseau du boulot ne doit pas contenir d'ip en 192.168.1.x
La configuration de Ipsec tient en 2 fichiers :
1) IPSEC.CONF
Le mien sur ma machine :
# /etc/ipsec.conf - FreeS/WAN IPsec configuration file # basic configuration config setup # THIS SETTING MUST BE CORRECT or almost nothing will work; # %defaultroute is okay for most simple cases. #interfaces=%defaultroute #moi, je suis en ADSL avec wanadoo/netissimo1 interfaces="ipsec0=eth1 ipsec1=ppp0" # Debug-logging controls: "none" for (almost) none, "all" for lots. klipsdebug=none plutodebug=none # Use auto= parameters in conn descriptions to control startup actions. plutoload=%search plutostart=%search # sample VPN connection conn oburo-chezmoi left=e.f.g.h leftsubnet=192.168.0.0/16 leftnexthop= a.b.c.d right=glouglou.yi.org rightsubnet=192.168.1.0/24 rightnexthop=80.13.12.1 auto=start
Celui sur le FW :
config setup interfaces=%defaultroute klipsdebug=none plutodebug=none plutoload=%search plutostart=%search conn oburo-chezmoi left=e.f.g.h leftsubnet=192.168.0.0/16 leftnexthop=%defaultroute right=glouglou.yi.org rightsubnet=192.168.1.0/24 auto=start
On notera que tout est pareil sauf : - Interfaces. En effet, pas de connexion ppp au bureau. - Leftnexthop. J'aurai pu laisser %defaultroute de mon cote ça aurait sûrement marché
1) IPSEC.SECRETS
e.f.g.h glouglou.yi.org “la.faut.mettre.une.super.key.de.killer.”
Le fichier ipsec.secrets est identique des 2 cotés.
Une fois ça configuré, il suffit de lancer freeswan : ipsec setup start Des deux cotés.
Attention, on ne peut pas pinger a partir des gateway Avec la commande Ipsec look, vous pourrez voir si tout est bien monté. Si ipsec look ne vous renvoit que les routes, c'est pas bon Pour moi, ca donne :
192.168.1.0/24 -> 192.168.0.0/16 => tun0x1002@e.f.g.h esp0x9211cb81@e.f.g.h (1613) ipsec0->eth1 mtu=16260(1500)->1500 ipsec1->ppp0 mtu=16260(1435)->1492 esp0x9211cb81@e.f.g.h ESP_3DES_HMAC_MD5: dir=out src=80.13.12.xx iv_bits=64bits iv=0x0cf5460938bd9069 ooowin=64 seq=1613 alen=128 aklen=128 eklen=192 life(c,s,h)=alloc(1,0,0)bytes(222064,0,0)add(980,0,0)use(976,0,0)packets(1613,0,0) idle=24 esp0xbcea5e24@80.13.12.xx ESP_3DES_HMAC_MD5: dir=in src=e.f.g.h iv_bits=64bits iv=0xfea25273140562a2 ooowin=64 seq=2216 bit=0xfffffffffc7fffff max_seq_diff=7 alen=128 aklen=128 eklen=192 life(c,s,h)=alloc(1,0,0)bytes(2245354,0,0)add(980,0,0)use(976,0,0)packets(2141,0,0) idle=24 tun0x1001@80.13.12.xx IPIP: dir=in src=e.f.g.h life(c,s,h)=alloc(1,0,0)bytes(2245354,0,0)add(980,0,0)use(976,0,0)packets(2141,0,0) idle=24 tun0x1002@e.f.g.h IPIP: dir=out src=80.13.12.xx life(c,s,h)=alloc(1,0,0)bytes(166068,0,0)add(980,0,0)use(976,0,0)packets(1613,0,0) idle=24 Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 80.13.12.1 0.0.0.0 UG 40 0 0 ppp0 192.168.0.0 80.13.12.1 255.255.0.0 UG 40 0 0 ipsec1 192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 eth1 192.168.1.0 0.0.0.0 255.255.255.0 U 40 0 0 ipsec0 80.13.12.1 0.0.0.0 255.255.255.255 UH 40 0 0 ipsec1 80.13.12.1 0.0.0.0 255.255.255.255 UH 40 0 0 ppp0
La chose a ne pas oublier :
* Ma gw linux me servant de partage de connexion internet, j'ai du changer le masquerading :
J'ai remplace
/usr/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE
par
/usr/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.0.0/16 -j MASQUERADE
afin de ne pas masquerader ce qui a pour destination le réseau 192.168.0.0/16
* Egalement, j'ai un snmpd qui tourne sur ma gw. ce snmpd est monitoré par un mrtg (normal quoi :) l'installation d'Ipsec rajoute des interfaces. Ainsi, eth0 est passe de l'interface 3 a l'interface 7. Il faudra bien penser a modifier cela dans votre fichier de conf MRTG
Y a surement qq incoherences mais en tout cas, ca marche :)
Les resultats obtenus : a partir du reseau privé, je peux acceder a n'importe quelle machine du reseau de l'entreprise. (apres tout, c'est le but du VPN :)
Chag & Gnaume