1. はじめに
プロキシサーバーに詳しくない初心者のYuyaです。
「まずは書いてみる」ことで理解を深める、アウトプット駆動学習を実践してみたいと思います。
この記事ではプロキシサーバの基本的な学習及びAzureとの関連性を整理していきます。
誤り等があれば是非コメントいただけますと嬉しいです。
2. プロキシとは
プロキシサーバ(Proxy Server)はクライアントとWebサーバの間に入って通信を中継・代理してくれるサーバです。
「プロキシ(Proxy)」は「代理」を意味する言葉であり、クライアントの代わりにリクエストを送信します。
具体的に通信例としては以下のようになります。
クライアントから見ると、宛先はプロキシサーバのIPアドレスになります。
その他、基本的な役割は以下の通りです。
• 代理通信:ユーザーのリクエストを受け取り、外部サーバーへ代わりにアクセス
• セキュリティ強化:危険サイトの遮断や不正アクセス防止
• 匿名性の確保:外部から見えるのはプロキシのIPだけ
• キャッシュによる高速化:よく使うコンテンツを保存して再利用
• アクセス制御・ログ管理:利用状況を監視・制御
• 負荷分散:複数サーバーへのアクセスを調整し、安定稼働を実現
こうして並べてみると多機能な存在だと分かります。
3. プロキシの種類
プロキシサーバには、用途や設置場所に応じてさまざまな種類があります。
-
フォワードプロキシ
クライアント側に設置し、外部へのアクセスを代理。
セキュリティ強化や、アクセス制御、キャッシュ等が可能。 -
リバースプロキシ
サーバー側に設置し、外部からのアクセスを代理。
Webアプリの前段でロードバランサーとして負荷分散やセキュリティを強化。キャッシュも行う。
-
透過型プロキシ
ユーザーが意識せず自動的に利用。通信を中継するが、クライアント側の設定が不要。
通信の監視・フィルタ・キャッシュなどが可能。 -
その他プロキシの種類
• Webプロキシ:HTTP通信を扱うフォワードプロキシ
• SOCKSプロキシ:OSI参照モデルのセッション層で動作
• キャッシュプロキシ:取得したデータを一時的に保存(キャッシュ)して再利用
どういう役割を持たせて構築するか、によって呼び方が変わります。
また、サービスによってはいずれかの役割しか果たせないということもあるかと思います。
4. Azureの例
4-1. VM上に構成する
AzureのVMにプロキシサーバを構成します。(AWSで言うとEC2)
cloud-initを使って自動デプロイ
以下のブログで紹介されているコードを使うと、サクッと構築できてしまいます。素敵です。
cloud-initやBicepの使い方
使い方が不明な方は以下を参考にしてください。
サービス名は違いますが、やり方は同じです。
クライアント側の設定
①設定
Windowsボタン⇒設定⇒ネットワークとインターネット⇒プロキシ⇒手動設定
②PACファイル
PACファイルというものを使うと、細かく制御することが可能です。
PACファイルを配布(GPOなど)することで環境全体に適用することができます。
詳しくは下記のブログが参考になります。
使用例
- オンプレミスからインターネット宛の通信をAzure経由とする場合
※PACファイルやプロキシサーバ上で特定FQDN宛の通信を許可する等の制御を行う - 強制トンネリング(インターネット通信をAzureでなくオンプレから通信させる)環境で、一部通信をAzure側から行う場合
私が興味のある分野を集めた感は否めませんが、参考にした記事はこちらです。
4-2. Azure Application Gateway
Webアプリの前段で動作し、リバースプロキシとしてユーザーからのリクエストを受け取り、バックエンドのWebサーバーへ振り分けます。さらにWAF(Web Application Firewall)機能を備えているため、セキュリティ強化も同時に実現できます。
設定
Azure Application Gatewayについては以下のブログを参照ください。
プロキシの文脈だけでいきますと
Azure Application Gateway をデプロイして、ターゲットとなるバックエンドのサーバーへのルーティング規則を追加するようなイメージになります。
使用例
以下の検証記事ではRDPをApplication GatewayのIPに対して行うと、その先のWebサーバーにアクセスできていることがわかります。
このようにレイヤー4レベルで、一度Application Gatewayでリクエストを受け付けることができます。※レイヤー7もサポートされています。
Azure Application Gateway の TCP プロキシを試す
4-3. Azure Firewall
Azure Firewallは文字通りFirewallのサービスですが、プロキシ機能もあります。
※ただし、プレビュー機能です。
既定では透過プロキシモードになっています。※Learnはこちら
設定
- Firewall ポリシーより、「明示的なプロキシ(プレビュー)」を選択
- 明示的なプロキシを有効にするに✔
- ポートを入力
Firewall側は以上です。
上記に加えてPACファイルを使用することも可能です。
クライアント側はプロキシ設定からAzure FirewallのプライベートIPと設定したポートを指定してあげます。
また、試したことはありませんが、「透過」とされているため、クライアントとAzure Firewallが通信可能な環境であれば、「自動的に検出する」がONにすることで使用できるのではと思います。
取り消し線部分について、とある方から教えていただきました。
透過とは言え、そんなに簡単には使用できませんでした。
例えばこちらのブログで紹介されておりますように証明書等の対応が必要かと思われます。
使用例
2023年の記事ですが、以下の記事で使用している様子が確認できます。
例えばTeamsの通信をProxy経由で試されていたります。(本来は非推奨ですが、検証のために)
また、PACも試されています。
スクリーンショット付きで確認できるためより深く理解できる記事となっております。おすすめです。
Entra アプリケーション プロキシ
リバースプロキシとして使用できるサービスです。
オンプレミスのWebアプリケーションをインターネット経由で公開することができます。
設定や詳細
以下のブログやスライドが参考になります。
12/19に追記しました。
教えていただき、追記いたしました。
5. まとめ
プロキシはクライアントとWebサーバの間に入って通信を中継・代理してくれる便利なサーバーです。
フォワードプロキシやリバースプロキシ、透過型など、用途に応じて多様な種類があります。
また、Azureにおいては3種類の方法を紹介しました。
少しでも参考になれば幸いです。
誤りや、他の方法、サービス等があれば是非コメントいただけますと嬉しいです。
参考文献

