アプリケーションごとに異なるデフォルトゲートウェイを設定できますか?

アプリケーションごとに異なるデフォルトゲートウェイを設定できますか?

私のネットワークに2つの異なるアクティブなタスクゲートウェイを持つコンピュータがあるとしましょう。私たちは、これをより広いインターネットの世界に先んじて企業ネットワークにすべてをルーティングするISPおよびスタンドアロンVPNデバイスによって提供される10.0.0.1インターネットの「一般」ゲートウェイと呼びます。10.0.0.2これの副作用は、他の地理的位置でオンラインで表示されることです。

このネットワークでは、ユーザー(または管理者)は、DHCPサーバーが通知する内容または設定することにした場合に使用するゲートウェイを選択できます。これは多くの人にとって便利です。ゲートウェイを介して本国でより高速で短い待ち時間でインターネットにアクセスし、ゲートウェイを介してA内部リソース(および米国のインターネット)にアクセスできますB

このネットワークでLinuxを実行しているシステムでは、ネットワークのルーティングを変更できますか?アプリケーションごとベース?私は私たちができることを知っていますホストごとip routeパケットを送信する場所を事前に知っていますが、あるアプリケーション(Firefoxなど)を開いてすべてのパケットをゲートウェイに送信し、別のAアプリケーション(Chromiumなど)をゲートウェイに送信したい場合はどうすればよいですかB

これは、VLAN、VM(またはコンテナ)、および仮想ネットワークアダプタを使用して明らかに可能ですが、「ベアメタル」回答があるかどうかを知りたいです。

答え1

他のユーザーを使用する場合は、小規模なLinuxポリシールーティング構成を使用してこれを実行できます。

VPNデバイスゲートウェイを使用するアプリケーションのユーザーとしてユーザーuid 1001を使用しているとします。また、デフォルトのルーティング設定が非常に単純で、追加するポリシールーティングの設定を妨げないと仮定します。

VPNアプリケーションを使用するには、特別なパスを追加してください。

ip route add default via 10.0.0.2 table 110

ポリシールーティングを使用して、uid 1001を持つユーザーにこの特別なパスを適用します。

ip rule add uidrange 1001-1001 lookup 110 pref 29000

注:同じDNSサーバーを引き続き使用します。これを変更する方法はありますが、Linux名前空間を使用する方が良いかもしれません。

注:一部のアプリケーション(Tracerouteなど)は、バイナリにsetuidフラグを設定します。これにより、アプリケーションのネットワークトラフィックが上記のポリシールーティングルールと一致しなくなります。

関連情報