@@ -24,31 +24,48 @@ secure as possible with the limitations of the OS APIs.
24
24
25
25
### Android
26
26
27
- On Android, the only way an app can filter network traffic is essentially via the VPN service API.
28
- This API allows all traffic, except some [ exempt by the system] ( #exempt-traffic ) , to and from the
29
- phone to flow though a third party app. This API is of course what the app uses for the tunnel
30
- itself as well, but apart from that it is also what the leak protection is built on.
31
-
32
- An app with permission to act as a VPN service can request to open a VPN tunnel on the device and
33
- provide a set of IP networks it would like to have routed via itself. Doing so and specifying
34
- the routes ` 0/0 ` and ` ::0/0 ` forces all traffic, except some
35
- [ exempt by the system] ( #exempt-traffic ) , to go via the app. That is what this app does both when it
36
- has a VPN tunnel up, but also when in a state where it would like to block all network traffic. Such
37
- as the [ connecting] , [ disconnecting] and [ error] states. In these states, all outgoing packets are
38
- simply dropped, but incoming traffic is still allowed due to the limitations of Android.
27
+ > ⚠️ When we say * all traffic* in this chapter it does not include traffic exempt by the system
28
+ or traffic affected by known issues.
29
+
30
+ The only way an android app can filter network traffic is via the VPN Service API. This API allows
31
+ * all traffic* to and from the device to be routed through a third party app. This API is what the
32
+ Mullvad VPN app uses for the tunnel itself and for leak protection.
33
+
34
+ When establishing a VPN connection using the default settings* the app will set the routes ` 0/0 ` and
35
+ ` ::0/0 ` in order to force * all traffic* to be routed through the app. This also applies when the app is
36
+ in a state where it blocks * all traffic* , such as the [ connecting] , [ disconnecting] and [ error]
37
+ states. Additionally the android system has a setting called * Block connections without VPN* that
38
+ enables the Android OS to block * all traffic* that is not routed through the Mullvad VPN.
39
+
40
+ > ** \* :** Local Network Sharing affects the routes and Split Tunneling will allow apps to bypass the
41
+ tunnel.
39
42
40
43
#### Exempt traffic
41
44
42
- Even though not being properly documented by Google, some traffic is exempt by the system from using
43
- the VPN, which means that the traffic will leak and therefore potentially impact user privacy. This
44
- applies even if * Block connections without VPN* is enabled. The exempt traffic includes:
45
- * Connectivity checks (DNS lookups and HTTP(S) connections)
46
- * Network provided time (NTP)
45
+ Even though not being properly documented by Google, some traffic is exempt by the system from
46
+ using the VPN, which means that the traffic will leak and therefore potentially impact user
47
+ privacy. This applies even if Block connections without VPN is enabled. The exempt traffic includes:
48
+
49
+ - Connectivity checks (DNS lookups and HTTP(S) connections)
50
+ - Network provided time (NTP)
51
+ - Traffic to and from hotspot clients.
47
52
48
53
The following issues have been reported by Mullvad in the Android issue tracker in order to improve
49
54
documentation and user privacy:
50
- * [ Incorrect VPN lockdown documentation] ( https://issuetracker.google.com/issues/249990229 )
51
- * [ Add option to disable connectivity checks when VPN lockdown is enabled] ( https://issuetracker.google.com/issues/250529027 )
55
+
56
+ - [ Incorrect VPN lockdown documentation] ( https://issuetracker.google.com/issues/249990229 )
57
+ - [ Add option to disable connectivity checks when VPN lockdown is enabled] ( https://issuetracker.google.com/issues/250529027 )
58
+
59
+ #### Known issues
60
+
61
+ Notable security related issues reported to Google:
62
+
63
+ - [ VPN leaks DNS traffic outside the tunnel] ( https://issuetracker.google.com/issues/337961996 )
64
+ - [ Broadcast traffic bypasses VPN] ( https://issuetracker.google.com/issues/146484540 )
65
+
66
+ Besides these known issues Android has many variants and flavors that may introduce variances to
67
+ the default [ Android Open Source Project] ( https://source.android.com/ ) behavior. This means that
68
+ the Mullvad VPN app, like all other VPN apps, is subject to the limitations of the VPN Service API.
52
69
53
70
### iOS
54
71
0 commit comments