"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Openswan - iPhone Roadwarrior

bsox 17.06.2011 - 11:14 2333 10
Posts

bsox

Schwarze Socke
Avatar
Registered: Jun 2009
Location: Dschibuti
Posts: 1066
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

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
Ich hab grade nicht die Muse das alles durchzulesen, aber: /proc/sys/net/ipv4/ip_forward hast du auf 1, ja?

bsox

Schwarze Socke
Avatar
Registered: Jun 2009
Location: Dschibuti
Posts: 1066
yep

fizz:/# cat /proc/sys/net/ipv4/ip_forward
1

bsox

Schwarze Socke
Avatar
Registered: Jun 2009
Location: Dschibuti
Posts: 1066
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
Avatar
Registered: Nov 2001
Location: Switzerland
Posts: 4226
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!
Avatar
Registered: Aug 2006
Location: südstadt
Posts: 3746
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
Avatar
Registered: Jun 2009
Location: Dschibuti
Posts: 1066
Zitat von othan
imho eigenes Subnet mit sauberem routing oder NAT
check. dann dann passt das ja mal wie ich's konfiguriert habe.

Zitat
/EDIT: das iPhone bekommt eh ne route ins LAN?
Ich wüßte nicht wo/wie ich das konfiguriere. Aber ja, das ist ein Ziel.

Zitat
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
Avatar
Registered: Jun 2009
Location: Dschibuti
Posts: 1066
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
Avatar
Registered: Nov 2001
Location: Switzerland
Posts: 4226
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
Avatar
Registered: Jun 2009
Location: Dschibuti
Posts: 1066
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

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12070
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.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz