如何同时创建2个VPN接口?

时间:2015-08-25 12:44:03

标签: java android

VpnService中,我使用以下java代码创建VPN接口tun0:

private ParcelFileDescriptor mInterface;

Builder builder = new Builder();

builder.addAddress("10.8.0.2", 20);
builder.addRoute("0.0.0.0", 0);

mInterface = builder.establish();

当我想在下面创建第二个使用代码时:

private ParcelFileDescriptor mInterface, mInterface2;

Builder builder = new Builder();
Builder builder2 = new Builder();

builder.addAddress("10.8.0.2", 20);
builder.addRoute("0.0.0.0", 0);
builder2.addAddress("10.8.0.3", 20);

mInterface = builder.establish();
mInterface2 = builder2.establish();

第二个隧道可以创建,但第一个隧道将关闭。

Builder是用于创建VPN接口的帮助程序类。

谁能给我一些想法? 如何同时创建两个tun?

1 个答案:

答案 0 :(得分:0)

仔细阅读the docs on VpnService

您将注意到无法连接到多个VPN。

  

让应用程序拦截数据包会引起巨大的安全问题。   VPN应用程序很容易破坏网络。此外,其中两个   可能会相互冲突。系统需要采取多项措施   解决这些问题。以下是一些要点:

     
      
  • 只能同时运行一个VPN连接。该   创建新界面时,现有界面将被停用。
  •   

您一次只能拥有一个。但这并不意味着当你需要使用另一个时,你不能在两者之间切换。

<小时/> 更新 - 同样适用于VPN接口。来自Builder docs

  

为避免冲突,只能有一个活动的VPN接口   同一时间。