🍕

Azure VMでSquidを使ったプロキシサーバを10分で立てる

2022/12/03に公開約2,400字

モチベ

  • 強制トンネリング時にAzureからインターネットに出すための手法の一つとして教わった
  • プロキシサーバにはUDRのプロパティでルート伝達をしないように設定
  • プロキシサーバにはパブリックIPが付与されているため、Azureの規定動作としてそこのIPにNATされて出ていく
  • とりあえず調べたらSquidが楽そうだった

準備

Sqiuid用 Ubuntu VM

  • いつものようにAzurePortalから立てる
  • NSGでSSH接続を許可し、VMに接続
  • 下記コマンドにてSquidをインストール
$ sudo apt install squid

  • インストールが完了したらsquid.confを編集する
  • /etc/squid/にconfファイルがあるためそこへ移動
  • 下記コマンドにてルート権限に昇格しておく
$ sudo su
  • vimでsquid.confを開く
  • /localnet+Enterによってlocalnetという記述がある部分を検索する
  • nキーを押すことでヒットした検索結果の次の行に移動可能
  • iキーでinsertモードにして下記のコメントアウトを外す
#http_access allow localnet

編集前

編集後

  • 余談:ここでSquidの待ち受けポートを指定している。既定では3128。
  • 下記コマンドにてSquidにsquid.confを再読み込みさせる
$ systemctl reload squid
  • 下記コマンドでSquidの状態を確認可能
$ systemctl status squid

クライアント用VMの作成

  • このSquidプロキシサーバを使ってWebアクセスさせるクライアント想定のVMを立てる
  • 一応プロキシサーバとはサブネットを分ける
  • OSはWindows Server 2022にした
  • RDP許可ルールをSquidのNSGにも追加して同じものを使う(管理面倒なので)
  • RDPして確認くんにアクセス
  • クライアントVMに付与されているIPであることを確認

    Azure Portal

プロキシの設定と検証

  • Windowsで「Run」と検索
  • 「inetcpl.cpl」と入力
  • 「Connections」->「LAN Settings」を選択
  • 「Use a proxy...」のチェックを入れ、プロキシサーバのプライベートIPと3128ポートを指定
  • 再度「確認くん」にアクセスしてIPアドレスを確認
  • プロキシサーバのパブリックIPになっていることを確認

    Azure Portal

おわり

おしまいと一言。

  • Windows Server側のinetcpl.cplからプロキシサーバをマニュアル指定したため、すべてのインターネット向け通信がプロキシサーバを向く状態
  • 大規模環境ではPACファイルにFQDNと経由先(プロキシなのか直接なのか)を定義してクライアントに配布することが多い

Discussion

ログインするとコメントできます