はじめに
プロジェクトの要件として、プロキシサーバを経由したインターネットアクセスはよくあるケースかと思います。
その際、AWSで言うとVPC Endpointなど、インターネットにアクセスさせたくない場合はNOPROXY設定を行ったりもすると思います。
自分もプロジェクトとして上記のような設定を行う必要がありました。しかしその中で、NOPROXY設定にしたいエンドポイントがなぜかプロキシサーバへ経由してしまうといったことがありました。

この時に困ったのが、なんのエンドポイントがプロキシサーバに行ってしまっているかがわからないということです。
プロキシサーバのログは実際に取得するとかなり時間がかかったりします。
早く調査したいのに、情シスを待たないと行けなかったりするなどもあったりしますよね。
そんなときのために、簡易プロキシサーバを立てることでログからエンドポイントを調べるということも可能です。
今回はsquidを使ってプロキシサーバのエンドポイントログを調査してみたので、その方法を共有できればと思います。
今回の構成
上記の構成より、本当に経由したいプロキシサーバを経由する前に、先に経由させるプロキシサーバをプライベートシステムと同じAWSアカウントに用意します。
用意されたEC2サーバに向けてプロキシ設定を行い、アクセスログより分析を行いました。
実際に立ててみる
EC2サーバ
今回は簡易的なサーバを立てるだけなのでスペック等は最小のもので大丈夫です。
squidのデフォルトポートは3128なので、下記設定が必要です。
・EC2のSecurityGroupでインバウンドルール追加、TCP 3128を許可。
・プライベートシステムでアウトバウンドルール追加、TCP 3128を許可。
Squidインストール
構築したEC2サーバにSSH接続で入ります。
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo yum install -y squid
Amazon Linux 2023 Kernel Livepatch repository 192 kB/s | 28 kB 00:00
Dependencies resolved.
========================================================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================================================
Installing:
squid x86_64 7:6.13-1.amzn2023.0.2 amazonlinux 3.5 M
Installing dependencies:
xxx
xxx
xxx
xxx
...
Complete!
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo systemctl start squid
[ec2-user@ip-xx-xx-xx-xx ~]$ sudo systemctl enable squid
アクセスログの確認
sudo tail -f /var/log/squid/access.log
まとめ
私の場合、上記までスクリプトを実行することでプロキシサーバにどのようなアクセスが飛んでいるかを実際に確認することができ、原因究明・解決までたどり着くことが出来ました。
ネットワーク回り、特にプロキシサーバ関連についてはわかりにくいうえに調査に時間がかかったりということが多々あるかと思います。
クイックに情報収集し、分析・解消に努めるため、ぜひ上記のようなプロセスも選択肢に入れてみてはいかがでしょうか。

