Closed sevenrock closed 9 years ago
That is probably a bug in TomTom. The dns properties are deprecated and should never have been used by apps. Also if other apps are working fine the VPN app has set the DNS properties right. You just don't see the DNS in getprop
Could you please point me to some docs saying that net.dnsX are deprecated so I can quote it when opening a ticket at TomTom support?
Btw: I found this commit in CM12.1 where net.dnsX was re-added in 2014: https://github.com/CyanogenMod/android_frameworks_base/commit/d5648dcf6a477a350c281c769bae07b8cbe982a3 ported from Google: https://android.googlesource.com/platform/frameworks/base/+/d5648dc%5E!/
There are also two more android issues related to my problem: http://code.google.com/p/android/issues/detail?id=169761 http://code.google.com/p/android/issues/detail?id=177536
Sorry. I have no link at hand. I remember seeing somewhere in the sources of VpnService/netd or the google android bugtracker but with quick googling I could not find it :/
I circumvented the problem by adding a DNAT rule to the prerouting chain on my vpn server for the two offending IPs and TomTom works like a charm now:
DNAT tcp -- android.lan 10.74.210.210 tcp dpt:dns /* 192.168.4.252 10.74.210.210:53 DNAT:192.168.4.253:53 / to:192.168.4.253:53 DNAT udp -- android.lan 10.74.210.210 udp dpt:dns / 192.168.4.252 10.74.210.210:53 DNAT:192.168.4.253:53 / to:192.168.4.253:53 DNAT tcp -- android.lan 10.74.210.211 tcp dpt:dns / 192.168.4.252 10.74.210.211:53 DNAT:192.168.4.253:53 / to:192.168.4.253:53 DNAT udp -- android.lan 10.74.210.211 udp dpt:dns / 192.168.4.252 10.74.210.211:53 DNAT:192.168.4.253:53 */ to:192.168.4.253:53
This is a bug in either TomTom (more likely) or Android itself.
Hi,
I am trying to solve a weird problem with the TomTom GPS-Navigation Traffic app. On my new phone with CM12.1 installed it does not provide live traffic data when connected through the cellular network and a VPN tunnel. The same tunnel works with my private wifi setup, also connecting with TomTom through the cellular network and without a VPN tunnel works.
This is a regression compared to CM 11.0 where connecting by VPN@cellular worked, to summarize:
I tracked down the regression to DNS handling in Lollipop and could fix the problem using setprop net.dns1, but first the comparison done with ngrep:
Kitkat
The phone (192.168.4.252) is connected by VPN tunnel to the VPN server daemon (192.168.4.253), issues a DNS query for t.tt1.nl, gets an answer from my DNS server and connects to the TomTom live traffic data service, everything is ok.
Lollipop
The phone (192.168.4.252) is connected by VPN tunnel to my local VPN server, I can use internal services like my mail server and so on, all traffic is routed through the VPN tunnel, including DNS queries done by other apps like Firefox, Google Play, nslookup... The only exception is the TomTom app which still queries the DNS server of the cellular provider 10.74.210.210/1 (Congstar in my case). Here are the getprop dns settings after connecting to the cellular network:
and now after establishing the VPN tunnel:
As you can see, no changes occured. Now the ngrep log of "adb shell nslookup www.github.com"
As you can see my local DNS server is used. Now I start TomTom:
and it tries to resolve its server using the wrong DNS server... No changes to the phones DNS servers:
Now the fix:
and TomTom connects to its live traffic data service:
Here is my openvpn client config, which works unchanged using CM 11.0:
Do I need to make changes to my config are is it a bug somewhere?