回答:
あなたはおそらくあなたが望むことをすることができます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
は、特定のイーサネットインターフェイス(ep3s8)からネクストホップルーター10.0.0.1に送信された単一のIPアドレスを示しています。
2番目のルートは、ネットワーク全体10.xyzで、特定のイーサネットカードeth0から送信されます。これが「ローカルネットワーク」です。これにはネクストホップルーターがなく、すべて同じ論理ワイヤー上にあります。
man ip-route
しかし、何かをする前に読みたいと思います。また、リブートする必要があることを覚悟し、これをリモートで実行しないでください。リモートアクセスを終了させる不正なルートを非常に簡単に作成できます。私はこの最後の勧告における経験の声です。
何について、あなたは求めていることはありますpolicy-based routing
かsource-based routing
。このまったく同じサイトに、David Schwartzによる優れた紹介があります。
特定のアプリケーションを特定のインターフェイスにバインドできるようにする、きちんとした小さなプログラムもここにあります。もちろん、これは、目的のリスニングアドレスにバインドするオプションがあるopensshのようなアプリで簡単です。ただし、このライブラリを使用すると、そのようなオプションのないアプリケーション(Firefoxなど)でも、指定したIPアドレスにバインドできます。
このようにして、すべてのアプリケーションに個別のルーティングテーブルを提供するか、アプリケーションごとに同じ仕様を上書きするかを選択できます。
ソースベースルーティングについて読むのに適した場所はLinux Advanced Routing&Traffic Control
です。マニュアルも読むことができます。
man ip rule
man ip route
一般に、ルールを追加する必要があります(デモ目的でインターフェースeth1を追加しましたが、省略できます)
#ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000
現在地:
DEV eth1の -パケットを送信するために使用されるデバイス
170.10.0.10に -先の
表2 -あなたのルートをお尻する必要があり、テーブル
の優先順位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