2026年5月24日

2026年5月24日

AAAAレコード(IPv6)の設定方法と追加前に確認すること

AAAAレコードは、ホスト名にIPv6アドレスを結び付けるDNSレコードです。登録作業自体は管理画面で1行足すだけですが、サーバーがIPv6で実際に応答できる状態になってから追加しないと、IPv6回線の利用者や一部のクローラーだけがつながらない、という気づきにくい障害になります。この記事では、サーバー側の準備確認、Webサーバーとファイアウォールの設定、AAAAレコードの登録、外部からの動作確認、WordPress運用で影響が出る箇所までを順に説明します。

AAAAレコードを足すと何が変わるか

AレコードがIPv4アドレスを返すのに対し、AAAAレコードはIPv6アドレスを返します。両方が登録されていると、IPv6に対応した回線の利用者は多くの場合IPv6を優先して接続します。

最近のブラウザは「Happy Eyeballs」という仕組みで、IPv6の接続がすぐに確立しなければIPv4に切り替えます。そのためブラウザでは壊れていても気づきにくい一方、curl や wget、サーバー間通信、検索エンジンや監視サービスのクローラーなどは切り替えが遅い、または行わない場合があります。「自分のブラウザでは開けるのに、監視だけがタイムアウトする」という症状は、AAAAが指しているIPv6側が応答していない典型例です。

手順1: サーバーにIPv6アドレスと経路があるか確認する

VPSやクラウドでは、IPv6は契約やインスタンスの設定で有効にする必要があることが多く、管理画面でアドレスが割り当てられていても、OS側に設定されていないことがあります。まずサーバー上で確認します。

# グローバルなIPv6アドレスが付いているか(2001: や 240x: などで始まる)
ip -6 addr show scope global

# IPv6のデフォルトルートがあるか
ip -6 route show default

# 外部のIPv6ホストへ到達できるか
ping -6 -c 3 2001:4860:4860::8888
curl -6 -sI https://www.google.com/ | head -n 1

fe80:: で始まるアドレスはリンクローカルで、インターネットからは届きません。グローバルアドレスが無い、またはデフォルトルートが無い場合は、事業者のドキュメントに沿ってネットワーク設定(netplan や NetworkManager など)を先に整えてください。ここが通らないうちはAAAAレコードを登録しません。

手順2: Webサーバーを IPv6 で待ち受けさせる

アドレスがあっても、WebサーバーがIPv6で待ち受けていなければ接続は拒否されます。

Nginxは、listen にIPv6用の行を明示する必要があります。

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com www.example.com;
    # ...
}

Apacheは Listen 80 や Listen 443 のようにアドレスを指定していなければ、通常はIPv4とIPv6の両方で待ち受けます。Listen 0.0.0.0:80 のようにIPv4アドレスを指定している場合はIPv6で受け付けないので書き換えます。

設定後は構文チェックをしてから再読み込みし、待ち受け状態を確認します。

sudo nginx -t && sudo systemctl reload nginx
sudo ss -tlnp | grep -E ':(80|443)\s'
# [::]:443 や *:443 が表示されれば IPv6 でも待ち受けている

手順3: ファイアウォールのIPv6ルールを確認する

IPv4とIPv6のファイアウォールは、別々に管理されていることがよくあります。IPv4では80・443番を開けているのに、IPv6は初期状態で全部閉じている、という状態が起こりがちです。

  • ufw: /etc/default/ufw の IPV6=yes を確認します。有効なら ufw allow 443/tcp などのルールはIPv6にも適用され、sudo ufw status で「(v6)」付きの行が表示されます。
  • iptables を直接使っている場合: IPv6は ip6tables で別に設定します。nftables の inet ファミリーなら、1つのルールで両方を扱えます。
  • クラウドのセキュリティグループ: AWSのセキュリティグループなどでは、IPv4の 0.0.0.0/0 とは別に、IPv6の ::/0 からの許可ルールを追加する必要があります。

SSHのIPv6ルールを変更するときは、別のセッションで接続を残したまま作業し、閉め出されないようにしてください。

手順4: AAAAレコードを登録する

