複数のゲートウェイがあり、宛先に応じて異なるゲートウェイからいくつかのトラフィックをルーティングしようとしています。 iproute2とiptablesルールを一緒に使用する必要があるようですが、どこから始めるべきかわかりません。
誰でも例をあげることができますか?
答え1
あなたはおそらくあなたが望むことをすることができますip route
:
ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0
最初はip route add
単一のIPアドレスを示し、指定されたイーサネットインターフェイス(ep3s8)をネクストホップルータ10.0.0.1に送信します。
2 番目のパスはネットワーク 10.xyz 全体で、指定されたイーサネット カード eth0 に転送されます。これは「ローカルネットワーク」で、ネクストホップルータはなく、すべて同じ論理ラインにあります。
しかし、何かをする前にまず読んでみたいと思いますman ip-route
。また、再起動する準備をしてリモートで再起動しないでください。リモートアクセスを終了する間違ったパスを簡単に作成できます。私はこの最後のアドバイスで経験の声を表明します。
答え2
policy-based routing
またはについてお問い合わせいただきましたsource-based routing
。持つ良い紹介著者: David Schwartz、のようなウェブサイト。
きちんとした小さなプログラムもあることを指摘したいです。ここで見つけることができます、特定のアプリケーションを特定のインターフェイスにバインドできます。もちろん、これは目的の受信アドレスにバインドするオプションを持つopensshなどのアプリケーションにとっては簡単です。ただし、このライブラリを使用すると、オプションがないアプリケーション(Firefoxなど)も指定されたIPアドレスにバインドできます。
これにより、すべてのアプリケーションに対して個別のルーティングテーブルを持つか、アプリケーションごとに同じ仕様を上書きするかを選択できます。
答え3
ソースベースのルーティングについて読むのに最適な場所は次のとおりです。Linux 高度なルーティングとトラフィック制御。
コマンドラインからドキュメントを読むこともできます。
man ip rule
man ip route
man ip-rule
注:一部のシステムでは、およびを実行する必要がありますman ip-route
。あるいは、オンラインで読むこともできます。 ルール そして 路線。警告:オンライン版はそうではないかもしれませんまったく同じ
システムのバージョンに合わせて。
通常、ルールを追加する必要があります。例では、インターフェース(eth1)を指定しました。これはオプションなので省略できます。
# ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000
分解:
dev eth1
– パケットを送信するために使用されるデバイスto 170.10.0.10
- 目的地table 2
– パスを追加するテーブルpriority 20000
– ルールの優先順位
次のコマンドを実行してルールを表示できます。
# ip ru sh
0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default
次に、パスを追加し、パスを追加するテーブルを指定する必要があります。この場合は表2になります。
# ip route add table 2 via 170.10.0.1 default
パスを表示するには、以下を実行する必要があります。
# ip route show ta 2