特定のトラフィックを別のゲートウェイにリダイレクトする

特定のトラフィックを別のゲートウェイにリダイレクトする

異なる ISP を持つ 2 つのゲートウェイがあり、1 つは LAN ユーザーのデフォルトとして定義され、もう 1 つはサーバーと VPN トラフィックのデフォルトとして使用されます。これは、DHCP で構成された通常のルーティング テーブルを使用して行われます。

今、私は、大量のアップロードを使用する LAN ユーザーのラップトップにインストールされている Google ドライブやその他のソフトウェア トラフィックが、常に、デフォルトの GW として定義されていない他の ISP を使用するようにしたいと考えています。どうすればこれを実現できますか?

私の最初の考えは、IPTABLES または squid を使用することです。

私はこれを試してきました

iptables -t nat -A PREROUTING -d GOOGLE_IP -j DNAT --to-destination MY_SECOND_ISP
iptables -t nat -A POSTROUTING -s MY_SECOND_ISP -j SNAT --to-source GOOGLE_IP
iptables -t nat -A POSTROUTING -s MY_SECOND_ISP  -j MASQUERADE

しかし、それは機能しません。テストすると、トラフィックはデフォルトのGWに送られます

iptables、shorewall、または squid を使用してこれを行う方法をご存知ですか?

答え1

LAN のデフォルト GW (GW1) LAN IP が 192.168.1.1、サーバーのデフォルト GW (GW2) LAN IP が 192.168.1.2 であると仮定します。つまり、LAN は両方のルータを同じセグメント上に認識します。

GW1 上で、宛先が GOOGLE_IP であるトラフィックを次のホップ GW2 LAN IP アドレスに向ける静的ルートを設定できます。

GW1がCiscoの場合: ip route GOOGLE_IP 255.255.255.255 GW2_LAN_IP

GW1がLinuxの場合: ip route add GOOGLE_IP/32 gw GW2_LAN_IP

このように、LAN 上の任意のホストが GOOGLE_IP にトラフィックを送信すると、トラフィックは GW1 に送信されます。

次に、GW1 上の静的ルートがトラフィックを GW2 に転送します。

次に、GW2 はトラフィックを WAN インターフェイスから転送します。

インターネットから GW2 への戻りトラフィックは LAN に転送され、ホストに到達します。

この方法では、GW1 にルートを 1 回作成するだけで、すべての LAN ホストで機能するようになります。

答え2

Google ドライブなどのサービスはクラウド上にあり、IP はいつでも変更される可能性があるため、あなたのアプローチは遅かれ早かれ機能しなくなると思います。

ゲスト OS レベルで DSCP マーキングを行うことで、必要なアプリケーションのトラフィックを区別する別の方法があります。

DSCP マークはパケット自体に「添付」されるため、それらのパケットをルーターの iptables と照合し、VPN または任意の他のゲートウェイ経由でルーティングできるようになります。

こうすることで、たとえば googledrive.exe (または任意のアプリケーション) は、どこに接続しようとしても常に VPN 経由でルーティングされることになります。

Windowsを使用してカスタムDSCPマークを設定する方法についての手順は次のとおりです。 https://support.timso.com/index.php?/Knowledgebase/Article/View/24/3/windows-7-and-implementing-qos

iptables の --dscp 一致オプションを使用して、dscp マークを一致させることができます。
http://www.iptables.info/en/iptables-matches.html#DSCPMATCH

もちろん、上記のすべてが元の質問に対する答えではありません。ポリシー ルーティングを機能させる必要があります。

関連情報