私たちは、顧客が私が働いている姓に関する一種のオーディオガイドをダウンロードできるアプリを提供します。
私は私たちの姓から(私たちが提供する無料のWi-Fi経由で)アプリをダウンロードするすべてのユーザーが私たちの姓の外側(私たちのネットワークの外側)のアプリサーバーからオーディオファイル全体をダウンロードしたくありません。
そこで私が調査したところによると、「動的」データのために無料Wi-Fi帯域幅を予約できるように、よく使うファイル(私の場合はMP3データ)をキャッシュするプロキシを構築しなければなりませんでした。
私はこれをしなければなりません。
- ネットワークを通過する負荷を制御/制限して、オフィスネットワークに影響を与えません。
- 無料Wi-Fiをスムーズに実行します。私たちは多くの顧客を持っており、無料Wi-Fiを提供しています。私たちの内部ネットワークは10GBitを使用し、インターネット帯域幅は約1Gbitです。
だから私はインターネットからMP3ファイルをダウンロードする必要なしに展開するためにプロキシを使用しようとしています。
質問:
- 私が探しているツールはSquidですか、それとも良いツールがありますか?
- すべての無料Wi-Fiユーザーが自動的にプロキシを使用するように強制する方法
- [オプション] このユースケースの経験です。
答え1
この目的のためにSquidを使用できますが、知っておくべきいくつかの問題があります。
Squidはまだ部分的なコンテンツキャッシュをサポートしていないため、アプリケーションがファイル全体をダウンロードするのではなく、スコープ要求を使用している場合は、いくつかの問題が発生します。スコープ要求に応じてキャッシュにファイル全体をインポートするようにSquidを設定できますが、その場合はファイル全体がダウンロードされるまでブロックされます。キャッシュされたオーディオファイルが古くなって新しいコピーをダウンロードする必要がある場合、アプリケーションユーザーは、アプリケーションがファイルを再生できるようにするために、サーバーがファイル全体をダウンロードするのを待つ必要があります。
アプリケーションはファイルをインポートするためにHTTPを使用する必要があります。それ以外の場合、プロキシがHTTPS接続を傍受しようとすると、プロキシの証明書を生成し、アプリケーションがそれを信頼できるようにしないと、証明書エラーが発生します。 HTTPS証明書エラーが発生し、できることはあまりありません。通常、ユーザーに明確に通知し、証明書のインストールを許可しない限り、HTTPSをブロックするのは悪い習慣です。
何も設定せずにクライアントトラフィックがSquidを通過するように強制するには、Squidをトランスペアレントプロキシとして設定し、ユーザーがインターネットにアクセスするために使用するゲートウェイで、いくつかのファイアウォールマジックを使用してすべてのHTTPトラフィックをSquidサーバーにリダイレクトする必要があります。
http_port 3128 intercept # enable transparent proxy mode
ゲートウェイの設定はファイアウォールによって異なります。 IPtablesの場合、Squidサーバーがユーザーと同じゲートウェイの背後にあると仮定すると、次のように動作します。
iptables -t nat -A PREROUTING -s <squid_server_IP> -p tcp --dport 80 -j ACCEPT # accept HTTP traffic from the Squid
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <squid_server_IP>:3128 # redirect your user's HTTP traffic to Squid
iptables -t nat -A POSTROUTING -j MASQUERADE # probably not needed since your gateway already has this
あなたは少し見なければなりません。イカの文書、これを行うために会社のファイアウォールを構成するいくつかの例があります。