【Squid講座 第8回】最終回!トラブルシューティング完全ガイドとPACファイルによる冗長化構成

プロキシが止まると、会社が止まる。

こんにちは!「LINUX工房」管理人の「リナックス先生」です。
全8回にわたるSquid講座も、今回でついに最終回です。

これまで、構築からACL、認証、SSL、キャッシュ、ログ解析、フィルタリングと、Squidの機能を使い倒してきました。
しかし、運用を続けていると必ず直面するのが「障害」です。

コウ君

先生、実は昨日ヒヤッとしたんです。
Squidの設定をいじっていたら再起動に失敗してしまって…。
その瞬間、社内の全員から「ネットに繋がらない!」「仕事にならない!」って電話が殺到して、泣きそうになりました。
サーバーが1台しかないと、こういう時に怖いですね。

リナックス先生

それがインフラエンジニアの宿命よ、コウ君。
プロキシは社内ネットワークの「唯一の出口」になりがちだから、ここが詰まると全業務が停止するわ。
だからこそ、トラブルを瞬時に解決する技術と、そもそもサーバーが落ちてもネットを止めない「冗長化(冗長構成)」の仕組みが必要なの。
最後は、プロとして一番大事な「可用性」の話で締めくくりましょう!

今回は、Squid運用の総決算。
よくあるエラーの解決フローと、ブラウザの設定を自動化し、予備サーバーへの自動切り替えを実現する「PACファイル」の技術を徹底解説します。


第1章:Squidが起動しない!緊急対応フロー

設定変更後に再起動したらエラーが出た。そんな時は焦らず、以下の手順で原因を特定します。

1. 構文チェックコマンド「squid -k parse」

設定ファイル(squid.conf)に書き間違いがないか、Squid自身にチェックさせます。
これは再起動前に必ず実行する癖をつけてください。

sudo squid -k parse

エラーがある場合、以下のように行番号付きで教えてくれます。

2026/01/20 10:00:00| FATAL: Bungled /etc/squid/squid.conf line 55: http_access alow localnet

(↑ allow のスペルミス(alow)がある、と教えてくれています)

2. デバッグモードで起動「squid -N -d 1」

systemctlで起動するとエラーメッセージが見えにくい場合があります。
そんな時は、Squidをフォアグラウンド(手前)で起動し、エラーを画面に直接出させます。

# まずサービスを止める
sudo systemctl stop squid

# デバッグモードで起動(Ctrl+Cで終了)
sudo squid -N -d 1
  • -N : デーモン化しない(フォアグラウンド実行)
  • -d 1 : デバッグレベル1でログを画面出力

これで「どのファイルの読み込みでコケているか」「権限エラーが出ていないか」が一目瞭然になります。

3. 重要ログ「cache.log」を見る

アクセスログ(access.log)ではなく、Squid自身のシステムログを見ます。

sudo tail -n 50 /var/log/squid/cache.log

ここに FATAL(致命的エラー)や ERROR の文字があれば、それが原因です。


第2章:よくあるエラートラブルシューティング

Case 1: “Address already in use”(起動失敗)

原因: ポートが既に使われています。
Squidがゾンビプロセスとして残っているか、Apacheなどが同じポート(8080など)を使っている可能性があります。

解決策:

# ポートを使っている犯人を探す
sudo ss -lntp | grep 3128

# プロセスをキルする
sudo kill -9 [プロセスID]

Case 2: “Permission denied”(起動失敗)

原因: ファイルの権限設定ミス。
特に、SSL証明書やログファイル、キャッシュディレクトリの所有者が root になっていて、Squidユーザーが読み書きできないケースが多いです。

解決策:

# 一括で所有者を修正
sudo chown -R squid:squid /var/log/squid
sudo chown -R squid:squid /var/spool/squid
sudo chown -R squid:squid /etc/squid/ssl_cert

Case 3: “DNS lookup failed”(ネットに繋がらない)

原因: Squidサーバー自体のDNS設定がおかしい。
プロキシはクライアントの代わりにDNS名前解決を行うため、Squidサーバーが名前解決できないと誰もネットに繋がりません。

解決策:
/etc/resolv.conf を確認するか、squid.conf でDNSサーバーを強制指定します。

# Google DNSを使う例
dns_nameservers 8.8.8.8 8.8.4.4

また、IPv6環境がないのにIPv6で解決しようとして遅くなる場合は、以下を設定します。

dns_v4_first on

第3章:クライアント設定の自動化「PACファイル」

さて、ここからが「冗長化」の話です。
社員のPC一台一台に「プロキシ:192.168.1.100、ポート:3128」と手動設定するのは大変ですし、もし1.100のサーバーが壊れたら、全員の設定を変更して回らなければなりません。

これを解決するのが「PACファイル(Proxy Auto-Config)」です。

PACファイルとは?

