web-dev-qa-db-ja.com

マークされたパケットをTunデバイスにリダイレクトする

さまざまなiptableルールに基づいて、パケットを選択してさまざまなことを行う必要がある小さなプログラムがあります。パケットは次のようにMARKされます。

iptables -t mangle -d 10.10.0.0/16 -j MARK --set-mark 4
iptables -t mangle -d 10.11.0.0/24 -j MARK --set-mark 5
iptables -t mangle -d 10.0.0.1     -j MARK --set-mark 1

また、ユーザースペースプロセスが何らかのI/Oを実行しているmaintunという名前のTunデバイスもあります。

影響を受けるパケットがmaintunとの間で送信されるようにするにはどうすればよいですか?

1
Jarmund

ポリシールーティングを使用します。

まず、いくつかのパケットにマークを付けます。

 iptables -A PREROUTING -t mangle -d 10.0.0.1 -j MARK --set-mark 1

次に、新しいルーティングテーブルを作成し、それをTunRoutTableと呼びます。

 echo 201 TunRoutTable >> /etc/iproute2/rt_tables

次に、1とマークされたパケットにテーブルTunRoutTableを使用するようにPCに指示します。

 ip rule add fwmark 1 table TunRoutTable

次に、新しいルーティングテーブルのデフォルトゲートウェイを提供します。

 ip route add default via XXX.YYY.WWW.ZZZ dev tun0 table TunRoutTable

ここで、XXX.YY.WWW.ZZZは、Tun0インターフェイス上のゲートウェイのIPアドレス(通常のドット付きクワッド表記)です。

3
MariusMatutiae