今回は昔からよくやる検証なのに、すぐ忘れてしまうSquidの設定について書きたいと思います。
プリセールスをで仕事をしていると、私が所属している会社のサービスをセキュアな場所から利用したいという要望が多くあります。
その時に、どのドメイン(URL)を許可すれば良いか?という話題になります。
自分の環境ではすぐに検証ができないので、Squidをローカル端末に入れて、Firefoxで検証するという手順をよく使っています。
この時にsquid.confをどう書くべきかすぐ忘れてしまうので、そのあたり含めて一通りの手順を残していきたいと思います。
ネットで調べても最近はsquidを話題にしている人も少ないのでどれだけニーズがあるかわかりませんが、誰かの参考になればと思っています。
前提
私が今回使用しのは下記の環境です。
- Mac mini M4
- Mac OS 15.4.1
- Firefox 138.0
- Homebrewはインストール済み
- squid 6.13
- Curlコマンドも利用可能
導入
- Squidのインストール
brew install squid
- Squidの起動
brew services restart squid
- 起動確認
brew services list
私の場合、ここでエラーが発生しました。
ERROR: Cannot open cache_log (/opt/homebrew/var/logs/cache.log) for writing;
fopen(3) error: (13) Permission denied
Logfile: opening log daemon:/opt/homebrew/var/logs/access.log
ERROR: logfileHandleWrite: daemon:/opt/homebrew/var/logs/access.log: error writing ((32) Broken pipe)
権限エラーだったので、フォルダを作成して権限を付与する手順に移行します。
- ログ、キャッシュディレクトリの作成と権限付与
sudo mkdir -p /opt/homebrew/var/logs
sudo mkdir -p /opt/homebrew/var/cache/squid
sudo chown -R $(whoami) /opt/homebrew/var/logs
sudo chown -R $(whoami) /opt/homebrew/var/cache/squid
- 設定ファイルの編集
/opt/homebrew/etc/squid.conf内のそれぞれの項目を下記で置き換えてください。
今回私は、Twilioのコンソールアクセスのために検証をしたので、acl allowed_sitesを下記のように追加していますが、皆さんは自分の検証したいURLを入れてください。
# アクセス許可するドメインを定義
acl allowed_sites dstdomain .twilio.com .auth0.com .cloudflare.com .twiliocdn.com .twilio.com .google.com
# 通信の基本設定
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
acl CONNECT method CONNECT
# 許可設定(順序が重要)
http_access allow localhost
http_access allow allowed_sites
http_access deny all
# ポート設定
http_port 127.0.0.1:3128
http_port [::1]:3128
# ログとキャッシュ
access_log /opt/homebrew/var/logs/access.log
coredump_dir /opt/homebrew/var/cache/squid
- Squid の再起動
brew services restart squid
- 起動確認
brew services list
エラーが出ないでSuccessになっていればOK
- 動作確認
curl -v https://www.twilio.com -x http://127.0.0.1:3128
→ TCP_TUNNEL/200 が access.log に出れば成功。
curl -v https://www.yahoo.co.jp -x http://127.0.0.1:3128
→ TCP_DENIED/403 になれば正常にブロックされている。
アクセスログの見方まとめ
tail -f /opt/homebrew/var/logs/access.log
状態コード | 意味 |
---|---|
TCP_TUNNEL/200 | 成功(HTTPS通過) |
TCP_DENIED/403 | アクセス拒否された |
ブラウザにプロキシ設定
設定手順
- Firefox を起動
- 右上の「≡」メニュー → 設定
- 下にスクロールして「ネットワーク設定」セクションまで進む
- 接続設定… をクリック
- 「手動でプロキシを設定する」を選択
- 以下のように入力:
項目 | 設定値 |
---|---|
HTTP プロキシ | 127.0.0.1 |
ポート | 3128 |
Firefoxを選んでいる理由
- *Firefoxは「アプリ内でプロキシ設定が完結」する
- ChromeやSafariはOS(macOSやWindows)全体のネットワーク設定に依存します。
- Firefoxはブラウザ単体で独立したプロキシ設定を持っているため、OS側の設定に関係なく挙動を変えられます
- *テストやデバッグに最適
- 開発時やSquidなどのプロキシ検証において、Firefoxだけプロキシを通す設定にすれば、他のアプリや通信には影響を与えずに検証できる
終わりに
以上でsquidの導入手順について説明を終わります。
もっといろんな機能がsquidにあるんですけど、ほとんど使ったことがありません。
自分はいつもProxyでフィルターする機能の検証のために使っています。また何か違う使い方をする時には、squidの記事をアップしたいと思います。