IPSEC/L2TP Android VPN Verbindung auf Freebsd Server funktoniert nicht ganz ...

joachimt

New Member
Hallo zusammen,

ich habe ein Problem und möchte mich an dieses Forum wenden.

Gemäß der Anleitung http://wiki.stocksy.co.uk/wiki/L2TP_VPN_in_FreeBSD
habe ich versucht, mit einem Android Smartphone eine IPSEC/l2tp VPN Verbindung zu einem
Freebsd 10 Server mit IPSEC+mpd5 aufzubauen. Leider ist die Verbindung nicht zustande gekommen.

Das Android Handy loggt via adb logcat:
Code:
D/VpnSettings( 2456): received connectivity: zuhause-ipsec: connected? CONNECTING   err=0
I/SProxy_mtpd( 3060): Stop VPN daemon: mtpd
D/SProxy_mtpd( 3060): mtpd is stopped after 0 msec
D/SProxy_mtpd( 3060): stopping mtpd, success? true
I/SProxy_racoon( 3060): Stop VPN daemon: racoon
D/SProxy_racoon( 3060): racoon is stopped after 0 msec
D/SProxy_racoon( 3060): stopping racoon, success? true
D/dalvikvm( 2339): GC_CONCURRENT freed 267K, 51% free 2784K/5575K, external 824K/1336K, paused 3ms+15ms
D/VpnService( 3060):   Local IP: 10.60.171.191, if: rmnet0
D/VpnService( 3060):        VPN UP: down
I/SProxy_racoon( 3060): Start VPN daemon: racoon
D/SProxy_racoon( 3060): racoon is running after 0 msec
D/SProxy_racoon( 3060): service not yet listen()ing; try again
D/racoon  ( 3109): Waiting for control socket
D/dalvikvm( 2932): GC_CONCURRENT freed 351K, 50% free 3642K/7175K, external 0K/0K, paused 7ms+3ms
D/racoon  ( 3109): Received 3 arguments
I/racoon  ( 3109): ipsec-tools 0.7.3 (http://ipsec-tools.sf.net)
I/racoon  ( 3109): 10.60.171.191[500] used as isakmp port (fd=10)
I/racoon  ( 3109): 10.60.171.191[500] used for NAT-T
I/racoon  ( 3109): 10.60.171.191[4500] used as isakmp port (fd=11)
I/racoon  ( 3109): 10.60.171.191[4500] used for NAT-T
I/SProxy_racoon( 3060): got data from control socket: 3
D/Volley  ( 2932): [15] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] https://android.clients.google.com/vending/api/ApiRequest 0xe8d195d1 NORMAL 5 CheckForNotificationsRequestProto> [lifetime=3272], [size=32], [rc=200], [retryCount=0]
D/Volley  ( 2932): [1] Request.finish: 3302 ms: [ ] https://android.clients.google.com/vending/api/ApiRequest 0xe8d195d1 NORMAL 5 CheckForNotificationsRequestProto
I/SProxy_mtpd( 3060): Start VPN daemon: mtpd
D/SProxy_mtpd( 3060): mtpd is running after 0 msec
D/SProxy_mtpd( 3060): service not yet listen()ing; try again
D/mtpd    ( 3368): Waiting for control socket
D/mtpd    ( 3368): Received 19 arguments
I/mtpd    ( 3368): Using protocol l2tp
I/mtpd    ( 3368): Connecting to 89.244.120.209 port 1701
I/mtpd    ( 3368): Connection established (socket = 11)
D/mtpd    ( 3368): Sending SCCRQ (local_tunnel = 6951)
I/racoon  ( 3109): no in-bound policy found: 89.244.120.209/32[1701] 10.60.171.191/32[0] proto=udp dir=in
I/racoon  ( 3109): IPsec-SA request for 89.244.120.209 queued due to no phase1 found.
I/racoon  ( 3109): initiate new phase 1 negotiation: 10.60.171.191[500]<=>89.244.120.209[500]
I/racoon  ( 3109): begin Identity Protection mode.
I/SProxy_mtpd( 3060): got data from control socket: 19
I/racoon  ( 3109): received Vendor ID: RFC 3947
I/racoon  ( 3109): received broken Microsoft ID: FRAGMENTATION
I/racoon  ( 3109): Selected NAT-T version: RFC 3947
I/racoon  ( 3109): Hashing 89.244.120.209[500] with algo #2
I/racoon  ( 3109): Hashing 10.60.171.191[500] with algo #2
I/racoon  ( 3109): Adding remote and local NAT-D payloads.
I/racoon  ( 3109): Hashing 10.60.171.191[500] with algo #2
I/racoon  ( 3109): NAT-D payload #0 doesn't match
I/racoon  ( 3109): Hashing 89.244.120.209[500] with algo #2
I/racoon  ( 3109): NAT-D payload #1 doesn't match
I/racoon  ( 3109): NAT detected: ME PEER
I/racoon  ( 3109): KA list add: 10.60.171.191[4500]->89.244.120.209[4500]
I/keystore( 2124): uid: 1016 action: g -> 1 state: 1 -> 1 retry: 4
I/racoon  ( 3109): ISAKMP-SA established 10.60.171.191[4500]-89.244.120.209[4500] spi:8b9caa410f7c4118:cdd46778cefd2014
I/racoon  ( 3109): initiate new phase 2 negotiation: 10.60.171.191[4500]<=>89.244.120.209[4500]
I/racoon  ( 3109): NAT detected -> UDP encapsulation (ENC_MODE 2->4).
I/racoon  ( 3109): Adjusting my encmode UDP-Transport->Transport
I/racoon  ( 3109): Adjusting peer's encmode UDP-Transport(4)->Transport(2)
I/racoon  ( 3109): IPsec-SA established: ESP/Transport 89.244.120.209[0]->10.60.171.191[0] spi=12544634(0xbf6a7a)
I/racoon  ( 3109): IPsec-SA established: ESP/Transport 10.60.171.191[4500]->89.244.120.209[4500] spi=164290770(0x9cae0d2)
D/mtpd    ( 3368): Timeout -> Sending SCCRQ
D/mtpd    ( 3368): Timeout -> Sending SCCRQ
D/mtpd    ( 3368): Timeout -> Sending SCCRQ
D/mtpd    ( 3368): Timeout -> Sending SCCRQ
D/mtpd    ( 3368): Timeout -> Sending SCCRQ
D/mtpd    ( 3368): Timeout -> Sending SCCRQ
D/mtpd    ( 3368): Timeout -> Sending SCCRQ
D/mtpd    ( 3368): Timeout -> Sending SCCRQ
Es sieht so aus, als ob das Handy einen SCC Request ? sendet, den der Server nicht beantwortet.
Der IPSEC Tunnel scheint aufgebaut. Das meldet der Android racoon mit pid 3109.
Auch der Server vermeldet positives:
Code:
2014-05-15 17:49:01: INFO: respond new phase 1 negotiation: 192.168.1.132[500]<=>2.206.3.191[2354]
2014-05-15 17:49:01: INFO: begin Identity Protection mode.
2014-05-15 17:49:01: INFO: received Vendor ID: RFC 3947
2014-05-15 17:49:01: INFO: received Vendor ID: draft-ietf-ipsec-nat-t-ike-02
2014-05-15 17:49:01: INFO: received Vendor ID: draft-ietf-ipsec-nat-t-ike-02

