일부 ISP 제한 사항을 라우팅 할 수있는 새로운 VPN 연결 (openvpn 사용)이 있습니다. 제대로 작동하지만 VPN을 통해 모든 트래픽을 처리하고 있습니다. 이로 인해 다운로드 및 인터넷 액세스가 VPN에서 허용하는 것보다 훨씬 빠릅니다. ssh 서버를 실행하고 전화를 통해 다운로드를 예약 할 수있는 데몬이 실행 중입니다.
eth0에 기존 이더넷 연결이 있고 tun0에 새로운 VPN 연결이 있습니다.
192.168.0.0/24 네트워크에서 기존 eth0 연결을 사용하기 위해 기본 경로를 설정하고 기본 게이트웨이를 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를 사용하여 tun0을 통해 대상 포트 80 또는 443에 대한 모든 것을 강제하기 위해 사전 라우팅 또는 마스 쿼 레이 딩을 구성해야한다고 생각합니다. 다시 말하지만,이 작업을 수행하는 방법을 정확히 모르겠습니다!
내가 인터넷에서 찾은 모든 것은 훨씬 더 복잡한 것을 시도하고 있으며 나무에서 나무를 분류하는 것은 어렵다는 것을 증명합니다.
도움을 주시면 감사하겠습니다.
최신 정보
지금까지 다양한 출처에서 다음을 함께 모았습니다.
#!/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 개의 라우팅 테이블 (main, internet 및 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