[strongSwan-dev] Problem with Android VPN Client on Motorola DROID RAZR running Android 4.1.2
Peck, Michael A
mpeck at mitre.org
Fri Apr 26 19:15:07 CEST 2013
Tobias,
Sorry for the slow response. I just tried the code in the android-kernel branch, and it is working great.
Thanks,
Mike
>-----Original Message-----
>From: Tobias Brunner [mailto:tobias at strongswan.org]
>Sent: Tuesday, April 16, 2013 9:19 AM
>To: Peck, Michael A
>Cc: dev at lists.strongswan.org
>Subject: Re: [strongSwan-dev] Problem with Android VPN Client on Motorola
>DROID RAZR running Android 4.1.2
>
>Hi Mike,
>
>Thanks for the details.
>
>>>> i.e. if I checkout master and run “git revert
>>>> 21dd4c4beab5b3e61dba28eedbc7aad375bdf0a3”, then build, the app
>works
>>> fine.
>>>>
>>>> Any thoughts on the problem?
>>>
>>> Could you check which of the two changes in the patch causes the issue?
>>
>> The first change is the one that causes the issue with the Android app.
>> In src/libcharon/sa/ike_sa.c:
>> This code segment works:
>> /* update our address in any case */
>> if (!me->equals(me, this->my_host))
>> {
>> ...
>> This code segment doesn't work:
>> /* update our address in any case */
>> if (force && !me->equals(me, this->my_host))
>> ...
>
>I see. The problem is in fact that multiple interfaces on your device
>are up and have IP addresses installed on them.
>
>> 10.184.214.218 is the external interface (cellular data). Notice the
>> "sending packet: from 192.168.157.1[38661]" - that is not the
>> external interface. I think it's one of the USB interfaces.
>> 10.184.214.218 is the external interface on the Android phone. Could
>> that be part of the problem? 54.242.XXX.YY is the internet-facing IP
>> of the gateway, but the gateway sees its own address as
>> 10.214.xxx.yy.
>
>The default network interface on Linux does a route lookup to determine
>the proper source address. On Android the kernel interface, so far,
>simply determined the first usable IP address and returned that (i.e.
>the first address on the first interface that's up and not 'lo' or a TUN
>device). This worked pretty well in my tests. And before the above
>commit it also worked in situations where the wrong IP was chosen at
>first. Because when charon later saw the correct IP when it received
>the response from the gateway it was able to update the address. With
>the above commit this auto-fix is not happening anymore.
>
>I now refactored the app so that it uses the kernel-netlink plugin with
>its more complex route lookup/source address selection algorithm. Could
>you please try if the code in the android-kernel branch [1] fixes the
>issue on your device?
>
>Thanks,
>Tobias
>
>[1]
>http://git.strongswan.org/?p=strongswan.git;a=shortlog;h=refs/heads/androi
>d-kernel
More information about the Dev
mailing list