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