【注意】FortiGate RAM 2GB以下の小型モデルで ver.7.4.4からProxy機能廃止、ver.7.6.0からSSL-VPN機能廃止 被害者が散見しています> Membership

任意バージョンのSquidをCentOS Stream 9にインストールする方法

目次

動作確認環境

  • 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 の公式ページでは過去バージョンから最新バージョンまでのソースコードが公開されておりダウンロード可能です。このソースコードからインストールすることで任意のバージョンの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

コンパイルには20分程度要します。

コンパイルが完了したら以下コマンドでインストールを行います。

# 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 アクセスできているようです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次