This shows you the differences between two versions of the page.
— |
linux:vpn [2010/01/12 13:29] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | Les objectifs : | ||
+ | * Installer un vpn entre un reseau d'entreprise relié directement au net par une LS et un reseau privé relié au net par une connexion ADSL | ||
+ | * Ne pas gener le role principal de la gw cote reseau privé (partage de connexion internet) | ||
+ | Les solutions : | ||
+ | * Freeswan 1.92 avec cle partagée | ||
+ | * glouglou.yi.org ca permet d'avgoir un FQDN bien qu'on soit en ip dynamique | ||
+ | |||
+ | 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 | ||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | 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 : ** | ||
+ | |||
+ | |||
+ | <code> | ||
+ | # /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 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ** Celui sur le FW : ** | ||
+ | |||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | |||
+ | </code> | ||
+ | |||
+ | 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 : | ||
+ | |||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | |||
+ | 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 |