1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

macOSでSquidプロキシを構築して特定ドメインだけ許可する方法

Posted at

今回は昔からよくやる検証なのに、すぐ忘れてしまうSquidの設定について書きたいと思います。
プリセールスをで仕事をしていると、私が所属している会社のサービスをセキュアな場所から利用したいという要望が多くあります。
その時に、どのドメイン(URL)を許可すれば良いか?という話題になります。
自分の環境ではすぐに検証ができないので、Squidをローカル端末に入れて、Firefoxで検証するという手順をよく使っています。
この時にsquid.confをどう書くべきかすぐ忘れてしまうので、そのあたり含めて一通りの手順を残していきたいと思います。

ネットで調べても最近はsquidを話題にしている人も少ないのでどれだけニーズがあるかわかりませんが、誰かの参考になればと思っています。

前提

私が今回使用しのは下記の環境です。

  • Mac mini M4
  • Mac OS 15.4.1
  • Firefox 138.0
  • Homebrewはインストール済み
  • squid 6.13
  • Curlコマンドも利用可能

導入

  1. Squidのインストール
brew install squid
  1. Squidの起動
brew services restart squid
  1. 起動確認
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)

権限エラーだったので、フォルダを作成して権限を付与する手順に移行します。

  1. ログ、キャッシュディレクトリの作成と権限付与
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
  1. 設定ファイルの編集
    /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
  1. Squid の再起動
brew services restart squid
  1. 起動確認
brew services list

エラーが出ないでSuccessになっていればOK

  1. 動作確認
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 アクセス拒否された

ブラウザにプロキシ設定

設定手順

  1. Firefox を起動
  2. 右上の「≡」メニュー → 設定
  3. 下にスクロールして「ネットワーク設定」セクションまで進む
  4. 接続設定… をクリック
  5. 「手動でプロキシを設定する」を選択
  6. 以下のように入力:

SCR-20250518-rmfw.png

項目 設定値
HTTP プロキシ 127.0.0.1
ポート 3128

Firefoxを選んでいる理由

  • *Firefoxは「アプリ内でプロキシ設定が完結」する
    • ChromeやSafariはOS(macOSやWindows)全体のネットワーク設定に依存します。
    • Firefoxはブラウザ単体で独立したプロキシ設定を持っているため、OS側の設定に関係なく挙動を変えられます
  • *テストやデバッグに最適
    • 開発時やSquidなどのプロキシ検証において、Firefoxだけプロキシを通す設定にすれば、他のアプリや通信には影響を与えずに検証できる

終わりに

以上でsquidの導入手順について説明を終わります。
もっといろんな機能がsquidにあるんですけど、ほとんど使ったことがありません。
自分はいつもProxyでフィルターする機能の検証のために使っています。また何か違う使い方をする時には、squidの記事をアップしたいと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?