はじめに
IPv6の検証を行うためにバックエンドに仮想マシンを構築する場合にHttpdをインストールします。
選択しとしてほぼ3つだと思います。
- Apache
- nginx
- IIS
特にFront Doorの検証を行った場合に問題が発生したので紹介します。
下記のような場合に発生しました。Front Doorより後ろがIPv6で通信される場合です。
問題と解決
結論としてはnginxを使用してください。
nginx
IPv4
PS C:\Users\user1> curl.exe -I -4 http://fdipv6.azurefd.net HTTP/1.1 200 OK Content-Length: 612 Content-Type: text/html Last-Modified: Sun, 09 Jan 2022 17:26:08 GMT Accept-Ranges: bytes ETag: "61db1ab0-264" X-Cache: CONFIG_NOCACHE X-Azure-Ref: 0SivcYQAAAABJlRD/IhoZRZq15nOkWakrVFlPMDFFREdFMjMwOQAwZWQzZGEyZi1lOWFlLTRkZWYtYmU3NS0zYTQ0ZWFkYTg4NTQ= Date: Mon, 10 Jan 2022 12:49:13 GMT
IPv6
PS C:\Users\user1> curl.exe -I -6 http://fdipv6.azurefd.net HTTP/1.1 200 OK Content-Length: 612 Content-Type: text/html Last-Modified: Sun, 09 Jan 2022 17:26:08 GMT Accept-Ranges: bytes ETag: "61db1ab0-264" X-Cache: CONFIG_NOCACHE X-Azure-Ref: 0XivcYQAAAABIYOW/Mm3UT64/AAQ1JlOWVFlPMDFFREdFMjMxMwAwZWQzZGEyZi1lOWFlLTRkZWYtYmU3NS0zYTQ0ZWFkYTg4NTQ= Date: Mon, 10 Jan 2022 12:49:34 GMT
Apache
IPv4
PS C:\Users\user1> curl.exe -I -4 http://fdipv6.azurefd.net HTTP/1.1 400 Bad Request Content-Length: 0 Content-Type: text/html; charset=iso-8859-1 X-Cache: CONFIG_NOCACHE X-Azure-Ref: 0tyjcYQAAAABmOR6Yl0C1T7nxNVgj70WrVFlPMDFFREdFMjQxOQAwZWQzZGEyZi1lOWFlLTRkZWYtYmU3NS0zYTQ0ZWFkYTg4NTQ= Date: Mon, 10 Jan 2022 12:38:15 GMT
IPv6
PS C:\Users\user1> curl.exe -I -6 http://fdipv6.azurefd.net HTTP/1.1 400 Bad Request Content-Length: 0 Content-Type: text/html; charset=iso-8859-1 X-Cache: CONFIG_NOCACHE X-Azure-Ref: 0RSjcYQAAAABS0qZOPP3MTLbLUBdO5IZyVFlPMDFFREdFMjMwOAAwZWQzZGEyZi1lOWFlLTRkZWYtYmU3NS0zYTQ0ZWFkYTg4NTQ= Date: Mon, 10 Jan 2022 12:36:20 GMT
IIS
IPv4
PS C:\Users\user1> curl.exe -I -4 http://fdipv6.azurefd.net HTTP/1.1 400 Bad Request Content-Length: 334 Content-Type: text/html; charset=us-ascii X-Cache: CONFIG_NOCACHE X-Azure-Ref: 0KSzcYQAAAAAbCWgFkbi5TpsmWmIX78guVFlPMDFFREdFMjMwNgAwZWQzZGEyZi1lOWFlLTRkZWYtYmU3NS0zYTQ0ZWFkYTg4NTQ= Date: Mon, 10 Jan 2022 12:52:57 GMT
IPv6
PS C:\Users\user1> curl.exe -I -6 http://fdipv6.azurefd.net HTTP/1.1 400 Bad Request Content-Length: 334 Content-Type: text/html; charset=us-ascii X-Cache: CONFIG_NOCACHE X-Azure-Ref: 0GizcYQAAAADBDJ1RpnNhS74DZzSMI8GIVFlPMDFFREdFMjQxNwAwZWQzZGEyZi1lOWFlLTRkZWYtYmU3NS0zYTQ0ZWFkYTg4NTQ= Date: Mon, 10 Jan 2022 12:52:41 GMT
curlでヘッダーを確認しただけです。
nginxのみ200で問題なく表示されます。これは、Front Doorとの組み合わせた場合に起こります。ロードバランサーのみの場合では起こりません。また、試しにEC2にグローバルIPv6を付与して試したところロードバランサーなしの状態で、直にHttpdにアクセスされる場合でも同様の結果でした。
この結果からnginxを利用するのが手っ取り早いと思います。
まとめ
IPv6環境でHttpdを構築する場合、しかもFront Doorを利用する場合の問題です。問題を解決ずるためにはApacheやIISの設定が必要なのかもしれません。
パケットもダンプしたりしてみましたが解決方法はわかりませんでした。特段、Apache、IISではないとだめとか、すべてIPv6で通信が必要などの条件が無い限りは発生しないと思います。