🎉
プロキシサーバ(Squid)コンテナでドメインフィルタを動作確認@Docker on Ubuntu 22.04.4
目的
- 簡易的なプロキシサーバを作成したい
- Squidの構築は面倒なのでDocker Hubで公開されているコンテナイメージを使う
- Docker Desktopはライセンスの考慮が必要なので気にせず使いたいのでDocker Engineのみ
- 動作確認として、任意のドメインフィルタを読み込ませたい
Docker環境構築
Linux環境
- Ubuntu Server 22.04.4 (Minimized Install, OpenSSH Enable)
UbuntuでDocker Engineのインストール
今回はDocker公式手順
dockerコマンドをsudoなしで実行できるようにする
$ getent group docker
docker:x:999
$ sudo usermod -aG docker $USER
$ getent group docker
docker:x:999:kasumic
このままだとPermission Errorが出るので、一度ログアウトする
コンテナ準備
squidイメージの取得
プロキシサーバ用ソフトウェアとしてsquidを使う
Canonical公式のイメージを取得
$ docker pull ubuntu/squid
コンテナ実行テスト
外部から8080ポートで待ち受けるようしてコンテナを起動する
$ docker run -d --name proxy -p 8080:3128 ubuntu/squid
squidログの出力
接続ログをコンソールへ垂れ流す場合
$ docker logs -f proxy
コンテナの停止
$ CONTAINER_ID=`docker ps --filter name=proxy --format "{{.ID}}"`
$ docker stop $CONTAINER_ID
$ docker rm $CONTAINER_ID
squidの設定
初期のsquid.conf取得(イメージからのファイル抜出)
フィルタ設定を追加するためにコンテナイメージ内のsquid.confを取得する
イメージ内のsquid.confの場所は公式イメージ情報に記載がある
$ CONTAINER_ID=`docker ps --filter name=proxy --format "{{.ID}}"`
$ docker cp $CONTAINER_ID:/etc/squid/squid.conf .
拒否するドメインリストを作成
blacklist
qiita.com
google.com
squid.confに追記
squid.conf
acl blacklist dstdomain "/etc/squid/blacklist"
http_access deny blacklist
独自設定を読み込ませてコンテナ実行
docker run時に設定ファイルを読み込ませる
$ docker run -d --name my-squid -v ./squid.conf:/etc/squid/squid.conf -v ./blacklist:/etc/squid/blacklist -p 8080:3128 ubuntu/squid
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
614ed27fe6f8 ubuntu/squid "entrypoint.sh -f /e…" 3 minutes ago Up 15 seconds 0.0.0.0:8080->3128/tcp my-squid
動作確認
ブラウザのプロキシ設定を変更して拒否リストに設定したドメインへアクセスしてみる
ちゃんと拒否されている
設定変更した場合の再実行方法
$ docker restart my-squid-container
まとめ
コンテナを利用することで簡単にプロキシサーバを準備することができました。
セットアップ済みで公開されているコンテナイメージに(Dockerfileを使ってbuildするほどではない)ちょっとした設定ならこれぐらいでいいでしょう
Discussion