Squidで検証用のプロキシを作ってみた

お手軽に検証用のプロキシが欲しい。Squidのインストールとyumやwgetでプロキシを利用する方法についてまとめました。
2020.07.27

こんにちは。AWS事業本部のKyoです。

プライベートサブネット(NAT無し)でEC2のセットアップをしなければならない。そんな状況がありました。

利用するOSはAmazon Linux2。...それならこの方法ですね。

【小ネタ】えっ、Private SubnetからNATサーバを経由せずにyum updateができるって!?

...え、wgetとかcurlとかも必要...?

あ、本番環境にはプロキシサーバがあるんですね。

じゃあ検証にもプロキシがほしい! そんな流れでSquidを使って検証用のプロキシを立ててみることにしました。

なお、今回はなるべく簡単に検証することが目的でしたので、本番利用の際には設定等ご注意ください。

構成図

t2.microのAmazon Linux2のEC2インスタンスをパブリックサブネットとプライベートサブネットにそれぞれ1台づつ構築しました。 以降、パブリックサブネットのインスタンスをproxy、プライベートサブネットのインスタンスをclientと呼びます。

セキュリティグループはproxy3128のインバウンドを許可。両方にSSH用の22のインバウンドを許可してあります。

※ Squidの利用するデフォルトのポート。Squidのインストール時に変更する場合は、セキュリティグループも変更してください。

proxyへのSquidのセットアップ

proxyにSSHしてSquidのセットアップを行います。

まずyumでインストールを行います。

sudo yum update
sudo yum install squid

バージョンを確認してインストール出来ていることを確認します。 今回は3.5.20でした。

squid -v

出力例

Squid Cache: Version 3.5.20
(以下略)

本番環境で利用するのであれば、/etc/squid/squid.confを修正しますが、今回は検証目的のためデフォルトで利用しました。

Squidの自動起動設定を行い、リスタートします。

sudo systemctl enable squid
sudo systemctl restart squid

Squidがポート3128を使用していることを確認します。

sudo lsof -i:3128

出力例

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
squid   21800 squid   11u  IPv6  37157      0t0  TCP *:squid (LISTEN)

Squidの設定は以上です。

clientへのセットアップ

proxyを踏み台にプライベートIPでclientにSSHします。 それぞれの設定ファイルにプロキシの設定を記入します。

3128以外のポートを利用している場合は適宜変更してください。

yum

/etc/yum.conf

proxy=http://<proxyのプライベートIP>:3128

wget

/etc/wgetrc

http_proxy=http://<proxyのプライベートIP>:3128
https_proxy=http://<proxyのプライベートIP>:3128

curl

~/.curlrc

proxy=http://<proxyのプライベートIP>:3128

おわりに

Squidでサクっとプロキシを立てて使う、ということをやってみました。

特にハマりどころもなかったので、プロキシを使う予定があるけどハードルを感じている方がいらっしゃいましたら検証用として是非お試しください。

以上、何かのお役に立てれば幸いです。

あわせて読みたい