よくある質問・用語集

サーバ構築のデージーネットTOP > OSS情報 > よくある質問・用語集 > 用語集 > squidとは

  • もっと調べる
  • どうやって使う?

squidとは

Squidとは、プロキシサーバ(Proxy Server)、ウェブキャッシュサーバ(Web Cache Server)などに利用されているオープンソースソフトウェアである。RedHat Enterprise Linux、CentOS、Ubuntuなど、多くのLinuxディストリビューションで標準的に採用されている。当初はUNIX系OS向けに開発されていたが、現在はWindowsを含むほとんどのOSで利用可能であり、GNU GPLライセンス下で利用できる。

Squidという名称は、「いか」を意味している。複数のクライアントからの通信を集約し、いか足のようなシステム構成になることから命名されたと言われている。

Squidは、HTTP、HTTPS、FTPをはじめとする多くのプロトコルに対応している。また、Webキャッシュ機能により、特にフォワーディングプロキシとして利用される場合は利用する組織外へのウェブ系のトラフィックを削減することができる。

また最近では、SquidをOffice 365等のネットサービスの利用のためのインターネット回線の分離のためにも利用することも多くなり、再注目されている。

Squidの動作モード

Squidには、用途に合わせて次の3つのモードがある。

  • フォワーディングプロキシ
  • リバースプロキシ
  • 透過プロキシモード

フォワーディングプロキシ

Squidの最もポピュラーな機能がフォワーディングプロキシである。フォワーディングプロキシとは、インターネット上のウェブサーバなどに接続する際に、ウェブアクセスを中継する機能である。主にローカルネットワークの出口に設置される。クライアントは、ウェブブラウザの「プロキシ設定」で、squidをプロキシサーバとして指定する。

フォワーディングプロキシを利用する主な理由は次の通り。

なお、Squidは、フォーワーディングプロキシとして動作する場合には、標準ではTCP 3128ポートで動作する。ポート番号は設定ファイルで修正可能である。

多段プロキシ

Squidは、中継したウェブのリクエストを直接ウェブサーバに接続して処理するだけでなく、後段のプロキシサーバに中継する機能も持っており、これを多段プロキシという。Squidを使って、巨大なネットワーク内でプロキシの階層構造を組むことができる。また、外部のSaaSとして提供されているウィルスチェックプロキシへの中継としてSquidを使うこともできる。さらに、Squidに特定URLを設定し、上位のプロキシをバイパスするように設定することもできる。例えば、ウィルスチェックプロキシが処理できないURLがあるような場合に利用する。

リバースプロキシ

リバースプロキシとは、インターネットからのウェブアクセスを代表して受信し、内部にあるウェブサーバ群との通信を中継する機能である。Squidは、リバースプロキシとして動かすこともできる。リバースプロキシとして利用する場合には、Squidをウェブサーバ群の入り口部分に窓口として設置するのが一般的である。Squidでは、内部のウェブサーバの負荷分散を行ったり、URLごとにサーバを振り分けたりすることができる。特に後者の利用方法では、アプリケーションサーバを別々に用意している場合や、同一ドメインながらコンテンツを別々の開発会社が作成しそれぞれ別々のサーバに収容されている場合などによく用いられる。

また、リバースプロキシの機能を利用して、SquidでSSL/TLSのオフロードを行うこともできる。SSL/TLSで利用する証明書は有償であり、Webサーバの台数が増えるとコストがかかる。しかし、クライアントとSquid間はSSL/TLSでHTTPSによる暗号通信を行い、Squidが暗号をデコードすることで、証明書の使用をリバースプロキシサーバのみに限定できるというメリットがある。

透過プロキシ

透過プロキシとは、利用者がプロキシの存在を意識することなく利用できるプロキシのことであり、ネットワークの出口に設置されたルータなどと組み合わせて利用する。広い意味では、リバースプロキシも透過プロキシと見ることができる。技術的には、特定ポートへ向けたアクセスのみをルータから透過プロキシサーバに対して振り向け、透過プロキシは通常のHTTPなどのリクエストを受け付けたふりをして接続先のHTTPサーバへリクエストを中継する。Squidはこの機能をサポートしている。

Linuxサーバでは、Squidとiptablesのパケットリダイレクト機能と組み合わせることによって透過プロキシを実現することができる。

Squidのキャッシュ機能

Squidには、コンテンツをキャッシュする機能がある。キャッシュサーバとしての設定は、透過プロキシやリバースプロキシの場合にも使用することができる。

キャッシュの管理ポリシー

Squidは、デフォルトではキャッシュをメモリ上に取得する。しかし、利用可能なメモリには制限があるため、キャッシュサイズの上限やキャッシュ管理のポリシーを柔軟に設定できるようになっている。また、Squidでは、メモリキャッシュだけではなく、ディスクキャッシュも利用できる。ディスク上にキャッシュするデータの最小、最大サイズなどもチューニングが可能である。

