我正在使用[VpnService](http://developer.android.com/reference/android/net/VpnService.html)!并能够创建VPN连接。我可以看到(tracert)通过VPN的所有互联网流量。
现在,我的要求是绕过某些网址的VPN(例如www.google.com)。为此,我编写了以下代码:
if (vpnService.protect(new Socket(InetAddress.getByName("74.125.225.241"), 80))) {
Log.d("TAG", "Socket protection for google.com is successfull");
}
但是在访问www.google.com时,我仍然可以在tracert上看到VPN服务器ip。因此,使用此代码,似乎VpnService不保护此请求不会进入VPN服务器。
有人能指出我哪里出错了,并提出正确的做法吗?
答案 0 :(得分:1)
据我了解,您只从VPN隧道中排除(保护)一个特定的套接字。
因此,使用相同目标打开的每个其他套接字仍然通过VPN隧道。
您必须在从设备向Google建立的每个套接字上拨打保护prepare(...)
。
答案 1 :(得分:0)
您可以通过检查DNS查询并保存链接到您要绕过的网址的IP地址来了解IP地址是否属于某个网址(例如google.com)。浏览器将首先启动DNS查询以获取其要连接的域的IP地址。