Openswan - iPhone Roadwarrior
bsox 17.06.2011 - 11:14 2333 10
bsox
Schwarze Socke
|
Liebe Leute, folgendes
Szenario versuche ich zu lösen:
(Dreambox --- Server/Router/Firewall) --- (Internet --- Iphone) .........................LAN....................................Internet........
Dreambox : 192.168.21.230 Server eth0 : 192.168.21.240 Server eth1 : 84.x.x.x (Chello IP) Server ppp0 : 192.168.22.241 (VPN IP) Iphone : T-Mobile (genattet, laut den logs hat das Phone selbst 10.2.68.182 und meldet sich beim Server als 212.95.x.x) (Server hängt direkt am Chello Modem und spielt Firewall und Router. Distri ist Debian Squeeze.)
Problem: Ich kann einen Tunnel vom iPhone zum Server aufbauen und iPhone und Server sehen sich. Allerdings komme ich nicht in das interne LAN 192.168.21.x.
Hinweis: Der Eintrag "nat_traversal=yes" in /etc/ipsec.conf war wichtig damit das genattete iPhone die Verbindung aufnehmen konnte. Das hat mich etwas Zeit gekostet...
Folgende Tests habe ich durchgeführt: dreambox pingt Internet OK (Nat vom LAN ins Internet funktioniert) VPN iPhone erreicht Server eth0 Port 80 OK Server pingt VPN iPhone 192.168.22.92 OK dreambox pingt Server ppp0 192.168.22.241 OK dreambox pingt VPN iPhone 192.168.22.92 NOK VPN iPhone erreicht dreambox Port 80 NOK
Also hat's da was mit dem Routing. Oder eher etwas mit left/rightsubnet, usw. in der ipsec.conf. Hier noch ein Output von ifconfig und netstat -rn, ich suche weiter, aber im Moment raucht die Birne und ich musste meine Erkenntnisse mal niederschreiben damit ich später weiter machen kann. Ist einer von Euch vielleicht ein Openswan Guru und sieht den Fehler auf einen Blick?
Die Configs:
/etc/ipsec.conf ------------------------ version 2
config setup protostack=netkey 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.22.0/24
conn L2TP-PSK rekey=no authby=secret pfs=no keyingtries=0 left=%defaultroute leftprotoport=17/1701 # leftsubnet=192.168.21.0/24 right=%any rightprotoport=17/%any rightsubnetwithin=0.0.0.0/0 auto=add leftnexthop=%defaultroute rightnexthop=%defaultroute ------------------------
/etc/xl2tpd/xl2tpd.conf ------------------------ [global] ;ipsec saref = yes listen-addr = 84.x.x.x port = 1701
[lns default] ip range = 192.168.22.91-192.168.22.99 local ip = 192.168.22.241 require chap = yes refuse pap = yes require authentication = yes ppp debug = yes pppoptfile = /etc/ppp/options.l2tpd length bit = yes ------------------------
/etc/ppp/options.l2tpd ------------------------ ipcp-accept-local ipcp-accept-remote noccp ms-dns 8.8.8.8 auth crtscts idle 1800 mtu 1410 mru 1410 debug lock connect-delay 5000 ------------------------ (und dann noch die secrets Dateien, aber da vermute ich keinen Fehler, da das VPN ja prinzipiell aufgebaut wird.)
fizz:/var/log# ifconfig eth0 Link encap:Ethernet HWaddr --:--:--:--:--:-- inet addr:84.x.x.x Bcast:84.x.x.x Mask:255.255.255.0 inet6 addr: ----::---:----:----:----/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:90698087 errors:0 dropped:0 overruns:0 frame:0 TX packets:47011610 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:35590550161 (33.1 GiB) TX bytes:15177499840 (14.1 GiB) Interrupt:25 Base address:0xe000
eth1 Link encap:Ethernet HWaddr --:--:--:--:--:-- inet addr:192.168.21.240 Bcast:192.168.21.255 Mask:255.255.255.0 inet6 addr: ----::---:----:----:----/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:81894141 errors:2 dropped:0 overruns:0 frame:1 TX packets:50684895 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:27273121123 (25.4 GiB) TX bytes:59789964455 (55.6 GiB)
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:5255406 errors:0 dropped:0 overruns:0 frame:0 TX packets:5255406 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:9940256160 (9.2 GiB) TX bytes:9940256160 (9.2 GiB)
ppp0 Link encap:Point-to-Point Protocol inet addr:192.168.22.241 P-t-P:192.168.22.92 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1410 Metric:1 RX packets:12 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:1696 (1.6 KiB) TX bytes:254 (254.0 B)
fizz:/var/log# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.22.92 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 192.168.21.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 84.113.217.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 84.113.217.1 0.0.0.0 UG 0 0 0 eth0
|
COLOSSUS
AdministratorGNUltra
|
Ich hab grade nicht die Muse das alles durchzulesen, aber: /proc/sys/net/ipv4/ip_forward hast du auf 1, ja?
|
bsox
Schwarze Socke
|
yep
fizz:/# cat /proc/sys/net/ipv4/ip_forward 1
|
bsox
Schwarze Socke
|
Eine prinzipielle Frage: sollen die VPN Adressen ein eigenes Subnet sein, oder sollen die in dem Subnet des internen Interfaces sein? Sprich, VPN = 192.168.22.91-99 mit 192.168.22.241 beim Server gebunden auf ppp0 oder VPN = 192.168.21.1-10 mit 192.168.21.240 beim Server gebunden auf eth1?
|
othan
Layer 8 Problem
|
imho eigenes Subnet mit sauberem routing oder NAT
Alternativ (wobei ich ned weiss ob das openswan kann) eine Bridge zwischen LAN und VPN, dann sind beide im gleichen Subnet.
/EDIT: das iPhone bekommt eh ne route ins LAN und macht der Server auch ein NAT zwischen dem VPN-Netz und dem LAN?
|
nexus_VI
Overnumerousness!
|
Kannst du den iPhone routing table pasten, falls der auslesbar ist? Denke das ganze ist fast leichter mit einem Laptop am anderen Ende zu debuggen ... IPSec ist ein Krampf.
|
bsox
Schwarze Socke
|
imho eigenes Subnet mit sauberem routing oder NAT check. dann dann passt das ja mal wie ich's konfiguriert habe. /EDIT: das iPhone bekommt eh ne route ins LAN? Ich wüßte nicht wo/wie ich das konfiguriere. Aber ja, das ist ein Ziel. und macht der Server auch ein NAT zwischen dem VPN-Netz und dem LAN? Warum sollte NAT notwendig sein? Das LAN ist 192.168.21.0/24 und das VPN-Netz ist 192.168.22.x Wobei ich mir mit der Netmask bei diesem Netz nicht sicher bin. Am iPhone seh' ich nur die IP, am Server sieht's so aus: ppp0 Link encap:Point-to-Point Protocol inet addr:192.168.22.241 P-t-P:192.168.22.92 Mask:255.255.255.255
|
bsox
Schwarze Socke
|
Mir ist leider nicht bekannt wie ich die Routing table am iPhone auslesen kann. Jedenfalls nicht ohne Jailbreak. Am Server habe ich eine manuelle Route hinzugefügt, aber leider bringt das auch keinen Erfolg.
fizz:/# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 212.95.7.11 84.113.217.1 255.255.255.255 UGH 0 0 0 eth0 192.168.22.92 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 192.168.22.0 0.0.0.0 255.255.255.0 U 0 0 0 ppp0 192.168.21.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 84.113.217.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 84.113.217.1 0.0.0.0 UG 0 0 0 eth0
Ich bekomm' den Verdacht, dass Routing etwas anders funktioniert wenn ipsec im Spiel ist.
|
othan
Layer 8 Problem
|
ich vermute dein iphone hat keine route ins LAN, deswegen will es alle Verbindungen ausserhalb von 192.168.22.0/24 übers Internet und nicht über deinen Server erreichen.
Irgendwie musst Du noch eine Route in das LAN mit dem Server als Gateway pushen können.
|
bsox
Schwarze Socke
|
Hm, ich glaube nicht, dass es so funktioniert, othan.
Erstens erreiche ich am iPhone keine Internet Adressen wenn der VPN Tunnel aktiv ist, und zweitens kann ich die LAN Adresse 192.168.21.240 erreichen. => VPN iPhone erreicht Server eth0 Port 80 OK
|
COLOSSUS
AdministratorGNUltra
|
Jo, aber sonst wohl keinen Host eines allfaelligen Netzwerks. Es ist durchaus moeglich, dass dein iPhone eine korrekte Route fuer 192.168.21.240/32 hat, und du deshalb genau mit diesem einen Host via IP kommunizieren kann. Ohne die Routing-Tabelle einsehen zu koennen, ist das alles leider pure Spekulation.
|