簡體   English   中英

在打開Socket之前,Android VpnService如何處理傳入的數據包?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM