Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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
linux/vpn.txt · Last modified: 2010/01/12 13:29 (external edit)