DG834G VPN contra un OpenSwan amb NAT

Objectius:

El que ens interessa en aquest cas és disposar d’una connexió VPN des d’un router ADSL Netgear DG834G amb un servidor VPN OpenSwan que es troba dins d’una xarxa amb NAT. Un dels problemes que trobarem és que l’adreça del router ADSL canvia a cada connexió cosa que ens condicionarà la configuració de l’OpenSwan.

Instal·lació:

La instal·lació la fem sobre un Debian 5.0 (Lenny) pelat. Podeu trobar un petit i ràpid tutorial de com instal·lar el sistema operatiu en aquest enllaç: Debian Lenny (5.0).

La comanda per instal·lar el servidor VPN és:

$ apt-get install openswan

En el servidor Debian hauriem de deshabilitar el següent:

echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/lo/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects

echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/lo/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects

La comanda ipsec verify ens mostrarà si tot és correcte.

Configuració:

La configuració del servidor és fa mitjançant dos arxius:

  • /etc/ipsec.secrets
  • /etc/ipsec.conf

El primer contindrà les claus compartides i el segon la configuració pròpia del túnel.

La topologia de xarxa que volem configurar és la següent:

IPSec

El que ens interessa és que el client que es troba en 192.168.1.2 pugui accedir a la xarxa 192.168.0.0/24 mitjançant el tunel.

La configuració de OpenSwan és la següent:

/etc/ipsec.secrets:

@empresa %any: PSK "unacontrasenyamoltbona"

/etc/ipsec.conf:

version 2.0

config setup
        interfaces=%defaultroute
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!192.168.0.0/24

conn vpn
        authby=secret
        pfs=yes
        left=192.168.0.10
        leftsubnet=192.168.0.0/24
        leftsourceip=192.168.0.10
        leftid=@empresa
        right=%any
        rightsubnet=vhost:%priv,%no
        rightid=@client
        auto=add

include /etc/ipsec.d/examples/no_oe.conf

A continuació podem configurar el router DG834G. La configuració es du a terme des de l’interfície Web. Ens connectarem a la pàgina i anirem a les opcions de VPN. Haurem de crear una nova política (VPN Policies) amb la següent configuració:

Policy Name: Empresa
Remote VPN Endpoint: Fixed IP Address -> 123.123.123.123
NETBIOS: No
IKE Keep Alive: No
--
Local Lan: Subnet address
Single/Start address: 192.168.1.1
Subnet mask: 255.255.255.0
Remote LAN: Subnet address
Single/Start address: 192.168.0.1
Subnet mask: 255.255.255.0
--
IKE
Direction: Initiator and responder
Exchange mode: Main Mode
DH Group: Group 2 (1024 bits)
Local Identity Type: FQDN
Data: empresa
Remote Identity Type: FQDN
Data: client
--
Parameters
Encryption Algorithm: 3DES
Authentication Algorithm: SHA-1
PreShared-Key: unacontrasenyamoltbona
SA Life Time: 3600 seconds
Enable PFS: No

A partir d’aquest punt el router ADSL s’hauria de connectar correctament al servidor OpenSwan.

Notes:

  • S’ha de recordar de fer el NAT al router de l’empresa dels ports UDP 500 (IKE) i 4500 (NAT-T) cap al servidor intern (192.168.0.10).
  • A més s’ha de tenir en compte que quan una màquina de la xarxa client (192.168.1.0/24) accedeixi a les màquines de la xarxa de l’empresa aquestes últimes utilitzaran la seva gateway per defecte per accedir a la xarxa del client i això provocara la perdua total de paquets a menys que configurem una ruta nova en el router de l’empresa que redireccioni els paquets a la xarxa 192.168.1.0 a traves del servidor VPN.
  • Pel pas anterior s’ha de tenir en compte també que l’ip_forwarding ha d’estar habilitat en el servidor  VPN.

Documentació:

Es recomana la lectura de:

$ man ipsec.secrets
$ man ipsec.conf

La pàgina següent conté força informació al respecte de la configuració VPN en Linux:

http://www.jacco2.dds.nl/networking/freeswan-l2tp.html