首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ToyVpn和IPv6打乱了IPv4堆栈

ToyVpn和IPv6打乱了IPv4堆栈
EN

Stack Overflow用户
提问于 2015-10-15 02:05:14
回答 1查看 481关注 0票数 1

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

正如我所期望的那样,我看到IPv6在IPv4上被隧道传输,但是当我尝试运行任何IPv4应用程序(例如从终端窗口执行ping )时,我得到的结果是:“连接:网络不可达”。这就好像IPv4堆栈已经被限制为仅承载IPv6-in-IPv4隧道,并且当隧道处于活动状态时不可能进行其他IPv4操作。这是ToyVpn代码为IPv6设置和操作VPN服务的方式中的错误吗?

EN

回答 1

Stack Overflow用户

发布于 2015-10-17 04:23:44

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

谢谢--弗雷德

代码语言:javascript
复制
---
--- 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 {
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33132511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档