ゲートウェイのクライアントベースのルーティング

ゲートウェイのクライアントベースのルーティング

eth0とtun0という2つのインターフェースを持つネットワークゲートウェイ(Debian)があります。通常、すべてのクライアントからのすべてのトラフィックは tun0 経由でルーティングされます。

次の方法で変更したいと思います。

  • クライアントaからのトラフィックはeth0を介してのみルーティングされます。
  • クライアントbのトラフィックはtun0を介してのみルーティングされます。
  • 他のすべてのクライアントは、存在する場合はtun0を介してルーティングされ、tun0が利用できない場合はeth0を介してルーティングされます。

現在、ゲートウェイ自体から特定のトラフィックをルーティングするためにiptablesを使用していますが、それを「クライアントベースの」ルーティングに変更する方法がわかりません。

- - 更新 - -

  • クライアントAは固定IPアドレスを持ちます。
  • クライアントBは固定IPアドレスを持ちます。
  • eth0には動的IPアドレスがあります
  • tun0には動的IPアドレスがあります

ベストアンサー1

Ferencユーザーがすでに述べたように、ポリシールーティングはおそらく最良の解決策です。

見てくださいip rule。通常は次のようになります。

# ip rule
0:      from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

これは、ルールの優先順位とルールの仕様が順番にリストされたリストです。localとボールルーティングテーブルですmaindefault特定のルートテーブルを表示するには、ショートカットまたはip route show table <table>を実行してくださいip r s t <table>

異なる送信元 IP を異なる宛先またはデバイスにルーティングするには、個別のルートが必要です。テーブルとルーティングルールこのテーブルに移動してください。

IP 10.0.0.42 への特別ルートとネットワーク 10.0.0.128/25 への特別ルートが必要であるとします。 2つを追加で作成する必要があります。ルールそして他の二人テーブル、順序は重要ではありません。ルールを作成しましょう。例:

# ip rule add from 10.0.0.42 lookup 300 prio 5
# ip rule add from 10.0.0.128/25 lookup 301 prio 6

それらを見てみましょう:

# ip rule
0:  from all lookup local 
5:  from 10.0.0.42 lookup 300 
6:  from 10.0.0.128/25 lookup 301
32766:  from all lookup main 
32767:  from all lookup default

300テーブル名です(テーブルは通常数値ですが、301追加して名前を付けることもできます/etc/iproute2/rt_tables)。残りは自明でなければなりません。

今、私たちはこのフォームに記入する必要があります。例:

# ip route add default via 10.0.0.1 dev eth1 table 300
# ip route add 192.168.178.0/24 dev eth2 table 301

それらを見てみましょう:

# ip route show table 300
default via 10.0.0.1 dev eth1 scope link 
# ip route show table 301
192.168.178.0/24 dev eth2 scope link

ご覧のとおり、必要なパスを追加できます。アドレス 10.0.0.42 のシステムは、eth1 経由で 10.0.0.1 にルーティングされます。ネットワーク10.0.0.128/25のシステムは、eth2を介してルーティングされます。もし宛先アドレスは内部ネットワーク 192.168.178.0/24 です。

特殊ルートテーブルに一致するルートがない場合は、次のルーティングルールが評価されます。たとえば、ネットワーク 10.0.0.128/25 のシステムが 192.168.178.0/24 にルーティングしたくない場合は、基本テーブルに置き換えられます。

ルールを削除するaddには、に置き換えますdel。すべてのパスを削除するまで、ルートテーブルは存在します(たとえば、次のようにip route flush table <table>実行します)。見たいならみんなその後、ルーティングルールを実行しますip route show table all

ルーティングルールは非常に柔軟性があり、着信/発信インターフェイス、送信元/宛先ポート、およびプロトコルなどの他のさまざまなセレクタを使用できます。man ip rule詳細より。

SSHを使用してパスとルールを編集するときに自分自身をロックしないように注意してください。

おすすめ記事