構築後のネットワークのイメージ
- ブログのサムネ用
背景
- 外部システムのIFと連携するシステムの構築
-
IFにアクセスするマシンは申請制
- 不特定多数にフルオープンにしてもらうわけにはいかない
- 特定のマシンに対してのみ穴を開けてもらう
- 今回は
開発・検証用クラウドサーバー
に対してのみ穴を開けてもらった -
ローカルマシン
から気軽にHTTPリクエストを送れなくてつらい- Postmanとか使いたい
Solution: クラウドサーバーにHTTPプロキシを立てる
- ローカルマシンから、クラウドサーバーを経由してHTTPリクエストを送りつける
- プロキシサーバープログラムとしてはsquidを選定
設定
squidの設定
- まず入れる
yum -y install squid
- ポートはTCP 3128(デフォルト)
-
ホワイトリスト形式で、src にローカルマシンのグローバルIPアドレスを設定する
- 不特定多数がプロキシを経由できたら大問題なので
/etc/squid/squid.conf
...
+ acl whitelist src "/etc/squid/whitelist" # whitelistの定義
...
+ http_access allow whitelist # whitelistの許可
...
http_access deny all # 上からここまで、いずれにもマッチしなければ不許可
/etc/squid/whitelist
192.0.2.0/24
- 実際には「ローカルマシン」のグローバルIPアドレスを書く
- 設定し終わったらsquid起動 or 設定再読み込み
systemctl start squid
# すでに起動してたら
systemctl reload squid
クラウドサーバーの設定
- TCP 3128を開けてやる必要がある
-
AWSのセキュリティグループを新しく作った
-
インバウンド TCP 3128 、ローカルマシンのグローバルIPアドレスのみ許可
- セキュリティグループはステートフルなのでインバウンドだけでOK
- やはり不特定多数には開放しない
-
プロキシ経由してHTTPリクエスト送る
curl --proxy http://<クラウドサーバーのIPアドレス>:3128 <外部IFのIPアドレス>
-
ローカルマシンから気軽にHTTPリクエストできるようになった
- Postmanとか使えて幸せ