{"id":377,"date":"2009-07-13T22:37:36","date_gmt":"2009-07-13T20:37:36","guid":{"rendered":"http:\/\/www.admindu.de\/wordpress\/?p=377"},"modified":"2011-07-03T14:29:46","modified_gmt":"2011-07-03T12:29:46","slug":"linux-vpn-gateway-fur-iphone-und-ipod","status":"publish","type":"post","link":"https:\/\/www.admindu.de\/wordpress\/?p=377","title":{"rendered":"Linux VPN-Gateway f\u00fcr iOS"},"content":{"rendered":"<p>Nachdem ich schon eine Weile dar\u00fcber nachgedacht habe die VPN-Funktion meines IPod Touch mal zu testen bin ich nun endlich dazu gekommen ein entsprechendes VPN-Gateway auf Basis von Debian Lenny zu basteln. Das Setup ist sicherlich noch nicht produktionsreif, aber es funktioniert stabil. Ich konnte es mit einem IPod Touch Firmware 2.x und 3.x sowie mit einem  IPhone und IPhone 3G, ebenfalls mit Firmware 2.x und 3.x, erfolgreich  testen. <em><strong>HINWEIS:<\/strong> Es kommen hier keine Filter zum Einsatz. Der Betrieb des GW, wie hier beschrieben, ist <strong>nicht sicher<\/strong>.\u00a0 Siehe auch den Hinweis von Michael B\u00fcrkle am Ende des Posts. Ich habe die Filter-Thematik in diesem Artikel bewusst nicht behandelt, um nicht vom 100ten ins 1000ste zu kommen, aber bisher nicht konkret darauf hingewiesen. <\/em><\/p>\n<p><!--more--><\/p>\n<p><strong>System vorbereiten<\/strong><\/p>\n<p>Als Basis verwende ich, wie f\u00fcr alle meine Setups, ein <a href=\"http:\/\/www.debian.org\/\">Debian<\/a>. In diesem Fall in der aktuellen Version Lenny. Ich habe mich f\u00fcr die <a href=\"http:\/\/de.wikipedia.org\/wiki\/Layer_2_Tunneling_Protocol\">l2tp<\/a>-(over-ipsec)-Version des VPNs entschieden. PPTP ist nicht mehr zeitgem\u00e4\u00df und das native IPSec VPN der Apple-Ger\u00e4te ist nach meinem Gef\u00fchl eher f\u00fcr einen sicheren Zugang zur Infrastruktur (z.B. Campus-WLAN) denn f\u00fcr einen Remote-VPN-Zugang gedacht. So ist z.B. die Verwendung von XAUTH zur Authentifizierung zwingend. Es ist mir nicht gelungen unter Verwendung des reinen IPSec-Modus eine stabile und brauchbare Verbindung aufzubauen. Daher meine Entscheidung f\u00fcr l2tp. Folgende Pakete musste ich nach einer Installation des Standard-Systems nachinstallieren.<\/p>\n<p class=\"postmetadata. alt\">aptitude install openswan xl2tpd<\/p>\n<p><a href=\"http:\/\/www.openswan.org\/\">Openswan<\/a> ist f\u00fcr den IPSec-Teil der Verbindung notwendig w\u00e4hrend der <a href=\"http:\/\/www.xelerance.com\/software\/xl2tpd\/\">xl2tpd<\/a> den l2tp-D\u00e4mon stellt. Das PPP-Paket ist auch noch notwendig wurde aber bei meiner Installation bereits von obigem Kommando als Abh\u00e4ngigkeit angezogen bzw. war schon vorher bei der Standardsystem-Installation installiert.<\/p>\n<p><strong>Konfiguration IPSec<\/strong><\/p>\n<p>Zuerst wenden wir uns der Konfiguration des ipsec zu. Die Authentisierung des IPSec erfolgt \u00fcber ein &#8220;Shared Secret&#8221;. Dieses ist f\u00fcr alle Ger\u00e4te, die das VPN verwenden gleich. Es dient zum Aufbau des IPSec-Tunnels durch welchen dann sp\u00e4ter die l2tp-Verbindung getunnelt wird. Da der Remote-Peer hier mit der Adresse 0.0.0.0 (any) konfiguriert wird &#8211; da die Gegenstelle ja wegen dynamischer Adressvergabe \u00fcber UMTS oder DLS nicht bekannt ist &#8211; kann keine weitere Verbindung mir einer &#8220;Shared Secret&#8221;-basiterten Authentisierung konfiguriert werden. Zertifikatsbasierte Verbindungen sind davon nicht betroffen und k\u00f6nnen auf dem selben Gateway parallel betrieben werden. Es folgen meine Connection-Beschreibung f\u00fcr die Datei \/etc\/ipsec.conf. Wenn es eine frische IPSec-Installation ist, dann kann die Verbindung direkt unterhalb des Kommentars <em>&#8220;# Add connections here&#8221;<\/em> in der ipsec.conf eingetragen werden. Weitere Parameter f\u00fcr die Datei ipsec.conf k\u00f6nnen der Man-Page entnommen werden. Diese kann auf dem System mit <em>&#8220;man ipsec.conf&#8221;<\/em> aufgerufen werden. Oder sie findet sich <a href=\"http:\/\/linux.die.net\/man\/5\/ipsec.conf\">hier<\/a>.<\/p>\n<p class=\"postmetadata. alt\">conn L2TP-PSK<br \/>\nrekey=no<br \/>\nauthby=secret<br \/>\npfs=no<br \/>\nkeyingtries=0<br \/>\nleft=%defaultroute<br \/>\nleftprotoport=17\/1701<br \/>\nright=%any<br \/>\nrightprotoport=17\/%any<br \/>\nrightsubnetwithin=0.0.0.0\/0<br \/>\nauto=add<\/p>\n<p>Anschliessend muss noch in der Datei \/etc\/ipsec.secrets folgende Eintrag gesetzt werden. Dabei muss der Platzhalter <em>&#8220;gateway.external.ip&#8221;<\/em> durch die externe IP des VPN-Gateways ersetzt werden.<\/p>\n<p class=\"postmetadata. alt\">gateway.external.ip %any: PSK &#8220;clients&#8221;<\/p>\n<p>Nach einem Neustart des IPSec Subsystems ist damit die Konfiguration des IPSec-Teils abgeschlossen. Also wenden wir uns dem l2tp-Part des Setups zu.<\/p>\n<p><strong>Konfiguration L2TP<\/strong><\/p>\n<p>Die Konfiguration des l2tp-D\u00e4mons findet in der Datei <em>&#8220;\/etc\/xl2tpd\/xl2tpd.conf&#8221;<\/em> statt. Es folgt meine Version dieser Datei. In der Sektion <em>&#8220;global&#8221;<\/em> werde allgemeine Parameter beschrieben. Hier muss wiederrum der Platzhalter <em>&#8220;gateway.external.ip&#8221;<\/em> durch die externe IP des VPN-Gateways ersetzt werden. Mit dem Port-Parameter kann der Listen-Port definiert werden. Da auf dem IPhone keine abweichende Konfiguration des Ports m\u00f6glich ist muss hier der Defaul f\u00fcr l2tp beibehalten werden. Weitere Parameter k\u00f6nnen sind in der Man-Page des xl2tpd beschrieben. Diese kann auf dem System mit <em>&#8220;man xl2tpd.conf&#8221;<\/em> aurgerufen werden. Oder sie findet sich <a href=\"http:\/\/linux.die.net\/man\/5\/xl2tpd.conf\">hier<\/a>.<\/p>\n<p class=\"postmetadata. alt\">[global]<br \/>\nlisten-addr = gateway.external.ip<br \/>\nport = 1701<\/p>\n<p>In der folgenden Sektion wird die eigentliche Verbindung beschrieben. Nat\u00fcrlich k\u00f6nnen die Parameter <em>&#8220;ip range&#8221;<\/em> und <em>&#8220;local ip&#8221;<\/em> angepasst werden. Wichtig ist hier, dass der Parameter <em>&#8220;local ip&#8221;<\/em> aus dem selben Netz-Segment ist, wie die IP-Range. Der Parameter <em>&#8220;local ip&#8221;<\/em> beschreibt die Adresse die das PPP-Interface in Richtung Clients auf dem VPN-Gateway haben wird. Der Parameter hat nichts mit der externen IP des Gateways zu tun, die wir weiter oben bereits gesetzt haben. Der Parameter <em>&#8220;IP-Range&#8221;<\/em> beschreib den Adress-Bereich aus dem den Clients IP-Adressen zugewiesen werden. Es ist auch m\u00f6glich bestimmten Usern feste IP-Adressen zuzuweisen, dazu sp\u00e4ter mehr. Hier die von mir im Test verwendete Konfiguration:<\/p>\n<p class=\"postmetadata. alt\">[lns default]<br \/>\nip range = 10.10.11.10-10.10.11.100<br \/>\nlocal ip = 10.10.11.253<br \/>\nrequire chap = yes<br \/>\nrefuse pap = yes<br \/>\nrequire authentication = yes<br \/>\nname = LinuxVPNserver<br \/>\nppp debug = yes<br \/>\npppoptfile = \/etc\/ppp\/options.l2tpd<br \/>\nlength bit = yes<\/p>\n<p><strong>Routing Exkursion<\/strong><\/p>\n<p>An dieser Stelle m\u00f6chte ich noch auf eine Problematik eingehen, die im Rahmen der VPN-Nutzung bei den meisten Administratoren entstehen wird. Im Grunde ist das l2tp-Konzept darauf ausgelegt Adressen aus dem selben Adress-Bereich, der auch im internen LAN verwendet wird, zu tunneln. Dazu kommen dann z.B. Techniken wie <a href=\"http:\/\/de.wikipedia.org\/wiki\/Address_Resolution_Protocol\">Proxy-Arp<\/a> zum Einsatz.  In g\u00f6sseren Installation ist ein solches Konzept unpraktisch und es w\u00e4re w\u00fcnschenswert die Clients bzw. das f\u00fcr die Clients gedachte Subnetz stattdessen \u00fcber Routing einzubinden.  Das ist nat\u00fcrlich auch m\u00f6glich aber es gibt dabei einiges zu beachten. Da auf dem IPhone\/IPod ohne weiteres keine Routen f\u00fcr die l2tp-Verbindung definiert werden k\u00f6nnen gibt es nur zwei M\u00f6glichkeiten ein solches Setup zu realisieren. Zum einen kann auf dem IPod\/IPhone bei der Einrichtung des VPN der Schalter <em>&#8220;F\u00fcr alle Daten&#8221;<\/em> zu aktivieren. Dann setzt der Client eine Default-Route durch das VPN wenn dieses aktiv ist. D.h. es werden alle Daten zu VPN-Gateway gesendet. Das hat allerdings den Nebeneffekt, dass bei aktivem VPN auch alle Anfragen zu Webseiten oder z.B. dem I-Tunes Store \u00fcber das VPN zum Firmennetz geleitet werden. Auch ist es dann notwendig dem Client einen internen DNS-Server mitzugeben, damit noch eine erfolgreichen Namesaufl\u00f6sung erfolgen kann. Dies ist im Rahmen des PPP-Verbindungsaufbau m\u00f6glich. Mehr dazu sp\u00e4ter. Generell ist es mit entsprechender Freischaltung in der ggf. existierenden Firewall und einem richtig konfigurierten, internen DNS ohne Probleme m\u00f6glich mit dem Client auch \u00fcber die VPN-Verbindung zu surfen oder bei I-Tunes oder im App-Store einzukaufen. Allerdings leidet die Geschwindigkeit der Verbindung etwas darunter. Der Vorteil ist, dass alle Zugriff, auch auf alle privaten Netze nach <a href=\"http:\/\/de.wikipedia.org\/wiki\/Private_IP-Adresse\">RFC1918<\/a>, beim VPN-Gateway ankommen und dort entsprechend geroutet bzw. gefilter oder \u00fcberwacht werden k\u00f6nnen.<\/p>\n<p>Ist der Schalter <em>&#8220;F\u00fcr alle Daten&#8221;<\/em> nicht gesetzt sendet das IPhone nur manche Anfragen in den VPN-Tunnel. So gehen z.B. alle Anfragen an \u00f6ffentliche IP-Adressen am VPN vorbei direkt \u00fcber die entsprechende Anbindung. Leider werden dann auch nicht alle Anfragen an RFC1918 Netze, sonder nur eine Submenge, \u00fcber das VPN geroutet. Soweit ich es bisher testen konnte wird jeweils der komplette RFC1918 Netzblock aus dem die Adressen im Parameter <em>&#8220;ip range&#8221;<\/em> stammen durch das Tunnel gesendet. Also bei meinem Beispiel der komplette 10.0.0.0\/8 Block, nicht aber z.B. der Bereich 192.168.0.0\/16 oder 172.16.0.0\/12. Kommen im Firmennetz also mehrere RFC1918 Netzbereiche zum Einsatz kann das ein Problem darstellen.<\/p>\n<p><strong>Konfiguration PPP<\/strong><\/p>\n<p>So, jetzt aber genug der Routing-Exkursion. Um ein lauff\u00e4higes Setup zu bekommen muss noch der <a href=\"http:\/\/de.wikipedia.org\/wiki\/Point-to-Point_Protocol\">PPP<\/a>-Bereich entsprechend konfiguriert werden. Im oben besprochenen Abschnitt der l2tp-Verbindung finden wir einen  Verweis auf die folgenden Konfigurationsdatei <em>&#8220;\/etc\/ppp\/options.l2tpd&#8221;<\/em>. Diese Datei enth\u00e4lt die notwendigen Parameter f\u00fcr den pppd der sich um den Aufbau der Verbindung, die Authentifizierung und die Zuweisung von IP-Adressen und z.B. DNS oder WINS Server k\u00fcmmert. Bei mir sieht der Inhalt der Datei wie folgt aus:<\/p>\n<p class=\"postmetadata. alt\">ipcp-accept-local<br \/>\nipcp-accept-remote<br \/>\nnoccp<br \/>\nms-dns  ip.interner.dns<br \/>\nauth<br \/>\ncrtscts<br \/>\nidle 1800<br \/>\nmtu 1410<br \/>\nmru 1410<br \/>\nnodefaultroute<br \/>\ndebug<br \/>\nlock<br \/>\nconnect-delay 5000<\/p>\n<p>Der pppd bietet eine F\u00fclle an Optionen zur Konfiguration. Daher m\u00f6chte ich nur auf die wichtigstens kurz eingehen. Weitere Optionen sind in der Man-Page des pppd beschriebe. Diese kann auf dem System mit <em>&#8220;man pppd&#8221;<\/em> aufgerufen werden. Oder man findet sie <a href=\"http:\/\/linux.die.net\/man\/8\/pppd\">hier<\/a>. Ich m\u00f6chte auch noch sagen, dass ich wahrlich kein PPP-Spezialist bin und diese Settings auch aus dem Link im Anhang \u00fcbernommen habe. Mit diesen Einstellungen war in meinen Tests ein stabiler Betrieb m\u00f6glich. Ob die immer das Gelbe vom Ei sind kann ich allerdings nicht garantieren.<\/p>\n<p>Wichtig waren bei mir die Einstellungen <em>&#8220;mtu&#8221;<\/em> und <em>&#8220;mru&#8221;<\/em>. Wenn diese nicht bzw. auf einen zu hohen Wert gesetzt sind, dann hatte ich \u00fcber UMTS Probleme bei der Verbindung. Das \u00e4ussert sich dahingehend, dass beim Abruf von z.B. Bildern in Webseiten die Verbindung einfach h\u00e4ngen bleibt. Mit den Werten <em>&#8220;1410&#8221;<\/em> habe ich sowohl \u00fcber UMTS als auch \u00fcber WLAN keine Probleme mehr gehabt. Der &#8220;idle&#8221;-Parameter beschreibt, nach welcher Zeit eine VPN-Verbindung \u00fcber die keine Daten \u00fcbertragen werden getrennt wird. Ich habe mich hier f\u00fcr 1800 Sekunden entschieden. Ohne diese Option hatte ich manchmal Probleme das VPN von einem IPod Touch wieder aufzubauen, nachdem dieser in den Standby-Modus gefallen war. Dieser Parameter kann sicherlich nach eigenen Anforderungen angepasst werden. Spannend ist dann noch der Parameter <em>&#8220;ms-dns&#8221;<\/em>. Damit kann dem Client ein DNS-Server zugewiesen werden, der w\u00e4hrend der aktiven VPN-Verbindung gilt. Die Option kann auch zwei mal gesetzt werden um einen Prim\u00e4ren und eine Sekund\u00e4ren DNS-Server zu definieren. Bitte hierbei beachten, dass der DNS-Server auch externe Adressen aufl\u00f6sen muss, da sonst w\u00e4hrend einer aktiven VPN-Verbindung kein Zugriff auf normale Webseiten oder I-Tunes bzw. App-Store m\u00f6glich ist. Siehe dazu auch den Abschnitt &#8220;Routing Exkursion&#8221; weiter oben. Der Vollst\u00e4ndigkeit halber sei noch erw\u00e4hnt, dass es auch den Parameter <em>&#8220;ms-wins&#8221;<\/em> gibt, mit dem Wins-Server definiert werden k\u00f6nnen. Bei IPhone und IPod scheint das keinen Effekt zu haben. Aber wer auf Windows als Client anbinden m\u00f6chte kann die Option ggf. gut gebrauchen. Der Parameter <em>&#8220;auth&#8221;<\/em> legt fest, dass ein User sich zum Aufbau einer L2TP-Verbindung authentifizieren muss. Weiter oben haben wir in der xl2tpd.conf durch die Parameter <em>&#8220;require chap = yes&#8221;<\/em> und <em>&#8220;refuse pap = yes&#8221;<\/em> bereits definiert, dass eine Authentifizierung via <a href=\"http:\/\/de.wikipedia.org\/wiki\/Challenge_Handshake_Authentication_Protocol\">CHAP<\/a> stattfinden muss. Somit kommen wir auch zum letzten Schritt der Konfiguration indem wir die Username und Passw\u00f6rter der Accounts sowie die zuzuweisende IP-Adresse festlegen.<\/p>\n<p>Dies geschieht in der Datei &#8220;\/etc\/ppp\/chap-secrets&#8221;. Hier ein Beispiel mit einigen Accounts, dass ich in meinem Test verwendet habe:<\/p>\n<p class=\"postmetadata. alt\"># Secrets for authentication using CHAP<br \/>\n# client        server  secret                  IP addresses<br \/>\nkurt                 *         &#8220;test&#8221;           10.10.11.11<br \/>\n*                   kurt       &#8220;test&#8221;           10.10.11.11<br \/>\notto                 *         &#8220;knurps&#8221;      10.10.11.12<br \/>\n*                   otto       &#8220;knurps&#8221;      10.10.11.12<br \/>\nhans               *          &#8220;foobar&#8221;      10.10.11.13<br \/>\n*                  hans       &#8220;foobar&#8221;      10.10.11.13<\/p>\n<p>Ich denke Inhalt und Syntax der Datei ist selbsterkl\u00e4rend. Ich habe noch nicht getestet wie es sich auswirkt, wenn dort z.B. auch ein DSL-Account (vie PPPoE) oder andere PPP-Accounts konfiguriert sind. Solange dort nur die Accounts f\u00fcr das VPN eingetragen sind klappt es jedenfalls ohne Probleme. Der Client bekommt die in der letzten Spalte zugewiesene IP-Adresse und kann auch anhand dieser z.B. in einer Firewall gefilter werden.<\/p>\n<p><strong>Konfiguration auf IPhone oder IPod-Touch<\/strong><\/p>\n<p>Auf dem Client wird das VPN dann wie folgt konfiguriert.<\/p>\n<ul>\n<li>Im Hauptmen\u00fc <em>&#8220;Einstellungen&#8221;<\/em> w\u00e4hlen.<\/li>\n<li>Unter  <em>&#8220;Einstellungen&#8221;<\/em> &#8211;&gt; <em>&#8220;Allgemein&#8221;<\/em> w\u00e4hlen.<\/li>\n<li>Unter <em>&#8220;Allgemein&#8221;<\/em> &#8211;&gt; <em>&#8220;Netzwerk&#8221;<\/em> w\u00e4hlen.<\/li>\n<li>Unter <em>&#8220;Netzwerk&#8221;<\/em> &#8211;&gt; <em>&#8220;VPN&#8221;<\/em> w\u00e4hlen<\/li>\n<li>Dann auf <em>&#8220;VPN hinzuf\u00fcgen&#8221;<\/em> klicken<\/li>\n<\/ul>\n<p>Dann \u00f6ffnet sich der folgende Dialog indem einige Parameter zum VPN eingetragen werden m\u00fcssen:<\/p>\n<figure id=\"attachment_435\" aria-describedby=\"caption-attachment-435\" style=\"width: 320px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-435\" title=\"vpn-dialog\" src=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2009\/07\/vpn-dialog.jpg\" alt=\"IPod Touch VPN Dialog\" width=\"320\" height=\"480\" srcset=\"https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2009\/07\/vpn-dialog.jpg 320w, https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2009\/07\/vpn-dialog-200x300.jpg 200w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><figcaption id=\"caption-attachment-435\" class=\"wp-caption-text\">IPod Touch VPN Dialog<\/figcaption><\/figure>\n<p>Die <em>&#8220;Beschreibung&#8221;<\/em> kann frei gew\u00e4hlt werden und sollte das VPN sprechend beschreiben. Bei <em>&#8220;Server&#8221;<\/em> wird entweder die numerische IP oder der DNS-Name des VPN-Gateway eingetragen. In unserem Beispiel ist das  <em>&#8220;gateway.external.ip&#8221;<\/em> wie bereits oben in den Abschnitten &#8220;Konfiguration IPSec&#8221; und &#8220;Konfiguration L2TP&#8221; besprochen. In das Feld <em>&#8220;Account&#8221;<\/em> wird der Username aus der Datei <em>&#8220;chap-secrets&#8221; <\/em>(siehe PPP-Abschnitt) eingetragen. Der Schalter <em>&#8220;RSA-SecureID&#8221;<\/em> hat in meinem Setup keine Funktion und muss ausgeschaltet sein. In das Feld &#8220;Kennwort&#8221; wird das zum Username korrespondierende Kennwort aus der Datei  <em>&#8220;chap-secrets&#8221; <\/em> eingetragen. Es ist auch m\u00f6glich das Kennwort bei jeder Verbindung direkt einzugeben und nicht auf dem Ger\u00e4t zu hinterlegen, was der Sicherheit ohne Frage zutr\u00e4glich ist. Wenn das gew\u00fcnscht ist kann das Feld mit dem Default-Wert <em>&#8220;Jedes mal Fragen&#8221;<\/em> belassen werden. In das Feld <em>&#8220;Shared Secret&#8221;<\/em> muss das gemeinsame Kennwort f\u00fcr die IPSec Verbindung aus der Datei <em>&#8220;ipsec.secrets&#8221;<\/em> (siehe Abschnitt Konfiguration IPSec&#8221;) eingetragen werden. Dieses Kennwort ist, wie oben schon besprochen, f\u00fcr alle Clients gleich. Ob der Schalter <em>&#8220;F\u00fcr alle Daten&#8221;<\/em> bei in Ihrem Setup gesetzt ist oder nicht m\u00fcssen Sie selber entscheiden. Informationen zu den Auswirkungen der einen  oder anderen M\u00f6glichkeit finden Sie im Abschnitt &#8220;Routing Exkursion&#8221;.<\/p>\n<p>Wenn jetzt alle Paramter entsprechende gesetzt, das Gateway fertig konfiguriert und alle Dienste neu gestartet worden sind k\u00f6nnen wir den Aufbau des VPNs versuchen. Das geht entweder direkt unter <em>&#8220;Einstellungen&#8221; -&gt; &#8220;VPN&#8221;<\/em> oder aber im VPN-Men\u00fc wo wir gerade auch die Verbindung konfiguriert haben. Wenn alles gut geht, dann sieht es wie folgt aus:<\/p>\n<figure id=\"attachment_442\" aria-describedby=\"caption-attachment-442\" style=\"width: 320px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-442\" title=\"vpn-verbindung\" src=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2009\/07\/vpn-verbindung.jpg\" alt=\"Etablierte VPN-Verbindung IPod Touch\" width=\"320\" height=\"480\" srcset=\"https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2009\/07\/vpn-verbindung.jpg 320w, https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2009\/07\/vpn-verbindung-200x300.jpg 200w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><figcaption id=\"caption-attachment-442\" class=\"wp-caption-text\">Etablierte VPN-Verbindung IPod Touch<\/figcaption><\/figure>\n<p>Durch ankicken der <em>&#8220;Status-Zeile&#8221;<\/em> k\u00f6nnen noch weitere Details abgerufen werden:<\/p>\n<figure id=\"attachment_443\" aria-describedby=\"caption-attachment-443\" style=\"width: 320px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-443\" title=\"vpn-details\" src=\"http:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2009\/07\/vpn-details.jpg\" alt=\"VPN Details IPod Touch\" width=\"320\" height=\"480\" srcset=\"https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2009\/07\/vpn-details.jpg 320w, https:\/\/www.admindu.de\/wordpress\/wp-content\/uploads\/2009\/07\/vpn-details-200x300.jpg 200w\" sizes=\"auto, (max-width: 320px) 100vw, 320px\" \/><figcaption id=\"caption-attachment-443\" class=\"wp-caption-text\">VPN Details IPod Touch<\/figcaption><\/figure>\n<p><strong>Troubleshooting<\/strong><\/p>\n<p>Fehlt noch, werde ich die Tage nachreichen<\/p>\n<p><strong>Weitere Infos, Links und Todos<\/strong><\/p>\n<p>Einen Teil der Informationen und Konfigurationen in diesem Artikel habe ich <a href=\"http:\/\/www.jacco2.dds.nl\/networking\/freeswan-l2tp.html\">hier<\/a> gefunden. Die Seite geht auch wesentlich tiefer ins Detail und deckt eine gr\u00f6\u00dfere Menge an Clients ab. So z.B. auch Windows-Client, Mac OSX (auf Desktop oder Laptop) und diverse Software VPN-Clients. Es ist in jedem Fall ratsam einen Blick auf die Seite zu werfen. Dennoch musst ich Anpassungen im IPSec-Bereich vornehmen um mit IPod und IPhone als Client zu einer stabilen Verbindung zu kommen.<\/p>\n<p>Wie im Eingang des Artikels schon erw\u00e4hnt funktioniert das Setup so wie hier beschrieben stabil. Allerdings gibt es schon noch ein paar Dinge die ich selber f\u00fcr Verbesserungsw\u00fcrdig halte. So muss der l2tp-D\u00e4mon im Moment auf dem externen Interface des VPN-Gateway f\u00fcr any freigeschaltet sein. Es w\u00e4re nat\u00fcrlich sch\u00f6n das nur zu erlauben, wenn der Client bereits erfolgreich eine IPSec-Verbindung aufgebaut hat. Openswan bietet auch die notwendigen Mechanismen das im Zusammenspiel mit iptables zu realisieren. Ich bin nur noch nicht dazu gekommen das entsprechend umzusetzen. Auch sollten die Optionen der ipsec.conf, xl2tp und pppd-Konfig nochmal auf Sinnhaftigkeit und Sicherheit \u00fcberpr\u00fcft werden bevor man mit einem solchen Setup in Produktion geht.<\/p>\n<p><strong>Folgender Beitrag von Michael B\u00fcrkle, vielen Dank daf\u00fcr:<br \/>\n<\/strong><\/p>\n<p>Die letzten drei Tage habe ich mich damit besch\u00e4ftigt ein entsprechendes  Setup bei mir vorzunehmen. Dabei bin ich mit der Beschreibung auf  deiner Seite gestartet und habe mich dann durch die Anleitung auf <a href=\"http:\/\/www.jacco2.dds.nl\/networking\/freeswan-l2tp.html\" target=\"_blank\">http:\/\/www.jacco2.dds.nl\/networking\/freeswan-l2tp.html<\/a>, die von dir verlinkt wird, durchgearbeitet.<\/p>\n<p>Anschliessend hat zwar der IPSEC Verbindungsaufbau funktioniert, aber der Verbindungsaufbau zum xl2tpd ist jedesmal gescheitert.<\/p>\n<p>Den entscheidenden Hinweis habe ich auf dieser Seite gefunden:<\/p>\n<p><a href=\"http:\/\/rootmanager.com\/ubuntu-ipsec-l2tp-windows-domain-auth\/setting-up-openswan-xl2tpd-with-native-windows-clients.html\" target=\"_blank\">http:\/\/rootmanager.com\/ubuntu-ipsec-l2tp-windows-domain-auth\/setting-up-openswan-xl2tpd-with-native-windows-clients.html<\/a><\/p>\n<p>In den iptables Regeln musste noch folgende Regel eingef\u00fcgt werden:<br \/>\n-A INPUT -m policy &#8211;dir in &#8211;pol ipsec -p udp &#8211;dport 1701 -j ACCEPT<\/p>\n<p>Dadurch werden Pakete am xl2tpd akzeptiert die in ipsec Paketen ankommen.<\/p>\n<p>Warum ich dir das schreibe:<br \/>\nDas Setup, welches von dir beschrieben wird, erlaubt ankommende Pakete  an Port 1701 auf dem externen Interface. Davon wird stark abgeraten,  denn die Pakete sind nicht verschl\u00fcsselt wenn sie tats\u00e4chlich \u00fcber  dieses Interface eintreffen. Dieser Port sollte nach aussen hin also  geblockt sein.<\/p>\n<p>Vielleicht findest du die Zeit dein ansonsten sch\u00f6n gemachtes Tutorial  zu \u00fcberarbeiten und damit noch besser f\u00fcr zuk\u00fcnftige Hilfe suchende zu  machen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nachdem ich schon eine Weile dar\u00fcber nachgedacht habe die VPN-Funktion meines IPod Touch mal zu testen bin ich nun endlich dazu gekommen ein entsprechendes VPN-Gateway auf Basis von Debian Lenny zu basteln. Das Setup ist sicherlich noch nicht produktionsreif, aber es funktioniert stabil. Ich konnte es mit einem IPod Touch Firmware 2.x und 3.x sowie &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.admindu.de\/wordpress\/?p=377\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Linux VPN-Gateway f\u00fcr iOS&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,3],"tags":[15,41,42,43,4,40],"class_list":["post-377","post","type-post","status-publish","format-standard","hentry","category-cool_setups","category-linux_stuff","tag-debian","tag-iphone","tag-ipod","tag-l2tp","tag-linux","tag-vpn"],"_links":{"self":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=377"}],"version-history":[{"count":77,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/377\/revisions"}],"predecessor-version":[{"id":600,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/377\/revisions\/600"}],"wp:attachment":[{"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.admindu.de\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}