Iptableは特定のTCP / UDPポートをVPN(tun1)にリダイレクトします。

Iptableは特定のTCP / UDPポートをVPN(tun1)にリダイレクトします。

Linuxベースのルータがあり、iptablesコマンドに基づいてVPNとispを介してトラフィックをルーティングするようにVPNクライアントを設定しました。 VPNを介して特定のtcpとすべてのudpポートのみをルーティングしようとし、tcpdumpを使用して確認しましたが取得できないようです。ここで動作するのは私が使ったコードです

iptables -t mangle -A PREROUTING -i br0 -p tcp -m multiport --dport ! 20,21,22,80,81,443,8080 -j MARK --set-mark 2

iptables -t mangle -A PREROUTING -i br0 -p udp -j MARK --set-mark 2

ここで、「2」はVPNテーブル(私の場合はテーブル10)、「1」はISPテーブル(テーブル100)です。

スクリプトには他のルーティング関連機能があり、特定のIPをVPNとKillスイッチに移動するのにうまく機能します。

概念は、ルータ自体(内部 "lan" 192.168.1.1)で急流クライアントを実行しようとしており、上記にリストされていないすべてのudpとすべてのtcpポートがVPNを使用し、残りの部分がVPNを使用したいということです。 isp

「入力出力」と「転送」オプションも使用する必要があるかもしれません。ただし、読み取った内容にもかかわらずポートを正しくルーティングできないようで、スクリプトが中断され終了します。ルータがクラッシュしたりインターネットに接続したりするために、VPNまたはISPを通過するトラフィックはまったく発生しません。

欲求不満のためにポート部分を削除したため、ポート部分のないスクリプトは次のとおりです。

#!/bin/sh

main() {

for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
  echo 0 > $i
done

ip route flush table 100

ip rule del fwmark 1 table 100

ip route del default table 100

ip rule del fwmark 2 table 10

ip route flush cache

iptables -t mangle -F INPUT

iptables -t mangle -F OUTPUT

iptables -t mangle -F FORWARD

iptables -t mangle -F PREROUTING

iptables -t mangle -F POSTROUTING

iptables -t mangle -F

ip route show table main | grep ^default | grep -Ev tun1 \
  | while read ROUTE ; do
      ip route add table 100 $ROUTE
done

ip route add default table 100 via 
$(nvram get wan_gateway)

ip rule add fwmark 1 table 100

ip rule add fwmark 2 table 10

ip route flush cache
}

int() {
iptables -t mangle -A PREROUTING -i "$1" -j MARK --set-mark 1
}

adr() {
iptables -t mangle -A PREROUTING -i br0 -s "$1" -j MARK --set-mark 2
}

kills() {
iptables -I FORWARD -s "$1" -o eth0 -j DROP
}

main

int br0

adr 192.168.1.115/32

adr 192.168.1.119/32

adr 192.168.1.147/32

kills 192.168.1.115/32

kills 192.168.1.119/32

kills 192.168.1.147/32

exit 0

私のルータはデフォルトでVPNの代わりにISPを介してトラフィックをルーティングするように設定されています。

ベストアンサー1

これを理解する1つの鍵は、ルータホストに入って来るパケットがiptablesルータを通過するパケットとは異なるパスをとることです。たとえば、Googleiptables-chains.pngでいくつかの画像を検索してフォローアップを行うことができます。http://jensd.be/wp-content/uploads/iptables_chains.png

概要画像の位置:http://www.linuxjournal.com/files/linuxjournal.com/ufiles/imagecache/large-550px-centered/u1002061/10822f1.pngルールを設定するのにも役立ちますiptables

特に、PREROUTINGこのテーブルの接続リストmangleは次の場合にのみ適用されます。着信パケットを転送する場合(リモートからリモートへ)、パケットが転送されるローカルからリモートへのトラフィックに適しており、発信パケットをルーターに送信したい場合に適しています。したがって、上記の初期ルール設定は、ローカルトラフィックをリモートトラフィックに転送するためにOUTPUTテーブルチェーンをターゲットにする必要があります。mangle

おすすめ記事