我正在新工作场所设置新集群,并且仍在管理上一个工作场所的另一个集群。基本上,我正在“复制”第一个集群的配置来设置新集群。
现在我在家,我想同时使用两个 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;如果我尝试执行ping
xxx.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,然后在主机和客户机之间使用双向文件夹共享怎么样?很简单。:)