【Docker】Squid(プロキシサーバ)を起動・動作確認するまでの構築手順

DockerでSquidのコンテナを構築から動作確認するまでをまとめました。

「Docker」Squid(プロキシサーバ)起動手順

Squidはプロキシサーバ、ウェブキャッシュサーバなどに利用されるフリーのソフトウェアです。
Squidの用途は重複リクエストに対応したキャッシュ応答によるウェブサーバの高速化や踏み台サーバなど多岐にわたり利用できます。

今回はSquidをパッケージインストールや設定をするのではなく、Dockerのイメージコンテナを利用して簡単に利用できるまでの手順を紹介します。

Squidの構築手順は以下のページを参考にしてください。

Dockerイメージダウンロード・起動まで

今回のSquidのDockerイメージは以下URLをを参考にしています。

参考URL
https://hub.docker.com/r/minimum2scp/squid

「squid」起動

起動は以下のコマンドを実行します。

$ docker run --restart always --name proxy-squid -d -p 3128:3128 minimum2scp/squid

以下のようなエラーメッセージが発生した場合

上記コマンドを実行時エラーが発生する場合があります。
以下の例ではすでにSquidで利用するポート(3128)がすでに利用されているので使用できないということが書かれています。

$ docker run --restart always --name proxy-squid-2 -d -p 3128:3128 minimum2scp/squid
6a1cb8d60a27ba8a28544555f488ba3deb25d6663ef8a552c9214b51b0100d85
docker: Error response from daemon: driver failed programming external connectivity on endpoint proxy-squid-2 (73a6c9d8a7c0ef240424ee7c598e56ae6b0a13e87d22e17fe177d734acb7c2f6): Error starting userland proxy: listen tcp4 0.0.0.0:3128: bind: address already in use.

すでに該当のポートが使用されているため利用できない場合は以下のように別ポートを使用して起動します。

※ポート(3129)を使用してDockerコンテナを起動

$ docker run --restart always --name proxy-squid -d -p 3129:3128 minimum2scp/squid

「squid」起動確認

「squid」コンテナが正常に起動していることを確認します。

$ docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS                                               NAMES
f27a7d7e95a1   minimum2scp/squid   "/opt/init-wrapper/s…"   8 minutes ago   Up 8 minutes   22/tcp, 0.0.0.0:3129->3128/tcp, :::3129->3128/tcp   proxy-squid

ファイイアウォールで対象ポート「3128」が許可されていることを確認します。
許可されていない場合は、ポートを開放します。

$ firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client http https postgresql ssh
  ports: 3128/tcp
  protocols:
  forward: no
  masquerade: yes
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

「Squid」プロキシサーバーを利用した動作確認コマンド

ローカルPCで、以下コマンドを実行します。
ローカルPCの3129ポートを指定し、Googleへのアクセスを確認します。

$ curl  --proxy http://localhost:3129 https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

上記のように正常に対象URLへのアクセスができたことが確認できます。

「Squid」プロキシサーバのログ確認

「Squid」プロキシサーバ側でのログを確認します。

以下のコマンドを使用し、squidコンテナへアクセスします。

$ docker exec -it proxy-squid /bin/bash
root@f27a7d7e95a1:/#

アクセスログ

アクセスろぐは以下コマンドで「access.log」を確認します。

root@f27a7d7e95a1:/# cat /var/log/squid/access.log
1649313679.845     91 172.17.0.1 TCP_TUNNEL/200 8044 CONNECT google.com:443 - HIER_DIRECT/172.217.161.78 -

プロキシサーバーを経由したGoogleへのアクセスログが確認できます。

Dockerの「Squid」プロキシサーバの構築・動作確認手順は以上となります。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!