2014-05-15 17:49:01: INFO: received Vendor ID: draft-ietf-ipsec-nat-t-ike-00
2014-05-15 17:49:01: INFO: received broken Microsoft ID: FRAGMENTATION
2014-05-15 17:49:01: [2.206.3.191] INFO: Selected NAT-T version: RFC 3947
2014-05-15 17:49:01: [192.168.1.132] INFO: Hashing 192.168.1.132[500] with algo #2
2014-05-15 17:49:01: INFO: NAT-D payload #0 doesn't match
2014-05-15 17:49:01: [2.206.3.191] INFO: Hashing 2.206.3.191[2354] with algo #2
2014-05-15 17:49:01: INFO: NAT-D payload #1 doesn't match
2014-05-15 17:49:01: INFO: NAT detected: ME PEER
2014-05-15 17:49:01: [2.206.3.191] INFO: Hashing 2.206.3.191[2354] with algo #2
2014-05-15 17:49:01: [192.168.1.132] INFO: Hashing 192.168.1.132[500] with algo #2
2014-05-15 17:49:01: INFO: Adding remote and local NAT-D payloads.
2014-05-15 17:49:01: INFO: NAT-T: ports changed to: 2.206.3.191[2661]<->192.168.1.132[4500]
2014-05-15 17:49:01: INFO: KA list add: 192.168.1.132[4500]->2.206.3.191[2661]
2014-05-15 17:49:01: INFO: ISAKMP-SA established 192.168.1.132[4500]-2.206.3.191[2661] spi:8b9caa410f7c4118:cdd46778cefd2014
2014-05-15 17:49:01: [2.206.3.191] INFO: received INITIAL-CONTACT
2014-05-15 17:49:02: INFO: respond new phase 2 negotiation: 192.168.1.132[4500]<=>2.206.3.191[2661]
2014-05-15 17:49:02: INFO: Adjusting my encmode UDP-Transport->Transport
2014-05-15 17:49:02: INFO: Adjusting peer's encmode UDP-Transport(4)->Transport(2)
2014-05-15 17:49:02: INFO: IPsec-SA established: ESP/Transport 192.168.1.132[500]->2.206.3.191[500] spi=164290770(0x9cae0d2)
2014-05-15 17:49:02: INFO: IPsec-SA established: ESP/Transport 192.168.1.132[500]->2.206.3.191[500] spi=12544634(0xbf6a7a)

