1. Ipsec/l2pt + G1 HTC Dream czyli VPN na Androidzie 2. Ipsec + Nokia (od Symbian s60v3)
Ipsec/l2pt + G1 HTC Dream czyli VPN na Androidzie. Konfiguracja serwera na linuxie w tym przypadku gentoo: instalujemy xl2tpd: emerge net-dialup/xl2tpd Instalujemy strongswan z flagę "nat" zeby nie było problemu z łączeniem se za natu: USE="nat" emerge strongswan Edytujemy /etc/xl2tpd/xl2tpd.conf [global] debug network = yes debug tunnel = yes auth file = /etc/xl2tpd/l2tp-secrets listen-addr = x.x.x.x # zew.addr.ip [lns default] ip range = 10.1.0.1-10.1.0.254 # wew.pula.addr.ip local ip = 10.1.0.1 # addr.wew.srv refuse pap = yes require chap = yes require authentication = yes name = test ppp debug = yes pppoptfile = /etc/ppp/options.l2tpd length bit = yes Edytujemy: /etc/xl2tpd/l2tp.secrets: Edytujemy tajnehaslo: Zamieniamy "servername" na nazwe naszego serwera: # Secrets for authenticating l2tp tunnels # us them secret servername anonymous tajnehaslo Edytujemy: /etc/ppp/options.l2tpd name test ipcp-accept-local ipcp-accept-remote ms-dns 10.0.0.1 noccp auth crtscts idle 1800 mtu 1410 mru 1410 nodefaultroute defaultmetric 5 debug lock proxyarp connect-delay 5000 logfile /var/log/xl2tpd.log Edytujemy: /etc/ppp/chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses test * test 10.1.0.2 Następnie uruchamiamy demona xl2tpd /etc/init.d/xl2tpd start lub dla testów w celu debagu: xl2tpd -D # tail -f /var/log/xl2tpd.log Na tym zakonczyła się konfiguracja servera l2tpd Konfigurujemy telefon: Settings-> Wireless controls ->Add VPN -> Add L2TP VPN Wypełniamy pola według powyższej konfiguracji: VPN name = l2tp SET VPN server = x.x.x.x # zew.addr.ip Enable L2TP secret [zaznaczymy] Set L2TP secret # wpisujemy tajne hasło Wracamy do VPN settingsi klikamy na l2tp Zostajemy poproszeni o login i pass z pliku /etc/ppp/chap-secrets Przy takiej konfiguracji mozemy łączyć się po VPN z sieciami za serverem jeśli tylko jest włączone forwardowanie pakietów i jest dodany routing. Ale przez to że na telefonie zmienił się default gateway nie ma dostępu do internetu. Aby skonfigurawać udostępnianie internetu poprzez VPN przejdż TU Jesli wszystko działa możemy pozstać przy takiej konfiguracji lub przejść o krok dalej czyli konfiguracji IPsec/L2tp: Edytujemy: /etc/ipsec.conf config setup nat_traversal=yes charonstart=yes plutostart=yes conn L2TP authby=psk pfs=no rekey=no type=transport left=x.x.x.x # zew.addr.ip leftnexthop=%defaultroute leftprotoport=17/1701 right=%any rightprotoport=17/%any rightsubnetwithin=0.0.0.0/0 auto=add Edytujemy nasze hasło PSK: /etc/ipsec.secrets # /etc/ipsec.secrets - strongSwan IPsec secrets file : PSK "psksecret" Przed dwukropkiem nie wpisuje żadnych adresów IP ponieważ chcemy wpuszczać klientów z różnych sieci. Następnie uruchamiamy demona IPsec /etc/init.d/ipsec start Patrzymy w logi: # tail -f /var/log/messages Na tym zakonczyła się konfiguracja servera IPsec/l2tpd Konfigurujemy telefon: Settings-> Wireless controls ->Add VPN -> Add L2TP/IPsec VPN Wypełniamy pola według powyższej konfiguracji: VPN name = l2tp/ipsec SET VPN server = x.x.x.x # zew.addr.ip Set IPSec pre-shared key # wpisujemy nasze PSK Enable L2TP secret [zaznaczymy] ale nie musimy starczy PSK Set L2TP secret # [opcja zalezna czy zaznaczone] wpisujemy tajne hasło Wracamy do VPN settings i klikamy na l2tp/ipsec Zostajemy poproszeni o login i pass z pliku /etc/ppp/chap-secrets Konfiguracja IPtables - czyli udostępniamy internet poprzez VPN Sieć 10.1.0.0/24 to pula z której przyznawane są adresy IP dla klientów. Sieć 192.168.0.0/24 za serverem VPN. #! /bin/bash -x #flush iptables -F iptables -X iptables -t nat -X iptables -t nat -F # def policy iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP # lo iptables -A INPUT -i lo -j ACCEPT iptables -A FORWARD -o lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # utrzymuje nawiazane INPUT DROP iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED # ipsec esp l2tp iptables -A INPUT -i eth0 -p esp -j ACCEPT iptables -A INPUT -i eth0 -p ah -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 500 -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 4500 -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 1701 -j ACCEPT # ograniczony internet dla G1 www ftp ssh ping iptables -t nat -A POSTROUTING -s 10.1.0.0/24 ! -d 192.168.0.0/24 -p tcp --dport 80 -j SNAT --to x.x.x.x iptables -t nat -A POSTROUTING -s 10.1.0.0/24 ! -d 192.168.0.0/24 -p tcp --dport 443 -j SNAT --to x.x.x.x iptables -t nat -A POSTROUTING -s 10.1.0.0/24 ! -d 192.168.0.0/24 -p tcp --dport 22 -j SNAT --to x.x.x.x iptables -t nat -A POSTROUTING -s 10.1.0.0/24 ! -d 192.168.0.0/24 -p tcp --dport 21 -j SNAT --to x.x.x.x # 5228 makret iptables -t nat -A POSTROUTING -s 10.1.0.0/24 ! -d 192.168.0.0/24 -p tcp --dport 5228 -j SNAT --to x.x.x.x iptables -t nat -A POSTROUTING -s 10.1.0.0/24 ! -d 192.168.0.0/24 -p icmp -j SNAT --to x.x.x.x iptables -A FORWARD -s 10.1.0.0/24 ! -d 192.168.0.0/24 -j ACCEPT #dostęp do lokalnych sieci z G1 #user test iptables -A FORWARD -s 10.1.0.2 -d 192.168.0.0/24 -j ACCEPT iptables -A FORWARD -d 10.1.0.2 -s 192.168.0.0/24 -j ACCEPT /etc/init.d/iptables save /etc/init.d/xl2tpd restart /etc/init.d/ipsec restart Ipsec + Nokia (od Symbian s60v3) Konfiguracja serwera: Testowałem tą konfigurację z nokią 6120c i e51. Zaczynyamy od instalacji pakietu strongswan z use "nat". W innej dystrubycji "nat" może być już defaultowo trzeba sprawdzić. W tym przypadku autoryzacja bedzie odbywać się na podstawie PSK i FQDN. Edytujemy: /etc/ipsec.conf config setup nat_traversal=yes charonstart=yes plutostart=yes conn nokia left=x.x.x.x leftsubnet=10.1.0.0/0 leftid=@twoja.domena.com type=tunnel authby=secret pfs=no right=%any rightid=user.twoja.domena.com # rightid = FQDN leftfirewall=yes auto=add Edytujemy nasze hasło PSK: /etc/ipsec.secrets # /etc/ipsec.secrets - strongSwan IPsec secrets file : PSK "xxxxxxx" Następnie startujemy demona ipsec: /etc/init.d/ipsec start Włączamy tailowanie loga: # tail -f /var/log/messages To tyle po stronie serwera. Konfiguracja klienta NOKIA: Sciągamy ze strony nokia program Nokia Mobile VPN Client Policy Tool którym bedziemy tworzyć polityke VPN dla naszej noki. I Klienta VPN dla noki mVPN_S60_v3_1_091231.sisx. Klienta VPN czyli *.sisx instalujemy na telefonie. A na kompie odpalamy Client Policy Tool. Generalnie konfiguracja wygląda jak niżej po skonfigurowaniu klikamy "Generate VPN Policy" a plik *.vpn wgrywamy do telefonu. Wygenerowaną politykę instalujemy poprzez kliknięcie na plik w telefonie. Jak skonfigurować punkt dostępu z wygenerowaną polityką trzeba sobie znaleść w necie :)Trzeba pamietać ze zautoryzowany telefon nie uzyska adresu ip z żadnej puli adresów lokalnych. I zawszę będzie się dobijał do lokalnych zasobów z zewnetrznego adresu. Aby to zmienić wystarczy zastosować prostą regułę iptables: (Zakłądając żę adresacja za serwerem to 10.0.0.0/24, ukryjemy wszystkich dobijających się na adres 10.0.0.1:80 pod adresem 10.0.0.254.) iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -d 10.0.0.1/32 -p tcp --dport 80 -j SNAT --to 10.0.0.254 A tu log z połączenia zakończonego powodzeniem: Apr 1 09:45:17 ssh pluto[1617]: packet from x.x.x.x:500: received Vendor ID payload [Dead Peer Detection] Apr 1 09:45:17 ssh pluto[1617]: packet from x.x.x.x:500: received Vendor ID payload [draft-ietf-ipsec-nat-t-ike-03] Apr 1 09:45:17 ssh pluto[1617]: packet from x.x.x.x:500: received Vendor ID payload [RFC 3947] Apr 1 09:45:17 ssh pluto[1617]: "nokia"[3] x.x.x.x #8: responding to Main Mode from unknown peer x.x.x.x Apr 1 09:45:18 ssh pluto[1617]: "nokia"[3] x.x.x.x #8: ignoring Vendor ID payload [sd98asd98asda9sd8as9d8as9d8] Apr 1 09:45:18 ssh pluto[1617]: "nokia"[3] x.x.x.x #8: NAT-Traversal: Result using RFC 3947: no NAT detected Apr 1 09:45:18 ssh pluto[1617]: "nokia"[3] x.x.x.x #8: ignoring informational payload, type IPSEC_INITIAL_CONTACT Apr 1 09:45:18 ssh pluto[1617]: "nokia"[3] x.x.x.x #8: Peer ID is ID_FQDN: 'nokia.twoja.domena.com' Apr 1 09:45:18 ssh pluto[1617]: "nokia"[2] x.x.x.x #8: deleting connection "nokia" instance with peer x.x.x.x {isakmp=#0/ipsec=#0} Apr 1 09:45:18 ssh pluto[1617]: "nokia"[2] x.x.x.x #8: sent MR3, ISAKMP SA established Apr 1 09:45:19 ssh pluto[1617]: "nokia"[2] x.x.x.x #9: responding to Quick Mode Apr 1 09:45:19 ssh vpn: + nokia.twoja.domena.com x.x.x.x -- x.x.x.x == 0.0.0.0/0 Apr 1 09:45:20 ssh pluto[1617]: "nokia"[2] x.x.x.x #9: IPsec SA established {ESP=>0x32613864 <0x34db680f}