動作確認環境
- CentOS Stream 9
- Squid 6.8
Squid のインストールバージョンを指定する
CentOS Stream でソフトウェアパッケージをインストールする際、dnf コマンドでインストールすることが最も手軽です。
ここで、CentOS Stream 9 でプロキシサーバソフトである Squid を dnf コマンドでインストールしようとした場合、選択できるバージョンは以下の通りです。
[root@localhost ~]# dnf search --showduplicates squid
メタデータの期限切れの最終確認: 1 day, 23:59:22 前の 2024年03月13日 23時18分02秒 に実施しました。
============================================== 名前 & 概要 一致: squid ==============================================
squid-7:5.5-10.el9.x86_64 : The Squid proxy caching server
squid-7:5.5-2.el9.x86_64 : The Squid proxy caching server
squid-7:5.5-3.el9.x86_64 : The Squid proxy caching server
squid-7:5.5-5.el9.x86_64 : The Squid proxy caching server
squid-7:5.5-6.el9.x86_64 : The Squid proxy caching server
================================================= 概要 一致: squid ==================================================
libecap-1.0.1-10.el9.i686 : Squid interface for embedded adaptation modules
libecap-1.0.1-10.el9.x86_64 : Squid interface for embedded adaptation modules
上記の通り、リポジトリの中にあるのは 5.5 台のバージョンのみです。つまり dnf では 5.5 台のバージョンしかインストールできないということになります。
しかし、インフラ構築案件においては、これ以外の任意のバージョンをインストールして検証したい場合があります。
ここでは、任意のバージョンの Squid をインストールする方法を説明します。
任意のバージョンのSquidをインストールする方法
Squid の公式ページでは過去バージョンから最新バージョンまでのソースコードが公開されておりダウンロード可能です。このソースコードからインストールすることで任意のバージョンのSquidをインストールすることができます。
※ただし、dnf コマンドでのインストールと違って手間がかかる点は受け入れてください
必要パッケージの事前インストール
まず、インストールのために必要なパッケージを以下コマンドでインストールします。
# dnf install -y gcc-c++ wget perl
Squid バージョンの決定とダウンロードURLの確認
ここでは現時点の最新バージョンである Squid 6.8 をインストールすることとします。
ソースファイルのダウンロードURLは公式のダウンロードページで確認します。
以下のページにアクセスします。
https://www.squid-cache.org/Versions/v6/
ソースファイルは「tar.gz」形式で配布されています。「tar.gz」のダウンロードリンクのURLを確認します。
Squid-6.8 の場合は「https://www.squid-cache.org/Versions/v6/squid-6.8.tar.gz」となります。
ソースファイルのダウンロード
次にインストール するSquid のソースファイルをダウンロードします。
ここでは /usr/local/src 配下にダウンロードすることとします。
# cd /usr/local/src
# wget https://www.squid-cache.org/Versions/v6/squid-6.8.tar.gz
上記コマンドにより、以下の通りソースファイルがダウンロードされます。
# pwd
/usr/local/src
# ls -l
合計 5212
-rw-r--r--. 1 root root 5335310 3月 4 15:27 squid-6.8.tar.gz
次に、ダウンロードした tar.gz ファイルを以下コマンドで解凍します。
# tar fxzv squid-6.8.tar.gz
展開されたフォルダにカレントディレクトリを移動します。
# cd squid-6.8
ソースファイルのインストール
まず以下コマンドで MakeFile を作成します。
# ./configure --prefix=/usr/local/squid/
--prefix=/usr/local/squid/
指定により、Squid のインストールフォルダが /usr/local/squid/ になります。
次に make によるコンパイルの準備として変数を定義します。
# export CFLAGS="-w"
# export CXXFLAGS="-w"
次に make を実行しコンパイルします。
# make
コンパイルが完了したら以下コマンドでインストールを行います。
# make install
サービス起動スクリプトの作成
systemctl コマンドでの起動・停止・有効化・無効化の操作を行うためにスクリプトを作成します。
作成するファイルパスは以下の通りです。
- /usr/lib/systemd/system/squid.service
またファイル内容は以下の通りです。
[Unit]
Description=Squid caching proxy
After=syslog.target network.target nss-lookup.target
[Service]
Type=forking
LimitNOFILE=16384
EnvironmentFile=/usr/local/squid/etc/squid.conf
Environment="SQUID_CONF=/usr/local/squid/etc/squid.conf"
ExecStartPre=/usr/local/squid/libexec/cache_swap.sh
ExecStart=/usr/local/squid/sbin/squid $SQUID_OPTS -f $SQUID_CONF
ExecReload=/usr/local/squid/sbin/squid $SQUID_OPTS -k reconfigure -f $SQUID_CONF
ExecStop=/usr/local/squid/sbin/squid -k shutdown -f $SQUID_CONF
TimeoutSec=0
[Install]
WantedBy=multi-user.target
vi でファイルを開き、上記内容をコピペするのが早いでしょう。
# vi /usr/lib/systemd/system/squid.service
cache_swap.sh の作成と権限設定
- /usr/local/squid/libexec/cache_swap.sh
# vi /usr/local/squid/libexec/cache_swap.sh
このファイルを作成し、内容は以下とします。コンフィグファイルの定義などしています。
#!/bin/bash
if [ -f /etc/sysconfig/squid ]; then
. /etc/sysconfig/squid
fi
SQUID_CONF=${SQUID_CONF:-"/usr/local/squid/etc/squid.conf"}
CACHE_SWAP=`sed -e 's/#.*//g' $SQUID_CONF | \
grep cache_dir | awk '{ print $3 }'`
for adir in $CACHE_SWAP; do
if [ ! -d $adir/00 ]; then
echo -n "init_cache_dir $adir... "
squid -N -z -F -f $SQUID_CONF >> /usr/local/squid/var/logs/squid.out 2>&1
fi
done
次に以下コマンドで cache_swap.sh に実行権限を追加します。
# chmod +x /usr/local/squid/libexec/cache_swap.sh
その他の設定
systemd manager の設定再読み込み。
# systemctl daemon-reload
キャッシュとログディレクトリの所有者変更。
# chown nobody:nobody /usr/local/squid/var/cache/squid
# chown nobody:nobody /usr/local/squid/var/logs
キャッシュディレクトリの権限変更。
# chmod -R 777 /usr/local/squid/var/cache/squid
Squid サービスの起動・有効化
サービス起動と有効化。
# systemctl start squid
# systemctl enable squid
サービス状態確認。
# systemctl status squid
● squid.service - Squid caching proxy
Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; preset: disabled)
Active: active (running) since Sat 2024-03-16 00:42:36 JST; 7s ago
Main PID: 73858 (squid)
Tasks: 3 (limit: 17096)
Memory: 16.5M
CPU: 120ms
CGroup: /system.slice/squid.service
tq73858 /usr/local/squid/sbin/squid -f /usr/local/squid/etc/squid.conf
tq73860 "(squid-1)" --kid squid-1 -f /usr/local/squid/etc/squid.conf
mq73861 "(logfile-daemon)" /usr/local/squid/var/logs/access.log
設定ファイル、ログファイルの場所
設定ファイル squid.conf は以下のパスに存在します。
- /usr/local/squid/etc/squid.conf
アクセスログファイルは以下のパスに存在します。
- /usr/local/squid/var/logs/access.log
/usr/local/squid 指定で squid をインストールしたため、/usr/local/squid が squid のルートフォルダであり、その配下に squid の各ファイルが存在します。dnf コマンドでインストールした場合と異なるため注意してください。
プロキシ利用テスト
自身から自身をプロキシサーバとして使用して curl コマンドで Web アクセスしてみます。
# curl "https://yahoo.co.jp" -x "localhost:3128"
# cat /usr/local/squid/var/logs/access.log
1710517812.694 265 ::1 TCP_TUNNEL/200 6760 CONNECT yahoo.co.jp:443 - HIER_DIRECT/182.22.24.124 -
1710517816.155 184 ::1 TCP_TUNNEL/200 6760 CONNECT yahoo.co.jp:443 - HIER_DIRECT/182.22.24.124 -
1710517820.954 177 ::1 TCP_TUNNEL/200 6760 CONNECT yahoo.co.jp:443 - HIER_DIRECT/182.22.24.124 -
1710517851.822 155 ::1 TCP_TUNNEL/200 6760 CONNECT yahoo.co.jp:443 - HIER_DIRECT/182.22.24.124 -
プロキシサーバを使用して Web アクセスできているようです。
コメント