はじめに
IPv6環境を検証するたにめには、当然IPv6で待ち受けるサーバーが必要となります。
Azureの場合、単体の仮想マシンではできません。AWS EC2ではできます。
たま、ドキュメントでサンプルとして載ってるものはほとんど可用性セットでバックエンドを設定しています。
そこで、もっと単純に単体の仮想マシンで行う方法を紹介します。
今回はロードバランサーのSKUはStandardで作成します。
VNET
IPv6に対応したVNETを作成します。事前に作成する必要があります。
IPアドレスでIPv6アドレス空間の追加をチェックし、サブネットにもIPv6アドレス空間の追加をチェックし任意に設定します。
以上でVNETの作成は完了です。
仮想マシンなどと一緒に作成されるVNETでは設定できないので事前に作成する必要があります。
仮想マシン
仮想マシン(Ubuntu20.04)を作成します。
VNETは先ほど作成したものに所属させます。ここで重要なこととして新規作成されるIPをStandardにすることです。
ロードバランサーをBasicで作成される場合はIPもBasicです。
ロードバランサー | NICにアタッチするパブリックIPアドレス(IPv4) |
Basic | Basic |
Standard | Standard |
あとは通常通り仮想マシンを起動します。
起動後はNICにIPv6(プライベートIP)を割り当てます。
確認用に起動後はApacheなどIPv6でも受け付けられるように導入します。
NSGで受信セキュリティ規則で80番ポートを追加してアクセスできるようにします。
パブリックIPアドレス
パブリックIPアドレスは作成する。
ロードバランサーのSKUによって変わってきます。
ロードバランサー | パブリックIPアドレス(IPv4) | パブリックIPアドレス(IPv6) |
Basic | Basic | Basic |
Standard | Standard | Standard |
IPv4とIPv6をStandardで作成します。
ロードバランサー
ロードバランサーを作成しますが、今回はStandardで作成します。
フロントエンドIPアドレス(IPv4)を追加します。
フロントエンドIPアドレス(IPv6)を追加します。
バックエンドプール(IPv4)の追加をします。
バックエンドプール(IPv6)の追加をします。
負荷分散規則(IPv4)を追加します。バックエンドプールはIPv4のバックエンドを指定します。
負荷分散と書かれていますが、ようはAポートからBポートへ転送するだけの設定です。
途中で正常性プローブを設定します。バックエンドではApacheが動いているので80番ポートを監視します。
負荷分散規則(IPv6)を追加します。バックエンドプールはIPv6のバックエンドを指定します。
以上で設定は完了です。
アクセス確認
最初にApacheに問題なくアクセスされているか確認します。
fe80::1234:5678:9abc - - [09/Jan/2022:10:22:34 +0000] "GET / HTTP/1.1" 200 11229 "-" "Load Balancer Agent" 168.63.129.16 - - [09/Jan/2022:10:22:39 +0000] "GET / HTTP/1.1" 200 11229 "-" "Load Balancer Agent" fe80::1234:5678:9abc - - [09/Jan/2022:10:22:40 +0000] "GET / HTTP/1.1" 200 11229 "-" "Load Balancer Agent" 168.63.129.16 - - [09/Jan/2022:10:22:45 +0000] "GET / HTTP/1.1" 200 11229 "-" "Load Balancer Agent" fe80::1234:5678:9abc - - [09/Jan/2022:10:22:46 +0000] "GET / HTTP/1.1" 200 11229 "-" "Load Balancer Agent" 168.63.129.16 - - [09/Jan/2022:10:22:51 +0000] "GET / HTTP/1.1" 200 11229 "-" "Load Balancer Agent"
このようにロードバランサーから正常性プローブによるポーリングがあります。
次に外部からロードバランサーにアクセスして問題なくアクセスできるか確認します。
PS C:\Users\user1> curl.exe -I http://52.137.99.204 HTTP/1.1 200 OK Date: Sun, 09 Jan 2022 10:26:07 GMT Server: Apache/2.4.41 (Ubuntu) Last-Modified: Sun, 09 Jan 2022 10:20:27 GMT ETag: "2aa6-5d523919efe19" Accept-Ranges: bytes Content-Length: 10918 Vary: Accept-Encoding Content-Type: text/html
IPv4でアクセスできることが確認できました。
IPv6でも確認します。
PS C:\Users\user1> curl.exe -I http://[2603:1030:c02:8::3d] HTTP/1.1 200 OK Date: Sun, 09 Jan 2022 10:28:15 GMT Server: Apache/2.4.41 (Ubuntu) Last-Modified: Sun, 09 Jan 2022 10:20:27 GMT ETag: "2aa6-5d523919efe19" Accept-Ranges: bytes Content-Length: 10918 Vary: Accept-Encoding Content-Type: text/html
アクセスできています。
アクセスログも確認してみます。
106.72.45.96 - - [09/Jan/2022:10:26:07 +0000] "HEAD / HTTP/1.1" 200 255 "-" "curl/7.55.1" 240b:10:2d60:8500:6aff::1002 - - [09/Jan/2022:10:28:15 +0000] "HEAD / HTTP/1.1" 200 255 "-" "curl/7.55.1"
IPv4、IPv6でログが残っていることが確認できます。
これで、IPv6の検証が行える環境が整いました。
あとはいろいろと検証ができると思います。
まとめ
IPv6を仮想マシン単体で利用する方法を書きました。IPv6で受け付ける検証ができたので、Azure内の検証に役立つかと思います。