自宅にプロキシサーバーを構築して、アクセスログを確認する方法

## はじめに
突然ですが、実務でネットワークの知識が不足していることに気づきました。社内環境では一部でLinuxのプロキシサーバーとしてSquidを採用しており、これを自宅環境で構築し、検証できると考えました。
今回の構築後のアクセス検証として、Windows 10端末からYahoo!のサイトにアクセスし、そのアクセスログが取得できるか確認することをゴールとします。

## 前提条件
・VirtualBox上で稼働しているAlmaLinux（CentOSの後継）を採用
・VirtualBox上で稼働しているWindows 10端末（評価版）を使用
・プロキシのミドルウェアとしてSquidを使用
**自宅のVirtualBox環境**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/37727888-dfb1-13f0-720f-290d69e65b6b.png)

:::note info
※検証で使うのは「proxy」と「Windows10」になります。
:::

## 全体像および自宅検証環境
今回の構成は、左側のクライアントと明示型のプロキシサーバーの構築と設定を行います。

クライアントPCでYahoo!のサイトにアクセスした際、自宅環境のプロキシサーバーを経由して、インターネットにアクセスできることを検証します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/34511ec7-bb53-8fe9-7fa3-412d469d4c53.png)
引用画像：https://www.gate02.ne.jp/media/it/column_107/

**プロキシサーバー**
VirtualBox：AlmaLinux release 9.3 (Shamrock Pampas Cat)
ミドルウェア：Squid Cache: Version 5.5

**Windows 10端末（評価版）**
エディション：Windows 10 Enterprise
バージョン：22H2
OSビルド：19045.2006

## 知識整理

:::note warn
必要な知識については、詳しいサイトが多数ありますので、公式サイトと併せてご紹介します。

**VirtualBoxについて**
詳細サイト: https://www.kagoya.jp/howto/it-glossary/server/virtualbox/
公式サイト: https://www.oracle.com/jp/virtualization/technologies/vm/downloads/virtualbox-downloads.html

**AlmaLinuxについて**
詳細サイト: https://www.designet.co.jp/ossinfo/almalinux/
公式サイト: https://almalinux.org/ja/

**Windows 10 評価版について**
詳細サイト: https://4thsight.xyz/53938
公式サイト: https://www.microsoft.com/ja-jp/evalcenter/evaluate-windows-10-enterprise

**プロキシサーバーについて**
詳細サイト: https://www.ntt.com/bizon/glossary/j-h/proxy-server.html

**Squidについて**
詳細サイト: https://qiita.com/zabuton13/items/bbe5f540f7536fa95eae
公式サイト: https://www.squid-cache.org/
:::

## 構築の流れ
VirtualBoxの導入などのステップ1〜3の作業はここでは割愛しますが、上記の参考サイトなどを見ながらご自身の端末へのセットアップをお願いします。

:::note info
今回は、ステップ4から本ブログで紹介します。
~~**ステップ1：VirtualBoxの導入（ここでは割愛）**~~
~~**ステップ2：VirtualBoxにAlmaLinuxサーバーを1台構築（ここでは割愛）**~~
~~**ステップ3：VirtualBoxにWindows 10端末（評価版）を1台構築（ここでは割愛）**~~
**ステップ4：AlmaLinuxサーバーにSquidを導入・設定**
**ステップ5：Windows 10端末のセットアップ**
:::

## ステップ4：AlmaLinuxサーバーにSquidを導入・設定
AlmaLinuxサーバーにSquidを導入して設定する為、システムを最新の状態にします。
```
sudo yum update -y
```


次に、Squidをインストールします。
```
sudo yum install squid -y
```

Squidの設定ファイルは/etc/squid/squid.confにあります。このファイルを編集して、プロキシサーバーの設定を行います。
```
sudo vi /etc/squid/squid.conf
```

以下の設定例に従って、ネットワーク環境に合わせて設定します。
**設定例：**
```/etc/squid/squid.conf
http_port 3128
acl localnet src 192.168.0.0/16  # ご自身のローカルネットワーク範囲を指定
http_access allow localnet
```

設定ファイルを保存したら、Squidサービスを再起動し、自動起動を有効化します。
```
sudo systemctl restart squid
sudo systemctl enable squid
```

次に、Squidが使用するポート（デフォルトは3128）をファイアウォールで開放します。
```
sudo firewall-cmd --permanent --add-port=3128/tcp
sudo firewall-cmd --reload
```

## ステップ5：Windows 10端末のセットアップ
セットアップ手順は、以下の通りとなります。

:::note info
・スタートメニューから「設定」を開き、「ネットワークとインターネット」をクリック→左側のメニューから「プロキシ」を選択

・「手動プロキシ設定を使用する」を「オン」に切り替え→「プロキシサーバー」にAlmaLinuxサーバーのIPアドレスとポート番号（デフォルトは3128）を入力して保存
:::

**例：**
アドレス：（ご自身のAlmaLinuxのIPアドレス）
ポート：3128
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/7a988240-7f3c-0a64-2e0a-ea5fbed373ed.png)

## 稼働確認
稼働確認の方法として、Windows 10端末からYahoo!のサイトにアクセスし、プロキシサーバー側のアクセスログに記録されているか確認します。

:::note warn
なお、パケットキャプチャを取得してWiresharkで解析することも検討しましたが、Windows 10端末が評価版かつ割り当てているメモリなどのスペックが低いため、動作がもっさりしており断念しました。
:::

**Windows 10端末**
 Windows 10端末のIPアドレスは以下の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/8bb41fcd-8e07-8813-5405-667d0266ec1d.png)

無事Yahoo!のサイトにアクセスできていることを確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/94b35df2-ef04-ea76-cc21-deb4173dd64c.png)

**プロキシサーバー側のアクセスログ**
以下のコマンドでリアルタイムでログを解析し、grepコマンドで「yahoo」に関するアクセスのみフィルタリングしています。

:::note info
プロキシサーバー側のログにも、Windows 10端末の「10.0.1.2」のIPアドレスのログが残っていることを確認できました。
:::

```
tail -f /var/log/squid/access.log | grep yahoo
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3662571/2bab5886-63bb-b682-cdbd-d42e528547b4.png)

## まとめ
Squidプロキシサーバーの設定が無事に機能していることを確認できました。Windows 10端末からのアクセスが正しくプロキシサーバーを経由していることを、実際のアクセスログでしっかりと確認できたので、今回の構築は成功と言えそうです。
プロキシサーバーの動作確認もこれでばっちりですね！

## 参考記事
https://qiita.com/nkojima/items/0d6bd71e9e66814c7951

https://zenn.dev/step/articles/21984153dcd0ba

https://www.kagoya.jp/howto/cloud/vps/proxy_squid/

https://hogetech.info/network/server/squid#google_vignette