「どのURLの時に、どのプロキシを使うか(または直結するか)」というルールを記述した、小さなJavaScriptファイルです。
ブラウザにこのファイルのURL(例:http://server/proxy.pac)を登録しておけば、ブラウザがアクセスするたびにこのスクリプトを実行し、最適な接続先を自動判断してくれます。

最強のメリット:自動切り替え(冗長化)

PACファイルを使えば、「メインのプロキシが応答しない時は、自動的に予備のプロキシを使う」という記述が可能です。
これにより、サーバーダウン時もユーザーは意識することなくネットを使い続けられます。


第4章:【実践】PACファイルの書き方

テキストエディタで proxy.pac というファイルを作成します。
中身はJavaScriptです。

基本構文

function FindProxyForURL(url, host) {
    // ここにルールを書く
    // 戻り値で接続方法を指定する
}

パターンA:社内は「直結」、社外は「プロキシ」

社内イントラネット(192.168.*)にアクセスする時にプロキシを通すと無駄なので、直接接続(DIRECT)させます。

function FindProxyForURL(url, host) {
    // 社内ドメインやIPなら直結
    if (shExpMatch(host, "*.mycompany.local") || 
        isInNet(host, "192.168.0.0", "255.255.0.0")) {
        return "DIRECT";
    }

    // それ以外はプロキシ経由
    return "PROXY 192.168.1.100:3128";
}

パターンB:冗長構成(メイン → サブ → 直結)

これが最強の構成です。
メイン(Proxy1)を試し、ダメならサブ(Proxy2)、それもダメなら直結(DIRECT)させます。

function FindProxyForURL(url, host) {
    // 戻り値をセミコロンで区切って並べるだけ!
    return "PROXY 192.168.1.100:3128; PROXY 192.168.1.101:3128; DIRECT";
}

たったこれだけで、ブラウザが勝手にフェイルオーバー(障害切替)をしてくれます。


第5章:PACファイルの配布(Webサーバー構築)

作成した proxy.pac をブラウザに読ませるために、社内のWebサーバーに配置します。
Squidサーバー自体にApacheやNginxを入れて配布してもOKです。

1. Apacheのインストール(例)

sudo dnf install httpd -y
sudo systemctl start httpd

2. ファイルの配置

sudo cp proxy.pac /var/www/html/

3. 【超重要】MIMEタイプの設定

Webサーバーが .pac ファイルを正しい形式(MIMEタイプ)として返さないと、ブラウザは無視します。
Apacheの設定ファイル(/etc/httpd/conf/httpd.conf など)に以下を追記します。

AddType application/x-ns-proxy-autoconfig .pac

設定後、Apacheを再起動します。

4. クライアント側の設定

Windowsの「設定」→「ネットワークとインターネット」→「プロキシ」を開きます。
「セットアップスクリプトを使う」をオンにし、以下を入力します。

http://192.168.1.100/proxy.pac

これで完了です!


第6章:究極の自動化「WPAD」とは?

「PACファイルのURLを入力するのすら面倒くさい!」
そんな管理者のために、WPAD (Web Proxy Auto-Discovery) という仕組みがあります。

これは、ブラウザの「設定を自動的に検出する」にチェックが入っていれば、ブラウザが勝手にPACファイルを探しに行ってくれる機能です。

仕組み

  1. ブラウザが起動すると、DHCPサーバーまたはDNSサーバーに「PACファイルどこ?」と聞く。
  2. サーバーが「ここだよ(URL)」と答える。
  3. ブラウザが自動設定完了。

構築のヒント:
DHCPサーバー(Windows Serverやルーター)のオプション設定で、コード252 にPACファイルのURLを設定するのが一般的です。
これにより、PCをLANケーブルに繋いだ瞬間、何もしなくてもプロキシ設定が完了する「ゼロタッチ展開」が可能になります。


講座まとめ:あなたはもう「ネットワークの守護者」だ

全8回、本当にお疲れ様でした。
ここまで読み進めたあなたは、もうSquid初心者ではありません。
プロキシサーバーの構築から、セキュリティ、高速化、可視化、そして障害対応までこなせる「プロキシのエキスパート」です。

Squid完全攻略講座 修了チェックリスト:

  • ✅ Squidをインストールし、クライアントを接続できる。
  • ✅ ACLを使って、特定の部門やサイトを制御できる。
  • ✅ 認証機能を入れ、個人を特定できる。
  • ✅ SSLバンピングで、HTTPS通信の中身を検閲できる。
  • ✅ キャッシュを最適化し、ネットワークを高速化できる。
  • ✅ ログを解析し、誰が何をしているかレポートできる。
  • ✅ PACファイルを使い、止まらない冗長構成を作れる。

プロキシサーバーは、ネットワークの要(かなめ)です。
地味な存在かもしれませんが、あなたが構築したSquidが、今日も社員の業務を支え、ウイルスから会社を守り、快適なネット環境を提供しているのです。

この知識を武器に、ぜひ社内のインフラ環境をより良く改善していってください。
リナックス先生は、あなたのエンジニアとしての活躍を応援しています。
また別の講座でお会いしましょう!

▼ エンジニアとしてのキャリアを加速させる ▼

PAC・WPADを実験
「VPS」で自分専用環境

おすすめVPSを見る

サーバー知識を年収に
「ITエンジニア転職」

転職エージェントを見る

コメント