同一台机器上可以同时建立 2 个不同的 VPN 连接吗?也许是在不同的网络接口上?

同一台机器上可以同时建立 2 个不同的 VPN 连接吗?也许是在不同的网络接口上?

我正在新工作场所设置新集群,并且仍在管理上一个工作场所的另一个集群。基本上,我正在“复制”第一个集群的配置来设置新集群。

现在我在家,我想同时使用两个 VPN 连接同时地代替一个接一个地同时访问两个集群。我认为这是不可能的,但也许有人有主意?

一个 VPN 连接使用 OpenVPN,第二个使用 CISCO VPN 客户端。或者是否可以尝试使用路由规则来实现这一点?我对网络不是很有经验。

我正在尝试route -n重新定义不同子接口的规则。当没有 VPN 处于活动状态时,我得到的结果如下:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.1.0.1        0.0.0.0         UG    0      0        0 eth0
10.1.0.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0

现在,如果我打开思科 VPN(VPN1):

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         xxx.xxx.xxx.117 0.0.0.0         UG    0      0        0 cscotun0
10.1.0.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
xxx.xxx.xxx.0   0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.yy.yy.22    10.1.0.1        255.255.255.255 UGH   0      0        0 eth0

如果我打开 openVPN (VPN2):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.1.0.1      0.0.0.0         UG    0      0        0 eth0
10.1.0.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.1.0     192.168.2.17    255.255.255.0   UG    0      0        0 tun0
192.168.2.17    0.0.0.0         255.255.255.255 UH    0      0        0 tun0
zzz.zzz.zz.zz   10.1.0.1        255.255.255.255 UGH   0      0        0 eth0

现在,如果我打开两者(先打开 vpn2,然后打开 vpn1):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         xxx.xxx.xxx.117 0.0.0.0         UG    0      0        0 cscotun0
10.1.0.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
xxx.xxx.xxx.0   0.0.0.0         255.255.255.0   U     0      0        0 cscotun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.yy.yy.22    10.1.0.1        255.255.255.255 UGH   0      0        0 eth0
192.168.2.17    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

理想情况下,当仅 VPN1 处于活动状态(cscotun0)时,所有对 xxx.xxx.xxx.0 的请求都应通过,而对 192.168.2.0 的所有请求都应通过 192.168.2.17(tun0),其他请求应通过 eth0 ...

我不习惯路由,如有任何帮助我将非常感激。

编辑:受到答案的启发,我尝试使用route命令来尝试正确设置我的配置。

为了更清楚起见,我编辑了上述路由表以反映route -n命令的结果,这更具参考价值。我还修改了我的家庭路由器,这样我10.1.0.0 nm 255.255.255.0在家里就有了 IP 地址。

如果我理解正确的话,当只有 VPN2(tun0)处于活动状态时,它会使用我家的默认网关(10.1.0.1)并定义一些新路由,如果我理解错了请告诉我:

192.168.1.0   192.168.2.17 -> this says "everything for 192.162.1.0 network (vpn2 network), then pass through official gateway 192.168.2.17 "
192.168.2.17  0.0.0.0 -> this says "everything for host 192.168.2.17, goes to default gateway  (0.0.0.0) " , which is currently pointing to my home rooter"
zzz.zzz.zz.zz 10.1.0.1 -> this says "everything for zzz.zzz.zz.zz . pass through my home router (10.1.0.1)

当我单独打开 VPN1 时,它会用自己的网关 (xxx.xxx.xxx.53) 覆盖默认网关,所有内容都会重定向到此网关。顺便说一句,这也是我看不到家庭网络的原因(如果我没记错的话)。

现在,我发现当我打开两个 VPN 时,默认网关会重定向到 VPN1 的网关(xxx.xxx.xxx.53),我想问的是:如何设置规则,以便:

  • 198.162.1.0 的所有内容都通过 198.162.2.17
  • 198.162.2.17 的内容通过 10.1.0.1
  • xxx.xxx.xxx.0 的内容通过 xxx.xxx.xxx.117
  • 将 10.1.0.0 的内容传递给 10.1.0.1

route add我曾尝试过和玩route del,但我或多或少只是尝试通过反复试验来做事,我最好明白我应该做什么,以及我想要在这里应用的规则是否正确或基本上是愚蠢的......

编辑 2:根据 MariusMatutiae 的建议,我在此附加了两个 VPN 都打开时 ifconfig 的结果:

cscotun0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:xxx.xxx.xxx.117  P-t-P:xxx.xxx.xxx.117  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1380  Metric:1
          RX packets:21 errors:0 dropped:0 overruns:0 frame:0
          TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:4007 (4.0 KB)  TX bytes:3789 (3.7 KB)

