Objectiu:
Muntar un servidor L2TP/IPSEC per tal que els dispositius iOS es puguin connectar a una xarxa remota mitjançant VPN. Aquest servei s’executarà sobre una màquina Debian 6.0 (Squeeze).
Procediment:
Utilitzarem, bàsicament, dos paquets disponibles en els repositoris de Debian. La instal·lació és com segueix:
$ apt-get install openswan xl2tpd
Un cop instal·lats aturarem els serveis per poder configurar-los:
$ service ipsec stop $ service xl2tpd stop
El primer que configurarem és el programari openswan que proporciona el túnel IPSEC. Els arxius a modificar són dos:
$ pico /etc/ipsec.conf
Contingut de ipsec.conf:
# /etc/ipsec.conf - Openswan IPsec configuration file version 2.0 config setup nat_traversal=yes protostack=netkey virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 conn L2TP-PSK-CLIENTS authby=secret pfs=no rekey=no type=tunnel ike=aes128-sha-modp1024 ikelifetime=8h keylife=1h left=ADREÇA_LOCAL_DEL_SERVIDOR leftnexthop=%defaultroute leftprotoport=17/1701 right=%any rightprotoport=17/%any rightsubnetwithin=0.0.0.0/0 auto=add dpdaction=clear
L’arxiu de secrets el podem editar amb:
$ pico /etc/ipsec.secrets
Aquest arxiu conté el secret compartit (PSK) conegut pels clients. Contingut de ipsec.secrets:
%any %any: PSK "AVeryGoodSecret"
Amb aquesta configuració ja podem posar en funcionament el túnel IPSEC:
$ service ipsec start
A continuació procedim a configurar el túnel xl2tp que a la vegada utilitzarà ppp per dur a terme l’autenticació. Es pot configurar amb la següent comanda:
$ pico /etc/xl2tpd/xl2tpd.conf
El contingut bàsic és el següent:
[global] [lns default] ip range = 172.16.0.2-172.16.0.5 local ip = 172.16.0.1 require chap = yes refuse pap = yes require authentication = yes name = Nom pppoptfile = /etc/xl2tpd/ppp-options.xl2tpd length bit = yes
A continuació fem el següent per tal de configurar les opcions de ppp:
$ pico /etc/xl2tpd/ppp-options.xl2tpd
Amb aquest contingut:
ipcp-accept-local ipcp-accept-remote ms-dns LOCAL_OR_PUBLIC_DNS_SERVER noccp auth crtscts idle 1800 mtu 1410 mru 1410 nodefaultroute debug lock proxyarp connect-delay 5000
Finalment l’arxiu que conté les dades d’autenticació es pot editar amb la comanda:
$ pico /etc/ppp/chap-secrets
Al contingut d’aquest arxiu s’hi hauria d’afegir una nova línia amb l’usuari al que volem donar accés al túnel:
... * * AnotherGoodSecret * ...
Ja podem posar en funcionament el servei:
$ service xl2tpd start
Finalment per tal de poder accedir al servidor VPN des de darrere un encaminador NAT podem afegir les següents regles (iptables en aquest exemple):
$ L2TP=ADREÇA_PUBLICA_DEL_ROUTER $ INT_L2TP=ADREÇA_PRIVADA_DEL_SERVIDOR_VPN $ iptables -t nat -A PREROUTING -d $L2TP -p udp --dport 500 -j DNAT --to-destination $INT_L2TP $ iptables -t nat -A PREROUTING -d $L2TP -p udp --dport 4500 -j DNAT --to-destination $INT_L2TP $ iptables -A FORWARD -d $INT_L2TP -p udp --dport 500 -j ACCEPT $ iptables -A FORWARD -d $INT_L2TP -p udp --dport 4500 -j ACCEPT
NOTA: Debian Squeeze no configura el servei ipsec per tal que es posi en funcionament en el moment de l’arrencada de la màquina. Per solventar aquest inconvenient hi ha múltiple solucions. Una simple consisteix en afegir el següent a l’arxiu /etc/rc.local:
... /etc/init.d/ipsec start ... exit 0
OPCIONAL: Això vol dir que des d’aquest moment ja s’hauria de poder connectar un dispositiu iOS a la nova VPN. A continuació es detallen les dues comandes bàsiques per tal de donar accés més enllà del servidor VPN.
$ echo 1 > /proc/sys/net/ipv4/ip_forward $ iptables -t nat -A POSTROUTING -s 172.16.0.0/20 -j MASQUERADE
Connexió des d’un iOS:
Afegir una configuració VPN amb les següents dades:
Descripció: Camp lliure Servidor: Adreça pública de l'encaminador de la xarxa Compte: Camp lliure RSA SecurID: OFF Contrasenya: Preguntar cada cop (correspon, en aquest exemple, a AnotherGoodSecret) Secret: AVeryGoodSecret Enviar tot el tràfic: Opcional