Allerdings mit anderen genatteten IP Adressen:
Aus Sicht des Handys ist der Tunnel mit der meiner Dyndns Adresse aufgebaut. Aus Sicht des Servers mit der
IP des Providers, obwohl beide Geräte IP private Adressen besitzen, die genattet werden. Da der Tunnel
established meldet, ist das glaube ich OK.

Der Andoid Prozeß 3368 mtp sendet ganz am Anfang der Verbindung ein SCCRQ und bekommt, so interpretiere ich das, keine Antwort.
Mir ist nicht klar, welchen Dienst er auf dem Server anspricht. Gehört der noch zu IPSEC oder
versucht er den L2TP Server auf dem Freebsd Rechner zu kontaktieren ?

Das LOG des mpd5 Servers bleibt leer. Dieser scheint nichts zu tun.

Hier meine Config Dateien:

racoon.conf
Code:
root@einwahl:/var/log # cat /usr/local/etc/racoon/racoon.conf
path pre_shared_key "/usr/local/etc/racoon/psk.txt";

listen
{
    # REPLACE 192.168.1.132 with the IP address racoon will listen on (if NAT translated, this is the INSIDE IP)
        isakmp           192.168.1.132 [500];
        isakmp_natt      192.168.1.132 [4500];
        strict_address;
}

remote anonymous
{
        exchange_mode    main;
        passive          on;
        proposal_check   obey;
        support_proxy    on;
        nat_traversal    on;
        ike_frag         on;
        dpd_delay        20;


        proposal
        {
                encryption_algorithm  aes;
                hash_algorithm        sha1;
                authentication_method pre_shared_key;
                dh_group              modp1024;
        }
}

sainfo anonymous
{
        encryption_algorithm     3des,aes;
        authentication_algorithm hmac_sha1;
        compression_algorithm    deflate;
        pfs_group                modp1024;
}

Meine setkey.conf
Code:
root@einwahl:/usr/local/etc/racoon # cat setkey.conf
flush;
spdflush;
spdadd 0.0.0.0/0[0] 0.0.0.0/0[1701] udp -P in  ipsec esp/transport//require;
spdadd 0.0.0.0/0[1701] 0.0.0.0/0[0] udp -P out ipsec esp/transport//require;

Meine mpd.conf
Code:
root@einwahl:/usr/local/etc/mpd5 # cat mpd.conf
startup:
        # configure mpd users
        set user super pwSuper admin
        # configure the console
        set console self 127.0.0.1 5005
        set console open
        # configure the web server
        set web self 0.0.0.0 5006
        set web open

default:
        load l2tp_server

l2tp_server:

# Define dynamic IP address pool.
        set ippool add pool_l2tp 192.168.1.50 192.168.1.60

# Create clonable bundle template named B_l2tp
        create bundle template B_l2tp
        set iface enable proxy-arp
        set iface enable tcpmssfix
        set ipcp yes vjcomp
# Specify IP address pool for dynamic assigment.
        set ipcp ranges 192.168.1.0/24 ippool pool_l2tp
        set ipcp dns 192.168.1.1

# Create clonable link template named L_l2tp
        create link template L_l2tp l2tp
# Set bundle template to use
        set link action bundle B_l2tp
# Multilink adds some overhead, but gives full 1500 MTU.
        set link enable multilink
        set link no pap chap eap
        set link enable chap
        set link keep-alive 0 0
# We reducing link mtu to avoid ESP packet fragmentation.
        set link mtu 1280
# Configure L2TP
        set l2tp self 192.168.1.132
        set l2tp enable length
# Allow to accept calls
        set link enable incoming

Die psk.txt und mpd.secret (mit den vertraulich Daten) denke ich sind OK.

Mir ist im Alauf nicht ganz klar, wo IPSEC aufhört und wo l2TP/MPD anfängt?

Kann irgendjemand Licht ins Dunkle bringen?
Jegliche Hinweise sind willkommen.

Mit freundlichen Grüßen

Joachim
 
Aus Sicht des Servers mit der
IP des Providers, obwohl beide Geräte IP private Adressen besitzen, die genattet werden. Da der Tunnel
established meldet, ist das glaube ich OK.

Eher nicht ok.
Du musst auf dem Handy eine echte, öffentliche IP haben. Zumindest ergaben das meine Googlesuchen und mein Bemühen darum...das O2-Forum (in meinem Fall O2, wie das bei vodafone aussieht, weiß ich nicht) ist voll mit diesen Hinweisen, von armen Leuten, die mit UMTS-Routern hantieren und keine Ports freigeben können.

Hier kann man meine armen Versuche mit ipfire und einem Blackberry nachgucken:

http://forum.ipfire.org/index.php?PHPSESSID=l9kj7s1a2k4l1e70sam4p3aob5&topic=9635.0

Bei T-Mobile gibt es auf Anfrage/Business-Tarif die Möglichkeit ungenattetes Internet zu bekommen, mein Tarif läuft aber nun noch ziemlich genau ein Jahr und ich habe das erstmal auf Eis gelegt, weil ich ansonsten bei O2 recht zufrieden bin.
 
Zurück
Oben