【发布时间】:2015-12-23 17:12:15
【问题描述】:
我正在尝试使用 VpnService API 来捕获数据包(在 Android 4.4 上)。我一直在关注一个例子:
http://www.thegeekstuff.com/2014/06/android-vpn-service/
我使用构建器建立 vpn 连接,该构建器使用以下代码进行配置(这是从 ToyVPN 示例中借用的,我相信你们中的许多人都会认识到):
// Configure a builder while parsing the parameters.
Builder builder = new Builder();
builder.setMtu(1500);
builder.addAddress("192.168.0.1", 24);
builder.addRoute("0.0.0.0", 0);
try {
mInterface.close();
} catch (Exception e) {
// ignore
}
mInterface = builder.establish();
一般概念是使用 VpnService,我能够获取出站数据包并记录它们。然后我打开一个到原始目的地的 Socket 并转发数据包。当响应到来时,它将通过打开的 Socket。
所以我的问题是,如果一个 IP 地址在我打开到该地址的套接字之前向我发送了一个数据包,会发生什么?我猜它要么绕过VPN并正常到达,要么完全丢弃(可能是前者?)。任何见解都值得赞赏。
【问题讨论】:
标签: java android sockets network-programming vpn