如何从 Android 中的 VPN tun0 接口中排除网站

问题描述 投票:0回答:1

我建立了一个 VPN,在其中使用“builder.addallowedapplication()”进行分割隧道。我想从 VPN tun0 绕过一些网站,而使用 wlan0 接口。

我尝试过使用以下方法,但似乎不起作用。请提出任何更正。

    InetAddress[] inetAddresses = InetAddress.getAllByName("www.speedtest.net");
    for (InetAddress ipAddress : inetAddresses) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            String address = ipAddress.getHostAddress();
            builder.excludeRoute(new IpPrefix(InetAddress.getByName(address), 32));
        }
    }
android openvpn android-vpn-service
1个回答
0
投票

您的代码很好,但请确保您已将服务器配置为支持分割隧道并尝试以下代码:

import android.os.Build;
import androidx.annotation.RequiresApi;
import android.net.IpPrefix;
import java.net.InetAddress;
import java.net.UnknownHostException;

@RequiresApi(api = Build.VERSION_CODES.Q)
public void excludeWebsitesFromVPN() {
    VpnService.Builder builder = new VpnService.Builder();
    
    try {
        InetAddress[] inetAddresses = InetAddress.getAllByName("www.speedtest.net");
        for (InetAddress ipAddress : inetAddresses) {
            String address = ipAddress.getHostAddress();
            builder.excludeRoute(new IpPrefix(ipAddress, 32));
        }
        vpnService = builder.setSession("myvpn").establish();
        vpnService.start();

    } catch (UnknownHostException e) {
        // Handle the exception if DNS lookup fails.
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.