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

linux/vpn.txt · Last modified: 2010/01/12 13:29 (external edit)