【问题标题】:ToyVpn and IPv6 messes up IPv4 stackToyVpn 和 IPv6 搞乱了 IPv4 堆栈
【发布时间】:2016-01-12 23:10:14
【问题描述】:

我一直在使用 ToyVpn 示例代码,并且可以成功地使用它在 IPv4 上建立 IPv4 隧道。当我以这种方式运行 ToyVpn 时,正确的事情发生了,一切都很好。但是,当我在 IPv4 上建立 IPv6 隧道时,它似乎弄乱了我的 android 设备的 IPv4 堆栈。

正如我所料,我看到 IPv6 通过 IPv4 建立隧道,但是当我尝试运行任何 IPv4 应用程序(例如从终端窗口 ping)时,我得到:“连接:网络无法访问”。就好像 IPv4 堆栈仅限于承载 IPv6-in-IPv4 隧道,并且在隧道处于活动状态时无法进行其他 IPv4 操作。这是 ToyVpn 代码为 IPv6 设置和操作 VPN 服务的方式中的错误吗?

【问题讨论】:

    标签: android ipv6


    【解决方案1】:

    回答我自己的问题,似乎在分配 IPv6 时 到 VPN 接口,操作系统禁用 IPv4 堆栈。修复是 将下面的补丁添加到我发现的 ToyVpnService.java 通过查看 ics-openvpn-master 发行版。有没有人 知道我应该向谁报告吗?

    谢谢 - 弗雷德

    ---
    --- ToyVpnService.java.orig 2015-10-13 11:59:32.933593178 -0700
    +++ ToyVpnService.java          2015-10-16 13:17:11.579120232 -0700
    @@ -23,6 +23,7 @@
     import android.os.Handler;
     import android.os.Message;
     import android.os.ParcelFileDescriptor;
    +import android.system.OsConstants;
     import android.util.Log;
     import android.widget.Toast;
    
    @@ -295,6 +296,11 @@
    
             // Configure a builder while parsing the parameters.
             Builder builder = new Builder();
    +
    +   // Copied from ics-openvpn-master
    +   builder.allowFamily(OsConstants.AF_INET);
    +   builder.allowFamily(OsConstants.AF_INET6);
    +
             for (String parameter : parameters.split(" ")) {
                 String[] fields = parameter.split(",");
                 try {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-12
      • 2012-08-04
      • 1970-01-01
      • 2021-11-08
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多