🦑

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

2022/12/03に公開

モチベ

  • 強制トンネリング時に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という記述がある部分を検索する

  • acl localnetの部分がコメントアウトされているため編集

    • これは、localnetとして定義するアドレス空間を示すので必須
    • 編集前
    • 編集後
  • http_accessの設定も編集

    • 編集前
    • 編集後
  • 余談:ここで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と経由先(プロキシなのか直接なのか)を定義してクライアントに配布することが多い
GitHubで編集を提案

Discussion