はじめに
今回は、以下の記事で構築したプロキシサーバーの動作検証をしていきます。
構成図

事前準備
必要なリソースは前回、CloudFormationで構築しておきましたので、SSM sessionmanagerでクライアントEC2にログインするところから進めていきます。
ターミナルソフトであれば、以下のコマンドでログインできます。aws ssm start-session --target {インスタンスID}
GUIコンソールからの接続でも構いません。
下記のように表示されればOKです。
Starting session with SessionId:{インスタンスID}
※リソースの準備が完了していない方は、以下の記事から、構築を完了させていただければと思います。
プロキシ経由の設定
今回は、curlコマンドでインターネットへの疎通があるかを確認し、想定通りにプロキシサーバが動作しているか確認します。
そこで、プライベートサブネットに配置したEC2にて、どこのプロキシサーバを経由すべきかの設定を~/.curlrc
に入れていきます。
すでに起動テンプレートで、~/.curlrc
に以下の設定が入っていますので、編集していきます。
proxy = "http://10.0.0.x:3128"
vim ~/.curlrc
http://
の後ろのIPアドレスの箇所をプロキシサーバに付与されたプライベートIPアドレスに変更します。
変更したら保存しておきましょう。
設定はこれだけです。
動作検証
では、早速、検証していきます。
プロキシサーバに設定しているのは以下のみですので、これらが正しく動作しているか確認していきます。
- google.comへのアクセスをBlacklistで拒否している
- それ以外のhttpアクセスを全て許可している
検証項目
- yahoo.co.jpにcurlして疎通があることを確認
- google.comにcurlしてブロックされることを確認
yahoo.co.jpにcurlして疎通があることを確認
※必要に応じて、sudo su -
コマンドでroot権限に切り替えておきます。
curlコマンドで接続してみます。
[root@ip-10-0-1-x ~]# curl -Iv https://yahoo.co.jp
* Trying 10.0.0.x:3128...
*
〜省略〜
*
* Connection #0 to host 10.0.0.x left intact
Connectionとなり問題なく疎通できました。
. google.comにcurlしてブロックされることを確認
同様にcurlコマンドで接続してみます。
[root@ip-10-0-1-x ~]# curl -Iv https://google.com
* Trying 10.0.0.x:3128...
*
〜省略〜
*
* CONNECT tunnel failed, response 403
* Closing connection
curl: (56) CONNECT tunnel failed, response 403
failedとなり接続が失敗していることがわかります。
送信元IPがプロキシサーバーのIPになっている
さらに、以下のコマンドを実行してみます。
[root@ip-10-0-1-x ~]# curl -v httpbin.org/ip
* Trying 10.0.0.x:3128...
*
〜省略〜
*
{
"origin": "10.0.1.x, a.a.a.a"
}
* Connection #0 to host 10.0.0.x left intact
このコマンドは、接続元IPを返してくれます。
origin
個所の1つ目のIPアドレスがクライアント(この場合はcurlコマンドを実行したマシン)のプライベートIPアドレスで、2つ目のIPアドレス(a.a.a.a)はプロキシサーバのIPアドレスです。※グローバルIPのため非表記にしています
この出力からは、送信元IPがプロキシサーバのIPに変わっていることが確認できます。具体的には、外部のWebサービス(httpbin.org)に対しては、リクエストがプロキシサーバから来たように見えます。
curlコマンドを実行したプライベートIPアドレスについて、プロキシサーバのIPアドレスが送信元になるように変換されて通信していることがわかりました。
まとめ
今回は、squidを用いたプロキシサーバとしてのEC2インスタンスの動作を検証しました。 次回以降で、プロキシサーバーをECSで実装してみるなど試していきたいと思います。
最後までご覧いただきありがとうございました。
コメント