私のネットワークに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フラグを設定します。これにより、アプリケーションのネットワークトラフィックが上記のポリシールーティングルールと一致しなくなります。