eth0      Link encap:Ethernet  HWaddr 00:21:cc:6b:3e:ae  
          inet addr:10.1.0.226  Bcast:10.1.0.255  Mask:255.255.255.0
          inet6 addr: fe80::221:ccff:fe6b:3eae/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:28245 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29039 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14287030 (14.2 MB)  TX bytes:5521200 (5.5 MB)
          Interrupt:20 Memory:f3a00000-f3a20000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:9928 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9928 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4962141 (4.9 MB)  TX bytes:4962141 (4.9 MB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.2.18  P-t-P:192.168.2.17  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:719 errors:0 dropped:0 overruns:0 frame:0
          TX packets:764 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:103523 (103.5 KB)  TX bytes:56000 (56.0 KB)

编辑3:

不起作用的描述:打开两个 VPN 后,我无法访问 VPN tun0;如果我尝试执行pingxxx.xxx.xxx.0 之外的某些操作,则会得到结果ping: sendmsg: Operation not permitted

理想情况下,我希望同时访问 VPN(如果 VNP 网络的 DNS 不起作用,我可以使用直接 IP 进行管理,没问题)和理想情况下也可以访问我的本地局域网...

不幸的是我不够iptables专家理解我该怎么做。

提前致谢

答案1

当然,您可以同时使用多个 VPN。安排此过程的主要问题是确保路由表正确,因为所有 VPN 都会尝试更改它,而不会假设有更多 VPN 在做同样的事情。

您的场景非常简单,因为您基本上使用 VPN 来访问远程 LAN,而不是重定向所有流量。最后的配置需要更复杂的设置,但对于您来说,我们可以少做很多工作。

A前提要使其发挥作用,所有子网都是不同的:您的家庭子网和您的两个工作场所子网。

假设你已经安排好了,那么你必须确保你的 OpenVPN 客户端配置文件确实不是包含以下声明

    redirect-gateway def1

并且服务器配置文件确实不是包含以下声明:

   push "redirect-gateway def1 bypass-dhcp"

由于您只对使用两个 VPN 感兴趣,这已经解决了您的问题,因为即使另一个 VPN 获取了默认路由,您的路由表中也只会有一条默认路由,这样就完成了。

但是,默认情况下,Cisco VPN 不会获取默认路由。所以你应该没问题。要检查,请确保路线-n包含如下几行,

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.73.1    0.0.0.0         UG    0      0        0 eth0

其中 192.168.73.1 是您的家庭默认路由器(如果您的路由器不是 192.168.73.1,请根据需要更改)。

如果您想同时通过两个 VPN 重定向所有流量,这个问题就会变得更加有趣(是的,可以做到)。

编辑:

如果你愿意,你也可以在不同的网络接口上使用 OpenVPN。例如,你可以基于你的以太网卡启动一个虚拟接口,如下所示,

   ip link add link eth0 mac0 address 56:61:4f:7c:77:db type macvlan
   ip link set mac0 up
   dhclient mac0

现在检查虚拟接口的 IP 地址mac0

   ip addr show

然后,在你的开放VPN客户端配置文件中,可以引入如下语句

   local IP_address_of_mac0

当你连接到 OpenVPN 服务器时,该连接将仅绑定到接口mac0然后,要访问远程 LAN,您需要记住将所有应用程序绑定到同一个接口mac0以及其 IP 地址。例如,要通过这种方式通过 ssh 访问 PC,您必须说:

  ssh -b IP_address_of_mac0 user@remote_LAN_pc

等等。对于,你应该使用

   ping -i IP_address_of_mac0 remote_LAN_pc

答案2

完全可以同时运行多个 VPN。

我发现你的设置有几个问题 -

根据您要执行的操作,您应该确保 VPN 服务器不会发布(或者您忽略或使用较低的度量来获得正确的)默认路由。否则,VPN 会尝试通过彼此进行路由并中断。当然,这意味着您使用 VPN 仅访问特定网络/路由

您可能遇到的第二个问题(请注意,网络掩码为 255.255.255.0 的重复 192.168.1.0 网络)似乎是您尝试访问的两个网络都在 192.168.1.x。这是一个问题,因为内核不知道您指的是哪一个。正确的解决方案是重新编号其中一个网络,使其位于不同的网络块中。(您可以使用 iptables 和 hosts 文件以及其他技巧在您的系统上模拟这种情况,但这种方法非常专业、脆弱,不推荐)。

顺便说一句,当生成路由表时,通常最好使用“-n”开关,这样它们就会显示 IP,而不是尝试解析机器名称——机器名称对我们来说毫无意义!

答案3

那么,在 VirtualBox 中简单地设置一个 W7 VM,然后通过它使用第二个 VPN,然后在主机和客户机之间使用双向文件夹共享怎么样?很简单。:)

相关内容