W końcu usiadłem do konfiguracji VPN’a, w końcu ja mam iPhone’a, moja żona też ma iPhone’a. W końcu nadchodzi taki moment, aby wszystkie urządzenia gadały między sobą w sposób nie widoczny dla innych.

Przygotowania:

Ciekawy i dość konkretny artykuł znalazłem na stronie Linux L2TP/IPSec with iPhone and Mac OS/X clients, jednak niestety okazało się, że nie wszystko jest tak jak bym chciał. Tak czy owak polecam artykuł, bo to co jest poniżej to wariacja na jego temat.

Wszystko do momentu pobierania źródeł Strongswan’a jest jak w wyżej załączonym linku, potem małe schody z budowaniem deb’a. Ale po kolei.

Do poprawnego działania strgonswan co prawda nie potrzebuje rekompilacji, ale w 80% przypadków będziemy ze swoim telefonem lub laptopem znajdowali się za NAT’em a tu niestety trzeba deko zaingerować w strongswan. Debian nie posiada wkompilowanej obsługi NAT’a.

Po kolei co trzeba zrobić (część poniższego jest kopią z zlinkowanej strony):

/etc/ipsec.conf ```

config setup # crlcheckinterval=600 # strictcrlpolicy=yes # cachecrls=yes nat_traversal=yes charonstart=yes plutostart=yes conn L2TP authby=psk pfs=no rekey=no type=tunnel esp=aes128-sha1 ike=aes128-sha-modp1024 left=your.ip.goes.here leftnexthop=%defaultroute leftprotoport=17/1701 right=%any rightprotoport=17/%any rightsubnetwithin=0.0.0.0/0 auto=add ` /etc/ipsec.secrets ```

your.ip.goes.here %any: PSK “yoursharedkeygoeshere”



Teraz już zaczynamy deko wariować ;-)
Pierwsze to sprawdzenie czy w naszym **/etc/apt/sources.list** są wpisy deb-src, pozwalające na ściąganie źródeł pakietów.

apt-get install build-essential fakeroot dpkg-dev devscripts apt-get source strongswan apt-get install libcurl4-openssl-dev apt-get build-dep strongswan cd strongswan-4.2.4/ dch -i



Za pomocą ulubionego edytora tekstowego, otwieramy plik **debian/rules** ```

#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1
export DH_OPTIONS
# this is a security-critical package, set all the options we can
export DEB_BUILD_HARDENING=1
CONFIGUREARGS := --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
    --libexecdir=/usr/lib \
    --enable-ldap --enable-curl \
    --enable-nonblocking --enable-thread \
    --enable-smartcard --enable-cisco-quirks \
    --with-default-pkcs11=/usr/lib/opensc-pkcs11.so \
    --enable-mediation --enable-medsrv --enable-medcli \
    --enable-openssl --enable-agent \
    --enable-eap-radius --enable-eap-identity --enable-eap-md5 \
    --enable-eap-gtc --enable-eap-aka --enable-eap-mschapv2 \
    --enable-sql \
    --disable-aes --disable-des --disable-fips-prf --disable-gmp \
    --disable-md5 --disable-sha1 --disable-sha2 \
    --enable-nm
 (...)

Do CONFIGUREARGS odpisujemy –enable-nat-transport, w celu włączenia obsługi NAT’a


dpkg-buildpackage -rfakeroot -uc -b

Powyższa komenda zbuduje nam pakiet debiana, jednak u mnie problem pojawił się ze źródłami libnm-glib-vpn, nie wiedzieć dlaczego ale instalator ich nie widział a pakiet zainstalowany był.

Nie ma czym się przejmować, linux to linux - nie zawsze trzeba zrobić wszystko “ładnie” - czasem wystarczy, tak aby działało:


pkg-config --cflags libnm-glib-vpn

U mnie output był taki:


-pthread -I/usr/include/libnm-glib -I/usr/include/NetworkManager -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include

Jeżeli pośpieszyliście się z dpkg-buildpackage to pewnie dostaliście informacje (o ile też problem występuje u Was) o sposobie poradzenia sobie z problemem, ja zrobiłem to prosto:


nm_CFLAGS="-pthread -I/usr/include/libnm-glib -I/usr/include/NetworkManager -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include"
export nm_CFLAGS
nm_LIBS="/usr/include/NetworkManager/"
export nm_LIBS

następnie, znany już:


dpkg-buildpackage -rfakeroot -uc -b
cd ../
ls -l |grep .deb
-rw-r--r-- 1 root root   188328 09-18 11:57 libstrongswan_4.3.2-1.4_amd64.deb
-rw-r--r-- 1 root root    70366 09-18 11:56 strongswan_4.3.2-1.4_all.deb
-rw-r--r-- 1 root root   349814 09-18 11:57 strongswan-ikev1_4.3.2-1.4_amd64.deb
-rw-r--r-- 1 root root   256576 09-18 11:57 strongswan-ikev2_4.3.2-1.4_amd64.deb
-rw-r--r-- 1 root root    45092 09-18 11:57 strongswan-nm_4.3.2-1.4_amd64.deb
-rw-r--r-- 1 root root   291452 09-18 11:57 strongswan-starter_4.3.2-1.4_amd64.deb

Tak to wygląda u mnie, u Was powinno podobnie.

Następnie instalujemy za pomocą dpkg -i pliki_deb

Jak to już jest zainstalowane to pierwszy etap za nami, teraz konfiguracja i instalacja xl2tpd, tu jest deko łatwiej:


	apt-get install xl2tpd

Konfigurujemy demona xl2tpd: /etc/xl2tpd/xl2tpd.conf ```

[global]
debug network = yes
debug tunnel = yes
[lns default]
ip range = 172.16.1.100-172.16.1.254
local ip = 172.16.1.1
require chap = yes
refuse pap = yes
require authentication = yes
name = pretasoft.pl
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes


Ustawiamy hasło globalne:
**/etc/xl2tpd/l2tp-secrets** ```

	# Secrets for authenticating l2tp tunnels
	# us	them	secret
	# *		marko blah2
	# zeus		marko	blah
	# *	*	interop
	*       *       haslo_globalne *

Opcje xl2tpd dla połączeń ppp /etc/ppp/options.xl2tpd ```

ipcp-accept-local
ipcp-accept-remote
ms-dns twoj_dns
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000


Plik chap z naszymi klientami VPN:
**/etc/ppp/chap-secrets** ```

	# Secrets for authentication using CHAP
	# client	server		secret				IP addresses
	client1 * haslo1 *
	client2 * haslo2 *

Na samym końcu:


	/etc/init.d/ipsec start
	/etc/init.d/xl2tpd start

Taka konfiguracja u mnie działa i na iPhone’ach oraz OSX’ie.

Jak ktoś zauważył błąd to proszę o komentarze, powodzenia z VPN’em.