Squidを使用して、ubuntu 10.04サーバーを透過プロキシとして設定できるようになりました。思ったとおりに機能しますが、深刻な問題があります...
両方のイーサネットカードでインターネットに接続する機会があります(2つの異なるisps)が、このサーバーですべてのインターネット要求を処理するためにeth1のみを使用したいと思います。
したがって、最終的なスキームはeth0を使用してすべての着信プロキシ要求を収集し、squidがeth1の超高速接続を使用してインターネットから情報を収集できるようにします。
問題は、eth0にファイアウォールが接続されていることです。このファイアウォールにより、ブランチオフィスはwifiブリッジを使用してプロキシにアクセスできます。
ブランチオフィスとプロキシ間の通信を確保するために、eth0のデフォルトゲートウェイとしてファイアウォールを設定する必要があります。ファイアウォールは、残念ながらインターネット接続も提供します(ただし低速です)。 Squidは完全にeth0を使用してリクエストを収集し、インターネットからデータを取得します。
一意の正しいデフォルトゲートウェイを設定できません。その場合、wifiブリッジを使用してブランチオフィスにパケットを送り返さないためです。
私は自分の貧しい説明のためにすみませんが、もう少し明確になっているといいのですが。
私の実際のルートは次のとおりです:
Kernel IP routing table`
Destination Gateway Genmask Flags Metric Ref Use Iface
193.206.x.x * 255.255.255.0 U 0 0 0 eth1
128.0.x.x * 255.255.0.0 U 0 0 0 eth0
default 128.0.x.x 0.0.0.0 UG 100 0 0 eth0
default 193.206.x.x 0.0.0.0 UG 100 0 0 eth1
ヒントはありますか?
詳細が必要な場合は投稿します。
コマンドプロンプトから:
Sudo route add default gw i.p.add.ress eth1
次に、/etc/network/interfaces
、次の行を追加します:
up route add default gw i.p.add.ress eth1
もちろん、i.p.add.ress
両方の行でゲートウェイのIPを使用します。
ルートを削除する必要がある場合は、「add」を「del」に変更するだけです。例:
(command) Sudo route del default gw 128.0.x.x eth0
(/etc/network/interfaces) up route del default gw 128.0.x.x eth0
Routeコマンドを使用して、ブランチオフィスの静的ルートを設定することもできます
route add -net (network_id/prefix) GW (gateway) (interface)
2つの問題があります。最初に、squidに正しいソースIPアドレスを使用させる必要があります。次に、そのソースIPアドレスを持つパケットが正しいゲートウェイ(ソースルーティング)に誘導されることを確認する必要があります。
最初の問題はSquidの問題です。 Squidのtcp_outgoing_address
を使用して、ソースIPアドレスを正しいアドレスに設定できます。
tcp_outgoing_address 128.0.x.x
2番目の問題は、システム構成の問題です。 128.0.x.xの送信元アドレスを持つパケットを193.206.x.xゲートウェイに送信したり、その逆をしたりしたくない場合。これはsource routing
と呼ばれ、iptables
で実行されます。
それを行うためのより洗練された方法は、2つのルーティングテーブルを持つことです。 1つは128.0.x.xの送信元アドレスを持つパケットに使用され、128.0.x.xゲートウェイへのデフォルトルートを持ちます。逆も同様です。 http://wlug.org.nz/SourceBasedRouting