「代理人」を立てて、インターネットを安全に歩こう。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
今回から全8回にわたり、Linuxサーバー管理の現場で必ずと言っていいほど登場する「プロキシサーバー(Squid)」の構築・運用講座をスタートします!
「プロキシ」という言葉、聞いたことはあるけど、具体的に何をしているのかイメージできていますか?
先生、正直よくわかりません!
「会社のPCだと、設定しないとネットに繋がらないやつ」という認識しかありません。
Webサーバーとは違うんですか? なんでわざわざ間にサーバーを挟む必要があるんですか? 直接繋いだほうが速いのに!
いい疑問ね、コウ君。
直接繋ぐのは「裸で戦場に行く」ようなものよ。
プロキシ(Proxy)は「代理人」という意味。
身元を隠したり、危険なサイトへのアクセスをブロックしたり、一度見たページを記憶(キャッシュ)して高速化したり。
企業や組織のネットワークを守るための「関所」の役割を果たしているのよ。
本連載では、世界中で最も使われているOSSプロキシサーバー「Squid(スクイッド)」を使って、安全で高速なインターネットアクセス環境を構築する技術をゼロから学びます。
🦑 Squid完全攻略講座(全8回)目次
現在地:【第1回】プロキシサーバーとは?仕組みの完全図解とインストール
- 【第2回】アクセス制御の基礎(ACL)とポート設定
- 【第3回】「誰?」を識別する認証プロキシ(Basic/Digest)の構築
- 【第4回】暗号化通信の制御!HTTPSとSSL接続の仕組み
- 【第5回】爆速化!キャッシュ機能のチューニングとメモリ管理
- 【第6回】アクセスログ解析とモニタリングの極意
- 【第7回】鉄壁の守り!フィルタリング(ブラックリスト/ホワイトリスト)
- 【第8回】トラブルシューティングと冗長化構成(PACファイル)
第1章:プロキシサーバー(Proxy)の仕組みと役割
まずは手を動かす前に、概念をしっかり理解しましょう。
ここが分かっていないと、後のトラブルシューティングで必ず詰まります。
1. プロキシ(代理)とは何か?
通常、私たちがブラウザでWebサイトを見る時、PCはWebサーバーに直接リクエストを送ります。
しかし、プロキシ環境下では以下のようになります。
- 依頼: クライアントPC(社員)は、プロキシサーバー(秘書)に「Yahoo!を見たいです」とお願いします。
- 代行: プロキシサーバーは、自分の名前でYahoo!サーバーにアクセスし、データを取得します。
- 返却: 取得したデータを、クライアントPCに渡します。
Webサーバー側から見ると、アクセスしてきたのはあくまで「プロキシサーバー」であり、その背後にいるクライアントPCの存在は(基本的には)見えません。
これが「代理」の仕組みです。
2. フォワードプロキシ vs リバースプロキシ
「プロキシ」には大きく分けて2種類あります。
| 種類 | 向き | 守る対象 | 主な用途 |
|---|---|---|---|
| フォワードプロキシ (今回学ぶもの) |
内 → 外 | クライアントPC (社内ユーザー) |
社員のネットサーフィン管理、ウイルス対策、キャッシュによる高速化。 |
| リバースプロキシ (Nginxなど) |
外 → 内 | Webサーバー (自社サービス) |
Webサーバーの負荷分散、攻撃からの保護、SSLオフロード。 |
Squidはどちらも構築可能ですが、本講座では圧倒的に需要が高い「フォワードプロキシ(社内からインターネットへ抜けるためのサーバー)」として構築していきます。
3. なぜSquidなのか?
Squidは1990年代から開発が続く、インターネットの歴史そのものと言えるソフトウェアです。
「枯れた技術(安定している)」でありながら、現在も活発にアップデートが続いています。
- 圧倒的な実績: ほとんどのLinuxディストリビューションで標準採用。
- 高機能なACL: 「誰が」「いつ」「どこに」アクセスできるかを細かく制御可能。
- キャッシュ性能: メモリとディスクを組み合わせた強力なキャッシュ機能。
企業の情シス部門やインフラエンジニアを目指すなら、Squidは避けて通れない必須科目です。
第2章:環境構築(AlmaLinux 9)
それでは、実際にサーバーを構築していきましょう。
今回は、現在のエンタープライズLinuxの主流である AlmaLinux 9 を使用します。
ステップ1:Squidのインストール
AlmaLinuxの公式リポジトリにSquidが含まれているため、dnf コマンド一発で入ります。
# パッケージリストの更新 sudo dnf update -y # Squidのインストール sudo dnf install squid -y
インストールが完了したら、バージョンを確認してみましょう。
squid -v
Squid Cache: Version 5.x のように表示されればOKです。
ステップ2:自動起動の設定
サーバー再起動時にも自動的にSquidが立ち上がるように設定します。
# 起動 sudo systemctl start squid # 自動起動の有効化 sudo systemctl enable squid # ステータス確認 sudo systemctl status squid
緑色の文字で Active: active (running) と表示されていれば、Squidは正常に動いています。
第3章:ファイアウォールの設定(ポート開放)
Linuxサーバーを立てた直後は、外部からの通信が遮断されています。
Squidが使用するポート(標準では 3128番)を開放してあげる必要があります。
⚠️ 注意:セキュリティについて
本番環境では、接続元のIPアドレスを制限する(社内LANからのみ許可する)のが鉄則です。
全世界にプロキシをフルオープンにしてしまうと、踏み台攻撃に使われるリスクがあります。
今回は学習用としてポートを開放しますが、クラウド(AWS/VPS)を使う場合は、セキュリティグループ等で「自分のPCのIPのみ許可」するように設定してください。
firewalldの設定
# squidサービス(3128/tcp)を許可 sudo firewall-cmd --add-service=squid --permanent # 設定を反映 sudo firewall-cmd --reload # 確認 sudo firewall-cmd --list-all
services: の欄に squid が追加されていれば成功です。
第4章:クライアント(ブラウザ)の設定と接続テスト
サーバー側の準備は整いました。
今度はクライアント側(あなたの手元のPC)の設定を行い、実際にSquid経由でインターネットが見られるかテストします。
1. サーバーのIPアドレスを確認
サーバー側で以下のコマンドを打ち、IPアドレスをメモしてください。
ip a
例:192.168.1.100 またはVPSのグローバルIP。
2. Windows / ブラウザのプロキシ設定
ここでは、OS全体の設定を変えずに済むよう、Firefoxブラウザ単体で設定する方法を紹介します。
(ChromeやEdgeはOSの設定を参照するため、影響範囲が大きいです)
【Firefoxでの設定手順】
- 右上のメニュー(≡)→「設定」をクリック。
- 一番下の「ネットワーク設定」にある「接続設定」をクリック。
- 「手動でプロキシを設定する」を選択。
- HTTPプロキシ: サーバーのIPアドレス(例:192.168.1.100)
- ポート:
3128 - 「HTTPSプロキシにもこの設定を使用する」にチェックを入れる。
- 「OK」で保存。
3. 接続確認(アクセスログを見る)
この瞬間が一番ドキドキします。
サーバー側で、Squidのアクセスログをリアルタイムで監視するコマンドを打っておきましょう。
sudo tail -f /var/log/squid/access.log
この状態で、Firefoxで適当なサイト(Yahoo! JAPANなど)にアクセスしてみてください。
黒い画面に、以下のようなログがズラズラと流れましたか?
1705482345.123 150 192.168.1.5 TCP_MISS/200 15432 GET http://www.yahoo.co.jp/ - HIER_DIRECT/182.22.59.229 text/html
もしサイトが表示され、ログが流れたなら…おめでとうございます!
あなたのSquidサーバーは正常に稼働し、あなたの代わりにインターネットからデータを取ってきてくれています。
第5章:トラブルシューティング「繋がらない時は?」
「サイトが表示されない」「タイムアウトする」という場合、以下のポイントをチェックしてください。
Q1. “The proxy server is refusing connections” と出る
A. Squidが起動していないか、ポートが閉じています。
systemctl status squid で起動しているか、firewall-cmd --list-all でポートが開いているか確認しましょう。
Q2. “Access Denied” (403 Forbidden) と出る
A. Squidの設定(ACL)で拒否されています。
Squidのデフォルト設定(/etc/squid/squid.conf)では、ローカルネットワーク(プライベートIP)からのアクセスのみ許可されています。
もしVPSなどでグローバルIPからアクセスしている場合、接続元のIPを許可する設定を追加する必要があります。
【暫定対応:特定IPを許可する】
sudo nano /etc/squid/squid.conf
ファイルの中程にある acl localnet src ... のあたりに、自分のPCのグローバルIPを追加します。
acl mypc src 203.0.113.5/32 # あなたのPCのIP http_access allow mypc # 許可ルール
編集後、sudo systemctl restart squid で再起動してください。
Q3. SELinuxにブロックされている?
Squidは標準以外のポートを使ったり、特殊なディレクトリにキャッシュを置こうとすると、SELinuxにブロックされることがあります。
学習段階では、SELinuxを一時的に「Permissive(警告のみ)」にして切り分けを行うのが早道です。
sudo setenforce 0
これで繋がるようになったら、SELinuxが原因です。
まとめ:まずは「通す」ことから始めよう
お疲れ様でした!
これで、あなた専用のプロキシサーバーが立ち上がりました。
今回の重要ポイント:
- プロキシは、クライアントの代わりにWebを見に行ってくれる「代理人」。
- AlmaLinuxでは
dnf install squidで簡単に入る。 - ポートは標準で 3128 を使う。
- 繋がらない時は、ファイアウォールとアクセスログ(
/var/log/squid/access.log)を確認する。
今はまだ「ただ通信を中継するだけ」の土管のような状態です。
次回、第2回は「アクセス制御の基礎(ACL)とポート設定」です。
「勤務時間中はYouTubeを見られなくする」「特定の部門だけアクセスを許可する」といった、プロキシならではの高度な制御設定(ACL)について深掘りしていきます。
管理者としての腕の見せ所はここからです。お楽しみに!
▼ エンジニアとしてのキャリアを加速させる ▼
プロキシ構築を実践
「VPS」で自分専用環境
サーバー知識を年収に
「ITエンジニア転職」


コメント