ウェブサイト検索

Linux で Squid キャッシュと Cisco ルーターを使用して Web トラフィックを制御する方法


ネットワークにおける重要なタスクの 1 つは、スタッフの Web サーフィン トラフィックの制御と管理です。この問題を処理できるソリューションは多数ありますが、最良のソリューションの 1 つは、Linux マシンで Squid キャッシュを使用することです。 Squid は、LAN からインターネットなど、あるネットワークから別のネットワークへの Web トラフィック フローを検査、制限し、キャッシュすることができます。

クライアントの Web リクエストを Squid マシンにリダイレクトする方法はいくつかあります。この記事では、WCCP プロトコルを使用して Web トラフィックを CISCO ルーターから Squid Cache マシンにリダイレクトする方法を説明します。

下の図は、基本的なシナリオの例です。

上の図でわかるように、すべてのクライアントの Web トラフィックは最初にCisco ルーター (デフォルト ゲートウェイです) に送られ、次にルーターが静かにパケットを Squid マシンにリダイレクトします。これで、Squid はその役割を果たすことができます。主な役割は次のとおりです。 Web コンテンツのキャッシュ、ドメイン、時間間隔、IP アドレス、ファイルのサイズなどに基づいたアクセスの制限。

このシナリオの構成を 2 つの主要な手順で確認します。まず、squid と Linux をインストールして構成し、次にWCCP プロトコルを使用して Web トラフィック パケットをイカにリダイレクトするようにルーターを構成します。

テスト環境

このシナリオでは、LINUX サーバーとしてCENTOS 6.5 を使用し、ルーター システムとしてCisco 2691 を使用します。

Operating System: CENTOS 6.5
Application: Squid
Router: Cisco 2691

ステップ 1: Squid キャッシュのインストール

Squid はCENTOS のデフォルト リポジトリで利用できます。最初に素敵な yum コマンドを使用してインストールし、次にサービスを開始し、最後に Squid サービスの自動開始を設定します。

yum -y install squid
service squid start
chkconfig squid on

ステップ 2: Squid キャッシュの準備

ここで、centos オペレーティング システムのデフォルトの動作をいくつか変更する必要があります。パケット転送を有効にし、リバース パス フィルター (RPF) を無効にする必要があります。パケット転送を有効にして、centos が透過的なフォワーダー (たとえば、 ルーター)。

さらに詳しく説明しますと、トラフィックが centos に到達すると、送信元アドレスと宛先アドレスが決まります。たとえば、クライアントがブラウザで www.example.com に入力すると、http リクエスト パケットが生成され、クライアント マシンの送信元 IP アドレス (192.168.1.20 など) と example.com サーバーの宛先 IP アドレス (2.2.2.2 など) があります。

そのため、centos がパケットを受信すると、centos の IP アドレスがパケットの宛先アドレスではないため、間違ったパケットとして検出されます。セキュリティ上の理由から、centos はパケットをドロップしますが、squid はトランスペアレント モードで動作するようにします。パケット転送機能を有効にすることで、この状況を centos に伝えます。

次に、リバース パス フィルタリングを無効にして、Squid マシンからアクセスできないパケット、または Squid マシンの同じサブネット内に IP アドレスを持たないパケットを CentOS が受け入れるようにする必要があります。

nano /etc/sysctl.conf
net.ipv4.ip_forward = 1 #set to 1 for enable the packet forwarding feature
net.ipv4.conf.default.rp_filter = 0 # set to 0 for disable the reverse path filter behavior

次に、CENTOS マシン上にGRE インターフェイスを作成する必要があります。何のために??さらに詳しく説明しますと、WCCP プロトコルはGRE トンネルを通じて動作します。つまり、ルーターと Squid の間の言語は GRE であるため、centos にはデプロイメント用の GRE インターフェイスが必要です。 GRE パケットをカプセル化します。

GRE インターフェイスの設定ファイルを「/etc/sysconfig/network-script/ifcfg-gre0 」パスに作成する必要があります。

ifcfg-gre0 設定ファイルに以下のコードを入力します。

DEVICE=gre0
BOOTPROTO=static
IPADDR=10.0.0.2         #unused ip address in your network
NETMASK=255.255.255.252
ONBOOT=yes
IPV6INIT=no

GRE インターフェイスを作成した後、ネットワーク サービスを再起動する必要があります。

service network restart

ステップ 3: Squid キャッシュの構成

ルーターからのWCCPパケットを受け入れるようにsquidに指示する必要があります。 /etc/squid/squid.conf ファイルに以下のコードを入力します。

http_port 3128 intercept                 # Define SQUID listening port
wccp2_router 192.168.1.254          #ip address of the router
wccp2_forwarding_method gre
wccp2_return_method gre
wccp2_service standard 0

設定ファイルを保存し、squid サービスを再起動します。

service squid restart

Squid は 3128 ポートでパケットをリッスンしますが、パケットの宛先ポート番号は 80 なので、宛先ポート 803128< に変更します。 の場合、CENTOS 統合ファイアウォール (iptable という名前) に NAT ルールを作成する必要があります。

iptables -t nat -A PREROUTING -i gre0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A POSTROUTING -j MASQUERADE

ステップ 4: Cisco ルーターの構成

まず、Cisco ルーターでWCCP を有効にする必要があります。

R1(config)# ip wccp version 2
Then we must use an ACL for introducing SQUID cache machine to router
R1(config)# ip access-list standard SQUID-MACHINE
R1(config-std-nacl)# permit host 192.168.1.10

次に、2 つの異なる目的のために別のアクセス リストを定義します。 まず、WCCP プロトコルによるリダイレクトから SQUID トラフィックを除外する必要があります(そうしないと無限ループに陥ります!!)。 次に定義します。どのLANトラフィックをWCCPSQUIDを通過させたいか。

R1(config)#ip access-list LAN-TRAFFICS
R1(config-ext-nacl)#deny ip host 192.168.1.10 any                            #Prevent SQUID to get in loop
R1(config-ext-nacl)#permit tcp 192.168.1.0 0.0.0.255 any equal www           #define LAN Traffics

アクセス リストを作成した後、ルータで WCCP プロトコルを設定する必要があります。

R1(config)# ip wccp web-cache redirect-list LAN-TRAFFIC group-list SQUID-MACHINE

最終ステップの準備はすべて整いました。WCCP 設定を使用して、どのインターフェイスでトラフィックをリダイレクトする必要があるかをルータに指示する必要があります。

R1(config)#interface fastEthernet 0/0
R1((config-if)# ip wccp web-cache redirect in

まとめ

理解を深めるために、すべてのコマンドとテキストを数行にまとめます。シナリオに従って、スタッフの Web サーフィン パケット (TCP ポート 80 上) をルーター (つまり、デフォルト ゲートウェイ) からリダイレクトします。クライアント)、WCCP プロトコルを使用して Squid キャッシュ マシンに送信します。

これらのプロセスはすべてサイレントに実行され、クライアント側で追加の構成は必要ありません。したがって、LAN 内の Web トラフィックの制御とポリシーの設定が可能になります。たとえば、限られた時間内で Web サーフィンへのアクセスを取得したり、最大ダウンロード サイズを制限したり、カスタム ブラックリストとホワイトリストを定義したり、インターネット アクティビティの使用状況に関する完全なレポートを生成したりできます。

このシナリオの興味深い事実の 1 つは、Squid マシンがダウンしたときにルーターがこの問題を検出し、それに向けたパケットのリダイレクトを停止するため、ネットワークでダウンタイムがゼロから楽しむことができるということです。

この記事に関してご質問がある場合は、下のコメント ボックスから返信を残してください。