はじめに

squidを使ってローカルにフォワードプロキシを立ててみる。

Dockerを利用するので、下記を利用する。
https://hub.docker.com/r/ubuntu/squid

環境

1
2
3
Windows 11 Pro
Docker Desktop 4.34.2 (167172)
squid 6.6

squidとは

squidは、ウェブプロキシサーバーの一種で、主にHTTPやFTPなどのプロトコルに対応している。   クライアントとウェブサーバーの間に位置して、キャッシュを行うことで、データの再取得を避けて通信の効率化を図る。アクセス制限やフィルタリング、負荷分散などの機能も持っており、企業や組織でのインターネット接続の管理や、トラフィックの最適化に使われる。

フォワードプロキシとしての利用ケース

Squidをフォワードプロキシとして使う場合、クライアントはSquidを経由してインターネット上のウェブサイトにアクセスする。
具体的な利用ケースとしては、以下のようなシチュエーションが考えられる

  • インターネットアクセス制御 組織や企業では、従業員のインターネットアクセスを管理するためにSquidを使う。例えば、特定のウェブサイトへのアクセスを禁止したり、アクセス可能な時間帯を制限したりすることができる。

  • コンテンツフィルタリング Squidを使って、特定の種類のコンテンツ(不適切なサイトや危険なサイトなど)をブロックすることができる。これにより、セキュリティの向上や業務外のサイト閲覧の抑制が可能になる。

  • キャッシュ機能による高速化 Squidは一度取得したウェブページやデータをキャッシュに保存し、次回以降のアクセス時にそのデータを再利用することで、サーバーへのアクセス時間を短縮できる。特に、頻繁にアクセスされるリソースに対して有効。

  • プライバシーの保護 クライアントのIPアドレスが直接外部のサーバーに送られることなく、Squidが代理として外部にリクエストを送信するため、クライアントのIPを隠すことができる。これにより、インターネット上での匿名性をある程度保つことが可能。

フォワードプロキシとしてのSquidは、クライアントと外部サーバーの間で仲介役を果たし、アクセス制御やセキュリティ強化、通信の最適化に利用される。

アクセスを一元管理できるので、そういう用途でもプロキシサーバは使われたりする。

構築

例によって Dockerで構築をする。

squid.confのオリジナルを取得する

※設定をカスタマイズする場合やデフォルトの設定を確認したい場合に必要

1
2
3
4
5
6
7
8
# ubuntu/squid:6.6-24.04_betaイメージからコンテナを立ち上げ
docker run --name temp-container -d ubuntu/squid:6.6-24.04_beta sleep 30

# コンテナから squid.confをカレントディレクトリにコピー
docker cp temp-container:/etc/squid/squid.conf .

# 立ち上げたコンテナの削除
docker rm temp-container

構成

1
├── compose.yml

compose.yml

1
2
3
4
5
6
7
8
9
services:
  squid:
    image: ubuntu/squid:6.6-24.04_beta
    container_name: squid
    restart: always
    ports:
      - "3128:3128"
    environment:
      - TZ=Asia/Tokyo

コンテナの起動

1
docker compose up -d

起動後、ログを追従するようにしておく。

1
docker compose logs -f

確認

http://localhost:3128 にアクセスをして、squidのページが表示されることを確認する。

1
curl -x http://localhost:3128 https://blog.k-bushi.com/

上記を実施し、curlコマンドが正常に実行できていればOK

参考

おわりに

squidを使ってみたかったのでDockerを利用してローカルに建ててみた。
課題として、Windowsのプロキシ設定からローカルのプロキシ経由で、Webサイトへのアクセスをすると応答しないという現象が起きた。
これに関しては調査したい。