双重 VPN 不起作用

双重 VPN 不起作用

我已经在树莓派中设置了 OpenVpn,它运行正常,我可以从手机登录树莓派。我也在树莓派上安装了付费 VPN(Windscribe)。当我在树莓派中激活付费 VPN(windscribe)时,问题就出现了windscribe connect。之后,我就再也无法用手机访问树莓派了。

我想要 OpenVPN(PiVPN),这样我就可以访问我的家庭网络,并且我也希望 windscribe vpn 处于活动状态,以便安全地浏览互联网。现在我有第一部分。当 windscribe 未处于活动状态时,我可以访问我的家庭网络。

我尝试了很多次使用 iptables,但都没有成功,为接口、隧道和许多组合创建了转发规则,但似乎都没有用。最后我重置了所有内容。

这是我的配置。

sudo iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT
-A POSTROUTING -s 10.8.0.0/24 -o wlan0 -m comment --comment openvpn-nat-rule -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

pi@raspberrypi:~ $ sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT DROP
-A OUTPUT ! -o tun+ -p tcp -m tcp --dport 53 -j DROP
-A OUTPUT ! -o tun+ -p udp -m udp --dport 53 -j DROP
-A OUTPUT -d 192.168.0.0/16 -j ACCEPT
-A OUTPUT -d 10.0.0.0/8 -j ACCEPT
-A OUTPUT -d 172.16.0.0/12 -j ACCEPT
-A OUTPUT -d 104.20.26.217/32 -j ACCEPT
-A OUTPUT -d 104.20.27.217/32 -j ACCEPT
-A OUTPUT -d 172.67.17.175/32 -j ACCEPT
-A OUTPUT -d 104.21.93.29/32 -j ACCEPT
-A OUTPUT -d 172.67.203.127/32 -j ACCEPT
-A OUTPUT -d 104.21.53.216/32 -j ACCEPT
-A OUTPUT -d 172.67.219.39/32 -j ACCEPT
-A OUTPUT -d 172.67.189.40/32 -j ACCEPT
-A OUTPUT -d 104.21.65.74/32 -j ACCEPT
-A OUTPUT -o tun+ -j ACCEPT
-A OUTPUT -d 127.0.0.1/32 -j ACCEPT
-A OUTPUT -d 209.58.129.121/32 -j ACCEPT

pi@raspberrypi:~ $ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.111  netmask 255.255.255.0  broadcast 192.168.0.255
        ether b8:27:eb:ec:6a:4b  txqueuelen 1000  (Ethernet)
        RX packets 19989  bytes 21885907 (20.8 MiB)
        RX errors 160  dropped 4  overruns 0  frame 0
        TX packets 11508  bytes 1206589 (1.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 618  bytes 201828 (197.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 618  bytes 201828 (197.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.0.1  netmask 255.255.255.0  destination 10.8.0.1
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.120.138.29  netmask 255.255.254.0  destination 10.120.138.29
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 164  bytes 32755 (31.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 961  bytes 114896 (112.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b8:27:eb:b9:3f:1e  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

pi@raspberrypi:~ $ ip route list
0.0.0.0/1 via 10.120.138.1 dev tun1
default via 192.168.0.1 dev eth0 src 192.168.0.111 metric 202
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
10.120.138.0/23 dev tun1 proto kernel scope link src 10.120.138.29
128.0.0.0/1 via 10.120.138.1 dev tun1
192.168.0.0/24 dev eth0 proto dhcp scope link src 192.168.0.111 metric 202
209.58.129.121 via 192.168.0.1 dev eth0

pi@raspberrypi:~ $ ip rule list
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

更新:我找到了这个教程,它对我帮助很大 comparitech.com/blog/vpn-privacy/raspberry-pi-vpn 。但我发现当我设置这 2 条规则时

ip rule add from 192.168.1.2 lookup 101 
ip route add default via 192.168.1.1 table 101 

我可以访问 vpn,但无法像以前一样使用 192.168.0.111 ping 我的 vpn 服务器,现在我必须使用 10.8.0.1。有没有什么办法可以启用 ping 192.168.0.111 的功能 – tseres 12 分钟前 删除

答案1

您的 Raspberry PI 是否在私有网络中?比如在家里使用互联网盒子?那么它就无法工作,因为您必须在私有网络中从互联网盒子添加路由到 Raspberry PI。然后将您的手机连接到公共 VPN,尝试访问您的互联网盒子的公共 IP。

如果您的手机连接到具有公共 IP 的外部 VPN,而您的 Raspberry PI 位于私有网络中,则它们无法访问自己。您要做的第一件事就是让您的 Raspberry PI 的 VPN 可通过公共网络访问。我希望这能有所帮助,连接两个不同的 VPN 非常困难,您为什么要这样做?(没有冒犯的意思,我只是好奇)

一个更简单的解决方案是获取外部 VPN 的公共 IP,然后在本地路由器上允许 ssh 或该 IP 上的任何协议重定向到您的树莓派。

答案2

我终于找到了如何让它工作的方法。感谢https://www.raspberrypi.org/forums/viewtopic.php?t=251453&sid=5d7e57949fb3cec559d5319f666f3825#p1638481

通过替换这些行

ip rule add from 192.168.1.2 lookup 101 
ip route add default via 192.168.1.1 table 101 

sudo iptables -A OUTPUT -t mangle -p tcp --sport 1194 -j MARK --set-mark 1
sudo ip rule add fwmark 1 table 101
sudo ip route add table 101 default via 192.168.1.1 dev eth0

解释:第一行标记来自端口 1194 上的 OpenVPN 服务器的所有数据包 - 如果您正在监听其他端口,则需要更改此数字。这还可以阻止默认路由接管并将 tun-incoming 直接推送到 tun-outgoing 并导致不对称路由。第二行是 IP 策略规则,规定如果数据包标记为“1”,则查找路由表 101。第三行是路由规则,使数据包从 eth0 路由回宽带路由器,再路由回移动设备。

相关内容