我试图在同一个客户端多个隧道,并成功连接到openvpn服务器后,我已经申请了一些路由创build没有成功的隧道。 我的第一个隧道有效,但第二个隧道没有。 我这样做是这样的:
无所事事之前的路线
default 192.168.1.1 0.0.0.0 UG 0 0 0 enp3s0 link-local * 255.255.0.0 U 1000 0 0 enp3s0 192.168.1.0 * 255.255.255.0 U 0 0 0 enp3s0
第一条隧道
France.ovpn
client dev tun proto udp remote france.privateinternetaccess.com lport 1190 resolv-retry infinite persist-key persist-tun cipher aes-128-cbc auth sha1 tls-client remote-cert-tls server auth-user-pass /etc/openvpn/piaauth.txt comp-lzo verb 1 reneg-sec 0 crl-verify /etc/openvpn/crl.rsa.2048.pem ca /etc/openvpn/ca.rsa.2048.crt disable-occ lport 1189 rport 1198
|
sudo /usr/sbin/openvpn --config /etc/openvpn/France.ovpn --dev tun0 --route-noexec sudo route add -net 10.88.10.1 gw 10.88.10.5 netmask 255.255.255.255 dev tun0 sudo route add -net 10.88.10.5 gw * netmask 255.255.255.255 dev tun0 sudo route add -net 128.0.0.0 gw 10.88.10.5 netmask 128.0.0.0 dev tun0 sudo route add -net 172.98.67.121 gw 192.168.1.1 netmask 255.255.255.255 enp3s0
第一条隧道之后的路线
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.1 0.0.0.0 UG 0 0 0 enp3s0 10.88.10.1 10.88.10.5 255.255.255.255 UGH 0 0 0 tun0 10.88.10.5 * 255.255.255.255 UH 0 0 0 tun0 128.0.0.0 10.88.10.5 128.0.0.0 UG 0 0 0 tun0 link-local * 255.255.0.0 U 1000 0 0 enp3s0 172.98.67.121 192.168.1.1 255.255.255.255 UGH 0 0 0 enp3s0 192.168.1.0 * 255.255.255.0 U 0 0 0 enp3s0
所有的作品完美
现在我试试这个:
Norway.ovpn
client dev tun proto udp remote no.privateinternetaccess.com resolv-retry infinite persist-key persist-tun cipher aes-128-cbc auth sha1 tls-client remote-cert-tls server auth-user-pass /etc/openvpn/piaauth.txt comp-lzo verb 1 reneg-sec 0 crl-verify /etc/openvpn/crl.rsa.2048.pem ca /etc/openvpn/ca.rsa.2048.crt disable-occ lport 1187 rport 1198 sudo /usr/sbin/openvpn --config /etc/openvpn/Norway.ovpn --route-noexec sudo route add -net 10.39.10.1 gw 10.39.10.5 netmask 255.255.255.255 dev tun1 sudo route add -net 10.39.10.5 gw * netmask 255.255.255.255 dev tun1 sudo route add -net 108.61.123.81 gw 192.168.1.1 netmask 255.255.255.255 enp3s0
路线现在:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.1 0.0.0.0 UG 0 0 0 enp3s0 10.39.10.1 10.39.10.5 255.255.255.255 UGH 0 0 0 tun1 10.39.10.5 * 255.255.255.255 UH 0 0 0 tun1 10.8.10.1 10.8.10.5 255.255.255.255 UGH 0 0 0 tun0 10.8.10.5 * 255.255.255.255 UH 0 0 0 tun0 108.61.123.81.c 192.168.1.1 255.255.255.255 UGH 0 0 0 enp3s0 128.0.0.0 10.8.10.5 128.0.0.0 UG 0 0 0 tun0 link-local * 255.255.0.0 U 1000 0 0 enp3s0 172.98.67.121 192.168.1.1 255.255.255.255 UGH 0 0 0 enp3s0 192.168.1.0 * 255.255.255.0 U 0 0 0 enp3s0
我认为这个问题是在尝试添加最后的路线之后出现的:
sudo route add -net 128.0.0.0 gw 10.39.10.5 netmask 128.0.0.0 dev tun1
因为我之前和tun0一起使用了128.0.0.0。 我试图改变它像252.0.0.0或224.0.0.0不同的东西,但它不起作用。 如果我尝试使用128.0.0.0 tun1工作,但tun0不。 我该怎么做才能使这两个隧道同时工作?
每个路由表只能有一个默认路由。 如果要将路由添加到main路由表中,则需要决定将哪个网关用作默认路由。
当使用redirect-gateway def1 ,OpenVPN会向主路由表中添加2个(更具体的)路由(每个路由匹配一半的IP地址范围),覆盖默认路由而不删除它:
0.0.0.0/1 via 10.8.0.1 dev tun0 # network 0.0.0.0 mask 128.0.0.0 default via 10.0.2.2 dev eth0 # network 0.0.0.0 mask 0.0.0.0 128.0.0.0/1 via 10.8.0.1 dev tun0 # network 128.0.0.0 mask 128.0.0.0
这两个覆盖路线同样适用。 在main路由表中添加0.0.0.0/1或128.0.0.0/1路由是不可能的。
我怀疑你想要做的是configuration某种拆分隧道。 假定使用tun0和tun1设备,可以使用基于策略的路由如下所示来实现。
首先添加2个路由表:
echo "100 tun0" >> /etc/iproute2/rt_tables echo "101 tun1" >> /etc/iproute2/rt_tables
创build/etc/openvpn/route-up.sh脚本以在openvpn连接时自动添加路由:
#!/bin/bash RULE_EXIST=$(ip rule list | grep "from ${ifconfig_local}" | wc -l) if [ $RULE_EXIST -ne 0 ]; then ip rule del from "${ifconfig_local}" lookup "${dev}" fi ip rule add from "${ifconfig_local}" lookup "${dev}" ip route add default via "${route_vpn_gateway}" dev "${dev}" table "${dev}"
运行chmod +x /etc/openvpn/route-up.sh
将这些行添加到OpenVPN客户端configuration文件中:
route-noexec route-up /etc/openvpn/route-up.sh script-security 2
现在连接两个客户端并检查路由表:
root@debian:/etc/openvpn# ip route show default via 10.0.2.2 dev eth0 10.0.2.0/24 dev eth0 scope link src 10.0.2.15 10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2 root@debian:/etc/openvpn# ip route show table tun0 default via 10.8.0.1 dev tun0 root@debian:/etc/openvpn# ip route show table tun1 default via 10.0.2.2 dev eth0 root@debian:/etc/openvpn# ip rule show 0: from all lookup local 32762: from 10.8.0.2 lookup tun0 32763: from 10.0.2.15 lookup tun1 32766: from all lookup main 32767: from all lookup default
现在你需要决定怎么做。 例如,要启用简单的负载平衡,请添加以下路由:
ip route del default ip route add default scope global nexthop via 10.8.0.1 dev tun0 weight 1 \ nexthop via 10.0.2.2 dev eth0 weight 1
之后,主路由表如下所示:
root@debian:/etc/openvpn# ip route show default nexthop via 10.8.0.1 dev tun0 weight 1 nexthop via 10.0.2.2 dev eth0 weight 1 10.0.2.0/24 dev eth0 scope link src 10.0.2.15 10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
使用基于策略的路由,你可以做很酷的事情。 更多的想法参见下面的参考。
将其添加到route-up.sh脚本以帮助debugging,并查看可用的variables:
log=/tmp/ovpn.log exec >>"$log" 2>&1 chmod 666 "$log" 2>/dev/null printenv
然后在连接时运行tail -f /tmp/ovpn.log 。