Iptables

雙VPN不工作

  • March 25, 2021

我在我的樹莓派中設置了 OpenVpn,它工作正常,我可以從我的手機登錄我的樹莓派。我還為我的樹莓派安裝了付費 VPN(Windscribe)。當我windscribe connect在我的樹莓派中啟動我的付費 vpn (windscribe) 時,問題就來了。在那之後,我再也無法用手機接觸到我的覆盆子了。

我想要 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 。但是我發現當我設置這兩條規則時

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。Any Ideas how to enable ping to 192.168.0.111 – tseres 12 分鐘前 刪除

我終於找到瞭如何讓它工作。感謝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

說明:第一行標記了來自 OpenVPN 伺服器的所有數據包的埠 1194 - 如果您正在偵聽其他內容,則需要更改此數字。這也阻止了預設路由接管並將 tun-incoming 直接推到 tun-outgoing 並導致不對稱路由。第二行是 IP 策略規則,如果數據包被標記為“1”,則查找路由表 101。第三行是路由規則,使數據包從 eth0 路由回寬頻路由器,返回到移動設備。

您的樹莓派是否在專用網路中?就像在家裡有一個網際網路盒子?然後它就不起作用了,因為你必須在你的私人網路中從你的網際網路盒子添加路由到你的樹莓派。然後將您的手機連接到您的公共 VPN,嘗試訪問您的 internetBox 的公共 IP。

如果您的手機連接到具有公共 IP 的外部 VPN,並且您的 raspeberry PI 在專用網路中,則它們無法訪問自己。您要做的第一件事是使您的 rapsberry PI 的 VPN 可以通過公共網路訪問。我希望它可以幫助,連接兩個不同的VPN非常困難,你為什麼要這樣做?(沒有冒犯我只是想知道)

一個更簡單的解決方案是獲取外部 VPN 的公共 IP,然後在本地路由器上允許 ssh 或來自該 IP 的任何協議重定向到您的樹莓派。

引用自:https://serverfault.com/questions/1057950