我建立了一个 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));
}
}
您的代码很好,但请确保您已将服务器配置为支持分割隧道并尝试以下代码:
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.
}
}