Android 上仅提供 DNS VPN 服务 Q

DNS only VPN service on Android Q

我们使用 VpnService 来设置具有自定义 DNS 设置的 VPN。我们只是想更改设备的 DNS 设置。

在 Android(P 及以下版本)的当前版本中,通过不在 VPN 中设置路由,服务流量将直接路由到应用程序,并将 DNS 请求发送到提供的地址。我们不需要 TUN 接口,因为我们不提供真正的 VPN 服务。

在 Android Q beta 3 上建立了 VPN,但忽略了 DNS 设置。发生了什么变化?

下面是我们如何在 onStartCommand

中启动服务
                b.addAddress("10.0.2.15", 32);
                b.addDnsServer("8.8.8.8");
                b.addDnsServer("8.8.4.4");
                b.establish();

DNS 配置确实有效。

我观察到它不是,实际上是由 Chrome 引起的。 Chrome(不确定是哪个版本)使用自己的 dns 解析器,绕过 VPN 应用的 DNS 设置。

此处讨论:https://www.xda-developers.com/fix-dns-ad-blocker-chrome/