🦑
Azure VMでSquidを使ったプロキシサーバを10分で立てる
モチベ
- 強制トンネリング時に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と経由先(プロキシなのか直接なのか)を定義してクライアントに配布することが多い
Discussion