[英]How does Android VpnService handle incoming packets before Socket is opened?
我正在嘗試使用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,我可以獲取出站數據包並記錄它們。 然后,我打開一個到原始目的地的套接字並轉發數據包。 當響應到來時,它將通過已打開的套接字。
所以我的問題是,當我在打開該地址的套接字之前,某個IP地址向我發送數據包時,會發生什么? 我猜想它要么繞過VPN並正常到達,要么被完全丟棄(可能是前者?)。 任何見解均表示贊賞。
當您添加Route(“ 0.0.0.0”,0); 所有數據包將被路由到此Tun接口。 現在由您決定是否要將它們轉發到原始目的地。
因此,您的問題的答案是,您仍然會從嘗試連接到其服務器的應用程序中獲取數據包,而現在,是否允許它取決於您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.