【squid】HTTPプロキシサーバ立てた

開発環境

構築後のネットワークのイメージ

20190815005449

  • ブログのサムネ用

背景

20190815005047

  • 外部システムのIFと連携するシステムの構築
  • IFにアクセスするマシンは申請制

    • 不特定多数にフルオープンにしてもらうわけにはいかない
    • 特定のマシンに対してのみ穴を開けてもらう
  • 今回は開発・検証用クラウドサーバーに対してのみ穴を開けてもらった
  • ローカルマシンから気軽にHTTPリクエストを送れなくてつらい

    • Postmanとか使いたい

Solution: クラウドサーバーにHTTPプロキシを立てる

20190815005449

  • ローカルマシンから、クラウドサーバーを経由して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とか使えて幸せ