Azure Front Door で IPv6 to IPv4 ができる…?
IPv4 の WEBサービスを Azure へリフトしたものの、IPv6のクライアントからのアクセスへの対応はどうしようか… という場合があります。
「Azure では IPv6/IPv4変換はできないんだ…おわった…」と思っていたら、実は Azure Front Door を立てるだけでアッサリ対応できました! というお話です。
Azure Front Door は IPv4のみならず IPv6 対応のサービスですので、クライアントからの IPv6アクセスを受け付けてくれます。また、Azure Front Door のバックエンドには IPv4も用意されており、IPv6 に対応できない WEBサービスとも IPv4 で疎通が可能です。
環境用意
環境用意と言っても、以下の図のように、IPv4のみのバックエンドの前に、Azure Fornt Door を用意してあげるだけです。
早速 Azure Front Door をデプロイしてあげました。
試しに、Azure Front Door の エンドポイント を名前解決してみると、確かに IPv4 と IPv6 両方を持っていることが確認できます。IPv6 で受付してくれそうです!
バックエンドには、IPv4 の IPアドレスしか持たない WEBサーバーを立てておきます。
今回は IPv4 のパブリックIPアドレスのみを割り当てた Windows Server に、IIS をインストールしたものを用意しました。
当たり前ですが、このままでは、このWebサーバーには IPv4 でないと到達できません。
念のためWEBサーバー内で、アクセスログを確認しておきましょう。
IISですので、アクセスログの設定は [IIS manager] を開いて [Logging] を選択すると、設定ができます。
既定のままでも、接続元IPアドレスが記録されるようになっていると思いますので、今回特に設定は変更してはいません。
ログの保管されているディレクトリを開き、ログファイルを確認てみます。
147.243.. などからのアクセスが記録されています。
また、正常性プローブの確認であることも記録されています。
実はこの 147.243.. というIPアドレスは、 Azure Front Door のバックエンドのIPアドレスです。
Azure Front Door は、ユーザからの接続を受け付けるフロントエンド側のIPアドレスと、バックエンドと接続するためのIPアドレスが、異なっているサービスなのです。
なお、バックエンド側のIPアドレスについては こちら で公開がされています。
NSGで接続を許可する場合には、サービスタグで「AzureFrontDoor.Backend」を許可することで、許可できます。
確認結果: IPv6クライアントから表示できました!
さて、Azure Front Door を配置することで、IPv6 で疎通可能になったかどうか、確認をしてみます。
確認用のクライアントとしては、パブリック IPv4 を持たず、IPv6 のみをもつ VM を作成しておきます。
それでは、Azure Front Door のURLを開いてみましょう。
結果は以下の通りで、無事、 IIS のお馴染みのページが表示できました!
アクセスログを確認すると、Azure Front Door のバックエンドIPアドレス からの アクセスであることが記録されています。
2022-12-18 13:08:48 10.1.0.4 GET / - 80 - 147.243.28.137 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/108.0.0.0+Safari/537.36+Edg/108.0.1462.46 - 200 0 0 1
2022-12-18 13:08:48 10.1.0.4 GET /iisstart.png - 80 - 147.243.28.137 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/108.0.0.0+Safari/537.36+Edg/108.0.1462.46 http://***-ckh3fsfyafe5acgq.z01.azurefd.net/ 304 0 0 1
2022-12-18 13:08:48 10.1.0.4 GET /favicon.ico - 80 - 147.243.28.137 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/108.0.0.0+Safari/537.36+Edg/108.0.1462.46 http://***-ckh3fsfyafe5acgq.z01.azurefd.net/ 404 0 2 1
Azure Front Door を設置することで、IPv6 からの接続を受け付けることができるようになりました。
一方で、クライアントの発信元IPアドレスが確認できなくなってしまいますので、取得したい場合には x-forwarded-for を確認する必要がありそうですね。
デュアルスタック
なお、WEBサービス自体も IPv6 対応できるのであれば、Azure VM は IPv4 と IPv6 デュアルスタック可能ですので、普通に VMに IPv6 を持たせればよいと思います。
参考