キャッシュ管理ポリシーとしては、次の4つを利用できる。

  • LRU(Least Recentlry Used)〜 最も古くに使われたキャッシュをから削除する
  • heap GDSP(Greedy Dual Size Frequency)〜 もっとも利用確率の低いキャッシュを削除する
  • heap LFUDA(Least Freqently Used with Dynamic Aging)〜 もっとも利用された確率の高いキャッシュを残すが、サイズを考慮して破棄するデータを決める
  • heal LRU 〜 ヒープを利用したLRUポリシー

キャッシュの更新ポリシー

さらに、Squidでは、キャッシュしたデータの特性に合わせて、キャッシュの更新方法を設定することができる。URLのパターンを正規表現で指定して、キャッシュの有効期間やリフレッシュパターンなどを詳細に設定することができる。

キャッシュマネージャ

Squidには、キャッシュマネージャとよばれるキャッシュ管理用のページが付属している。キャッシュマネージャでは、キャッシュに関する統計情報が閲覧できる。

Squidキャッシュマネージャ

Squidを使ったセキュリティの強化

Squidでプロキシを構築する理由の1つが、組織内から組織外へのWebトラフィックに対するセキュリティを強化することである。

多彩なアクセス制御機能

Squidには、ACL(Access Control List)の機能がある。ACLを使用して、様々なアクセス制御を行うことができる。

  • 利用者に関するアクセス制御
    • クライアントIPアドレスをベースにアクセスを制御する機能
    • ユーザ認証によりアクセスを制御する機能
  • 接続先に関するアクセス制御
    • 接続先によってアクセスを制御する機能
  • アクセス制御の方法
    • 利用を許可もしくは不許可とする
    • 認証を必要とするかどうか
    • URLフィルタリングなど外部フィルタと連携するかどうか
    • 特に接続先URLに関して、実際の接続先を制御

これら以外にも多彩なアクセス制御が存在するが、これらの制御方法を組み合わせることにより、きめ細かにアクセスの振り分けや制御を行うことができるようになっている。

外部認証プログラムとの連携

Squidはユーザ認証などを行う機能をサポートしているが、実はSquid本体は、認証機構をすべて外部プログラムと連携して実現する仕組みになっている。下記のような標準パッケージにバンドルされている認証プログラムを利用することもできるし、より複雑な認証ポリシーを実現したい場合は認証プログラムを自作して利用することも可能だ。

  • パスワードのダイジェスト認証
  • SASL認証
  • SMB認証
  • Kerberos認証
  • LDAP認証
  • NIS認証
  • クライアント証明書での認証
  • ワンタイムパスワードでの認証

規制プログラムとの連携

SquidはURLフィルタリングなどのウェブリダイレクトプログラムと連携することができる。アクセス制御と組み合わせ、特定のユーザに対してURLフィルタリングをかけることで、ペアレントコントロールなどの機能を持たせることもできる。Squidは、規制プログラムとの連携では、ICAP(Internet Content Adaptation Protocol)をサポートしている。

アクセス監査

Squidには、キャッシュログとアクセスログの2つのログがある。そのうち、アクセスログには利用者が閲覧しているすべてのURLの情報が記録される。したがって、組織内からのすべてのWebアクセスをSquid経由にしておくことで、誰がどのサイトを閲覧したかという監査ログを残すことができる。

Squidのサポート

Squidは、多くのLinuxディストリビューションに採用されている。そのため、脆弱性が発見された場合のアップデートなども用意に入手できる。さらに、RedHat Enterprise Linuxなどの商用ディストリビューションを利用すれば、設定方法に関するQ&Aや、問題が発生した場合の問い合わせを受けることもできる。

デージーネットのサービス

デージーネットでは、Squidを使ったプロキシサーバの構築と、構築後のサポートを提供している。デージーネットは、インターネットサービスプロバイダのシステム構築の実績が多く、認証やセキュリティ配慮したシステム構築を手がけている。そのため、そうした厳しい環境でSquidを利用することも多い。特に、ISPでの利用に耐えられるURLフィルタリングやウィルスチェックの仕組みをオープンソースソフトウェアで構築する場合に利用している。これは、外部認証プログラムやICAPなどを使って外部と連携できる仕組みが用意されているからである。こうしたインタフェースを利用したカスタマイズなどの事例も多い。

【カテゴリ】:セキュリティ  オープンソースソフトウェア  

  • もっと調べる
  • どうやって使う?

関連用語

squidに関連するページ(事例など)


デージーネット用語集のページです。「squid」という用語と関連情報について説明します。「squid」について情報を収集する際、サービスをご検討いただく際などに用語集ページをお役立てください。

squidとは先頭へ