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を保存する列の長さ・メール送信の逆引きを見直します。