ฉันมีการเชื่อมต่อ VPN ใหม่ (โดยใช้ openvpn) เพื่อให้ฉันสามารถกำหนดเส้นทางได้ตามข้อ จำกัด ของ ISP ในขณะที่มันใช้งานได้ดีก็จะทำให้ปริมาณการใช้ข้อมูลทั้งหมดผ่าน VPN นี่เป็นสาเหตุที่ทำให้ฉันมีปัญหาในการดาวน์โหลด (การเชื่อมต่ออินเทอร์เน็ตของฉันเร็วกว่าที่ vpn อนุญาต) และสำหรับการเข้าถึงระยะไกล ฉันใช้เซิร์ฟเวอร์ ssh และมี daemon ที่ทำงานอยู่ซึ่งอนุญาตให้ฉันดาวน์โหลด schdule ผ่านโทรศัพท์ของฉัน
ฉันมีการเชื่อมต่ออีเธอร์เน็ตที่มีอยู่บน eth0 และการเชื่อมต่อ VPN ใหม่บน tun0
ฉันเชื่อว่าฉันต้องตั้งค่าเส้นทางเริ่มต้นเพื่อใช้การเชื่อมต่อ eth0 ที่มีอยู่ของฉันบนเครือข่าย 192.168.0.0/24 และตั้งค่าเกตเวย์เริ่มต้นเป็น 192.168.0.1 (ความรู้ของฉันสั่นคลอนเนื่องจากฉันไม่ได้ทำสิ่งนี้เป็นเวลาหลายปี ) หากถูกต้องแล้วฉันไม่แน่ใจว่าจะทำอย่างไร! ตารางเส้นทางปัจจุบันของฉันคือ:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface MSS Window irtt
0.0.0.0 10.51.0.169 0.0.0.0 UG 0 0 0 tun0 0 0 0
10.51.0.1 10.51.0.169 255.255.255.255 UGH 0 0 0 tun0 0 0 0
10.51.0.169 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 0 0 0
85.25.147.49 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0 0 0 0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0 0 0 0
192.168.0.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 0 0 0
หลังจากแก้ไขการกำหนดเส้นทางฉันเชื่อว่าฉันต้องใช้ iptables เพื่อกำหนดค่าการกำหนดเส้นทางล่วงหน้าหรือการหลอกลวงเพื่อบังคับให้ทุกอย่างสำหรับพอร์ตปลายทาง 80 หรือ 443 ผ่าน tun0 อีกครั้งฉันไม่แน่ใจว่าจะทำอย่างไร!
ทุกสิ่งที่ฉันพบบนอินเทอร์เน็ตกำลังพยายามทำสิ่งที่ซับซ้อนกว่ามากและการพยายามจัดเรียงไม้จากต้นไม้พิสูจน์ได้ยาก
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก
UPDATE
จนถึงตอนนี้จากแหล่งต่าง ๆ ฉันได้เรียนรู้สิ่งต่อไปนี้ด้วยกัน:
#!/bin/sh
DEV1=eth0
IP1=`ifconfig|perl -nE'/dr:(\S+)/&&say$1'|grep 192.`
GW1=192.168.0.1
TABLE1=internet
TABLE2=vpn
DEV2=tun0
IP2=`ifconfig|perl -nE'/dr:(\S+)/&&say$1'|grep 10.`
GW2=`route -n | grep 'UG[ \t]' | awk '{print $2}'`
ip route flush table $TABLE1
ip route flush table $TABLE2
ip route show table main | grep -Ev ^default | while read ROUTE ; do
ip route add table $TABLE1 $ROUTE
ip route add table $TABLE2 $ROUTE
done
ip route add table $TABLE1 $GW1 dev $DEV1 src $IP1
ip route add table $TABLE2 $GW2 dev $DEV2 src $IP2
ip route add table $TABLE1 default via $GW1
ip route add table $TABLE2 default via $GW2
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
ip rule add from $IP1 lookup $TABLE1
ip rule add from $IP2 lookup $TABLE2
ip rule add fwmark 1 lookup $TABLE1
ip rule add fwmark 2 lookup $TABLE2
iptables -t nat -A POSTROUTING -o $DEV1 -j SNAT --to-source $IP1
iptables -t nat -A POSTROUTING -o $DEV2 -j SNAT --to-source $IP2
iptables -t nat -A PREROUTING -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
iptables -t nat -A PREROUTING -i $DEV1 -m state --state NEW -j CONNMARK --set-mark 1
iptables -t nat -A PREROUTING -i $DEV2 -m state --state NEW -j CONNMARK --set-mark 2
iptables -t nat -A PREROUTING -m connmark --mark 1 -j MARK --set-mark 1
iptables -t nat -A PREROUTING -m connmark --mark 2 -j MARK --set-mark 2
iptables -t nat -A PREROUTING -m state --state NEW -m connmark ! --mark 0 -j CONNMARK --save-mark
iptables -t mangle -A PREROUTING -i $DEV2 -m state --state NEW -p tcp --dport 80 -j CONNMARK --set-mark 2
iptables -t mangle -A PREROUTING -i $DEV2 -m state --state NEW -p tcp --dport 443 -j CONNMARK --set-mark 2
route del default
route add default gw 192.168.0.1 eth0
ตอนนี้ดูเหมือนว่าจะทำงานได้ ยกเว้นมันไม่ใช่!
การเชื่อมต่อกับเว็บไซต์ที่ถูกบล็อกกำลังดำเนินการอยู่การเชื่อมต่อที่ไม่ได้อยู่ในพอร์ต 80 และ 443 กำลังใช้การเชื่อมต่อที่ไม่ใช่ VPN
อย่างไรก็ตามการเชื่อมต่อพอร์ต 80 และ 443 ที่ไม่ได้เชื่อมต่อกับเว็บไซต์ที่ถูกบล็อกก็ใช้การเชื่อมต่อที่ไม่ใช่ VPN ด้วย!
เมื่อถึงเป้าหมายทั่วไปฉันมีความสุขแต่มันก็เป็นการดีที่ได้รู้ว่าทำไมมันไม่ทำงานอย่างถูกต้อง
ความคิดใด ๆ
สำหรับการอ้างอิงตอนนี้ฉันมีตารางเส้นทาง 3 เส้นทางหลักอินเทอร์เน็ตและ VPN รายชื่อของพวกเขามีดังนี้ ...
หลัก:
default via 192.168.0.1 dev eth0
10.38.0.1 via 10.38.0.205 dev tun0
10.38.0.205 dev tun0 proto kernel scope link src 10.38.0.206
85.removed via 192.168.0.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.73 metric 1
อินเทอร์เน็ต:
default via 192.168.0.1 dev eth0
10.38.0.1 via 10.38.0.205 dev tun0
10.38.0.205 dev tun0 proto kernel scope link src 10.38.0.206
85.removed via 192.168.0.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.73 metric 1
192.168.0.1 dev eth0 scope link src 192.168.0.73
VPN:
default via 10.38.0.205 dev tun0
10.38.0.1 via 10.38.0.205 dev tun0
10.38.0.205 dev tun0 proto kernel scope link src 10.38.0.206
85.removed via 192.168.0.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.73 metric 1