web-dev-qa-db-ja.com

Iptablesは特定のポートをVPNの外部にルーティングします(Tomatoルーターファームウェア)

ルーターを自分にぴったりのセットアップに設定しようとしています。ルーターをVPNプロバイダー(PIA)に接続し、iptablesを介してVPN経由で接続するコンピューターが1台だけになるようにルーティングしました(回答#4 https://serverfault.com/questions/382498/howtoを参照) -only-tunnel-specific-hosts-route-through-openvpn-client-on-tomato )。私はIPtablesの経験がありません。

私はゲームをしますが、VPNを使用することによる余分な遅延は望ましくありません。 VPNなしでWAN)を直接通過するように特定のゲームポートをルーティングするにはどうすればよいですか。

私はこのガイドを見つけました(最初の回答 http://www.linksysinfo.org/index.php?threads/route-only-specific-ports-through-vpn-openvpn.37240/ )、しかし私はそれを私の状況に適用することができません。

私の現在のIPTableスクリプトはこれです。これは、VPNを介して正しいコンピューターのみをルーティングします。

sleep 30
ip route flush table 200
ip route flush cache
ip rule add from 192.168.1.143 lookup 200
VPN_GW=`ifconfig tun11 | awk '/inet addr/ {split ($2,A,":"); print A[2]}'`
ip route add table 200 default via $VPN_GW dev tun11

では、VPNコンピューター(.143)がポート27000:27050のトラフィックに直接接続を使用するようにこれを拡張するにはどうすればよいですか?

2
user2976206

まず、iptablesルールをmark特定のパケットに追加します。

iptables -t mangle -A PREROUTING -p tcp --dport 27000:27050 -j MARK --set-mark 0x200
iptables -t mangle -A PREROUTING -p udp --dport 27000:27050 -j MARK --set-mark 0x200

(TCPポートまたはUDPポートのどちらが必要かを指定しなかったので、ここに両方あります。)

次に、マークに一致するポリシールーティングルールを追加します。

ip rule add fwmark 0x200 lookup main

他にも考えられる組み合わせがあります。たとえば、VPN用のすべてのパケットにマークを付けます(既存のfromルールを不要にします)。

2
user1686