サーバーの準備ができたら、DNSの管理画面でレコードを追加します。

; ゾーンファイルで書く場合の例(2001:db8:: は説明用のアドレス)
example.com.      300  IN  AAAA  2001:db8:10::10
www.example.com.  300  IN  AAAA  2001:db8:10::10
  • ホスト名: ルート(@ や空欄)と、必要なら www などのサブドメインに登録します。www がCNAMEで example.com を指しているなら、www にAAAAを足す必要はありません(CNAMEと他のレコードは同じ名前に共存できません)。
  • 値: サーバーに割り当てられたIPv6アドレスを、そのまま記入します。2001:db8:0:0:0:0:0:10 のような省略しない形でも、:: で省略した形でもかまいません。
  • TTL: 最初は300秒程度にしておくと、問題があったときにレコードを消してすぐ戻せます。安定したら通常の値(3600秒など)に延ばします。

登録後、DNSの応答を確認します。

dig +short example.com AAAA
dig +short www.example.com AAAA

手順5: 外部からIPv6で接続して確認する

サーバー自身から自分のアドレスへの接続は、外部からの経路を確認したことになりません。IPv6が使える別のマシン(自宅のIPv6回線、別のVPSなど)から確認します。

# IPv6を強制して接続
curl -6 -sI https://example.com/

# IPv4側も引き続き動いているか
curl -4 -sI https://example.com/

両方で同じステータスコードが返れば完了です。手元にIPv6環境が無い場合は、IPv6での到達性を外部から確認できるオンラインのチェックサービスもあります。提供内容は変わることがあるため(2026年10月現在)、使う前にサービスの説明を確認してください。

証明書はホスト名に対して発行されるので、AAAAを足しても作り直す必要はありません。ただし、Let's EncryptのHTTP-01検証は、AAAAレコードがあるとIPv6での接続を優先して試みます。IPv6側が応答しないと、それまで通っていた更新が失敗することがあるので、登録後に sudo certbot renew --dry-run で確認しておくと安心です。

WordPress運用で影響が出るところ

IPv6で接続されるようになると、訪問者のIPアドレスがIPv6形式(2001:db8::1234 のような形)で記録されます。次の箇所を見直してください。

  • 管理画面のIP制限: .htaccess や Nginx で wp-admin や wp-login.php へのアクセスを特定IPに限っている場合、自分の接続がIPv6になると閉め出されます。自分のIPv6アドレス(またはプレフィックス)も許可に加えてください。閉め出された場合は、SSHやFTPで該当の設定を一時的に外すと復旧できます。
  • セキュリティ系プラグインの許可・拒否リスト: Wordfence などのプラグインもIPv6を扱えますが、許可リストにIPv4しか登録していなければ同様の問題が起きます。
  • リバースプロキシ・CDN経由の場合: 実際の訪問者IPをヘッダーから取り出す設定がIPv6にも対応しているか、プラグインやサーバー設定のドキュメントで確認します。
  • 独自にIPアドレスを保存しているコード: IPv6は最長45文字(IPv4射影表記を含む場合)になるため、VARCHAR(15) のように短い列だと切り詰められます。比較や保存には PHP の filter_var( $ip, FILTER_VALIDATE_IP ) で形式を検証してから扱ってください。
  • サーバーからのメール送信: 送信もIPv6で行われるようになると、受信側はIPv6アドレスの逆引き(PTRレコード)やSPFを確認します。メールを直接送っているサーバーでは、IPv6用の逆引きとSPFの ip6: 指定も整えてください。

まとめ

  • AAAAレコードは、サーバーのIPv6アドレス・経路・Webサーバーの待ち受け・ファイアウォールを整えてから登録します。
  • 準備不足のまま登録すると、ブラウザでは気づかず、監視やクローラー、証明書の更新だけが失敗することがあります。
  • 登録は短いTTLで始め、外部のIPv6環境から curl -6 で確認し、certbot renew --dry-run も通しておきます。
  • WordPress側では、IP制限・セキュリティプラグインの許可リスト・IPを保存する列の長さ・メール送信の逆引きを見直します。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