Aレコードとは?IPv4アドレスへの対応付けとAAAA/CNAMEとの違い・書き方・digでの確認を実装者向けに解説
Aレコード(Address record)とは、DNSで「www.example.com」のようなドメイン名を「192.0.2.10」といったIPv4アドレスに対応付けるレコードです。ブラウザやアプリがサーバーへ接続する直前、名前解決の最終段でこのAレコードが引かれ、実際の接続先IPが決まります。この記事では、ゾーンファイルでのAレコードの書き方とTTLの意味、AAAA・CNAME・ALIASとの使い分け、同名に複数のAレコードを置くラウンドロビン、Route 53でのapex(ルートドメイン)設計、そしてdigでの確認と切り替え手順までを、実装者が手を動かせる粒度で整理しました。DNS全体の流れを先に押さえたい場合は名前解決とは?DNSの仕組み・正引き/逆引き・dig/nslookupでの確認方法を実装者向けに解説を土台にすると、本記事のAレコードの位置づけが掴みやすくなります。
目次
まとめ:Aレコードの役割と実装者がまず押さえる要点
Aレコードは「ドメイン名 → IPv4アドレス」という正引きの答えそのものを保持するレコードです。名前解決の反復問い合わせが権威DNSサーバーへたどり着いた最後に、この1行が返ってIPが確定します。IPv6アドレスを返す場合は同じ役割のAAAAレコードを使い、両者はレコードタイプが違うだけで用途は対になります。
実装者の観点では、次の3点を分けて理解すると設計と障害切り分けが速くなります。第一に、Aレコードは「名前」と「IPv4アドレス」の対応を1対1でも1対多でも持て、同名に複数書けばDNSラウンドロビンで粗い分散ができるのが利点です。第二に、別名を張るCNAMEはゾーンの頂点(apex、例:example.com そのもの)には置けず、頂点でロードバランサーへ向けたいときはAレコードやクラウド固有のAlias機能を使います。第三に、Aレコードの答えはTTL(Time To Live)秒数だけ各所にキャッシュされ、書き換えても即座には反映されません。以降の章で、この3点を順に掘り下げます。
DNSにおけるAレコードの定義とゾーンファイルでの基本的な書き方
Aレコードが対応付ける「名前」と「IPv4アドレス」の基本関係
Aレコードの左辺は名前、右辺はIPv4アドレスです。左辺の名前は完全修飾ドメイン名(FQDN)で解釈され、右辺は「192.0.2.10」のようなドット区切りの32ビットアドレスを取ります。左辺に何を書けるか、ホスト名とドメイン名がどう連なるかを厳密に押さえたい場合はFQDNとは?ドメイン名・ホスト名との違いと書き方・確認方法を実装者向けに解説を先に確認してください。右辺のIPv4アドレスがインターネットに公開する種類なのか内部専用なのかという区分はグローバルIPとは?プライベートIPとの違い・確認方法・仕組みを実装者向けに解説で整理しています。公開サーバーのAレコードにはグローバルIPを、社内システムのAレコードにはプライベートIPを対応付けるのが基本の切り分けです。
ゾーンファイルでのAレコードの記法とTTL・末尾ドットの意味
権威DNSサーバーが読むゾーンファイルでは、Aレコードは次のように1行で表します。
| フィールド | 例 | 意味 |
|---|---|---|
| 名前 | www.example.com. | 対応付ける名前(末尾ドットはルート起点の絶対表記) |
| TTL | 300 | この答えをキャッシュしてよい秒数 |
| クラス | IN | インターネットを表すクラス(通常はIN固定) |
| タイプ | A | IPv4アドレスを返すレコードであること |
| 値 | 192.0.2.10 | 返すIPv4アドレス |
並べるとwww.example.com. 300 IN A 192.0.2.10となります。名前の末尾ドットは「ルートを起点とした絶対表記」を意味し、ドットを付け忘れるとゾーンのドメイン名が補われて意図しない名前(www.example.com.example.com)になる事故が起きます。ゾーンファイルの先頭の$TTLで既定TTLをまとめて指定し、個々のAレコードで上書きも可能です。GUIのDNS管理画面ではこの各フィールドが入力欄に分かれているだけで、内部で持つ情報は同じです。
AAAA・CNAME・ALIASとAレコードの使い分けと注意点
IPv4のAとIPv6のAAAA、名前を返すCNAMEの違い
混同しやすい3つのレコードを対比します。AレコードはIPv4アドレスを、AAAAレコードはIPv6アドレスを返し、どちらも右辺はアドレスです。対してCNAMEレコードの右辺はアドレスではなく別の名前で、「この名前は実体としてあちらの名前」と別名を張ります。CNAMEを引いた解決側は、示された先の名前をあらためて引き直してAレコード(またはAAAA)へ到達します。IPv4とIPv6の両方でサービスを公開するなら、同じ名前にAとAAAAを併記するのが一般的な構成です。
| レコード | 右辺が返すもの | 主な用途 | ゾーン頂点(apex)への設置 |
|---|---|---|---|
| A | IPv4アドレス | 名前をIPv4へ対応付け | 可 |
| AAAA | IPv6アドレス | 名前をIPv6へ対応付け | 可 |
| CNAME | 別の名前 | 別名(www→本体など) | 不可(規格上置けない) |
ゾーン頂点でCNAMEが使えない制約とALIAS/ANAMEでの回避
実装で最初にぶつかる制約が、ゾーンの頂点(example.com そのもの、いわゆるネイキッドドメイン)にはCNAMEを置けない点です。頂点にはSOAやNSレコードが必須で、CNAMEは同じ名前に他のレコードを共存させられないため規格上両立しません。ところがロードバランサーやCDNのエンドポイントは名前で払い出されIPが変動するため、頂点をそこへ向けたいときにCNAMEが使えず困ります。この回避策として各社が用意するのがALIAS(Route 53のAlias、他社ではANAME等の名称)で、権威側が対象の名前を解決してAレコードとして応答する擬似レコードです。利用者から見た応答はAレコードなので頂点にも置けます。素のDNSにはこの機能がなく、事業者ごとの拡張である点は設計時に確認します。
複数Aレコードによるラウンドロビンと内部向けAレコードの設計
同名に複数のAレコードを置くDNSラウンドロビンの挙動と限界
1つの名前に複数のAレコードを登録すると、権威DNSサーバーは応答のたびに順序を入れ替えて複数IPを返します。これがDNSラウンドロビンで、問い合わせごとに先頭のIPが変わるため、結果的にアクセスが複数サーバーへ分散します。ただしこれは粗い分散であり、正確な負荷分散ではありません。サーバーがダウンしてもDNSは死活を見ずにそのIPを返し続け、TTLの間はクライアントが故障IPを掴む恐れがあります。可用性を担保するなら、DNSラウンドロビン単体に頼らず、死活監視と連動するロードバランサーや、後述するフェイルオーバー機能を併用する設計が要ります。
内部システム向けAレコードとプライベートDNSでの管理と設計
社内システムやクラウドのVPC内部では、外部に公開しないプライベートIPをAレコードで名前に対応付けます。この内部向けのAレコードは、社内DNSやクラウドのプライベートホストゾーンで管理し、インターネットの権威DNSには載せません。同じ名前を外部と内部で別のIPへ解決させる構成(スプリットビュー)もこの仕組みで実現します。内部名前解決の設計はプライベートDNSとは?内部名前解決の仕組み・Route 53プライベートホストゾーン・設計を実装者向けに解説で扱っており、どのAレコードを外に出しどれを内に閉じるかの線引きが設計の勘所です。内部Aレコードを誤って公開ゾーンへ書くと、社内アドレス構成が外部から読めてしまうため、公開範囲は登録先ゾーンで厳密に分けます。
クラウドでのAレコード設計とdigコマンドでの確認・切り替え手順
Route 53などマネージドDNSでのAレコードとフェイルオーバー設計
クラウドのマネージドDNSでは、Aレコードに各社固有の付加機能を組み合わせます。ロードバランサーやCDNを頂点へ向けるにはAlias、複数リージョンの切り替えにはヘルスチェックと連動したフェイルオーバールーティング、地理や遅延に応じた振り分けには対応するルーティングポリシーを、いずれもAレコード(またはAlias)に紐づけて設定します。DNSラウンドロビンでは拾えなかった「故障時に生きているIPだけを返す」挙動が、ヘルスチェック連動で実現できる点が要所です。こうしたAレコードのルーティング設計やハイブリッド構成での内部・外部の名前設計は初期の切り分けが難しく、要件に合わせた設計から任せたい場合は一創のインフラ構築(AWS/GCP/Azure)でご相談ください。名前が正しいIPへ解決されるかは可用性そのものに直結するため、冗長化とあわせて初期設計で固めます。
digでAレコードを確認する手順とTTLを踏まえた切り替えの実務
Aレコードの確認はdigが第一候補です(Windowsは標準のnslookupでも確認できます)。よく使う形は次の通りです。
dig www.example.com A +short:AレコードのIPv4アドレスだけを簡潔に表示。dig www.example.com A +noall +answer:TTL付きで回答行を確認。dig www.example.com A @8.8.8.8:問い合わせ先のキャッシュDNSサーバーを明示して切り分け。dig www.example.com AAAA +short:対になるIPv6(AAAA)の有無も併せて確認。
回答行がwww.example.com. 300 IN A 192.0.2.10なら、左から名前・TTL・クラス・タイプ・値で、TTLは300秒です。Aレコードを別IPへ切り替える作業では、まず数日前にTTLを短く(例:300秒)下げておき、旧IPのキャッシュが各所から抜けるのを待ってから値を書き換えます。切り替え後に旧サーバーへ届く残存アクセスがTTLの経過で収束したのを確認し、TTLを元へ戻すのが定石です。ステータスがNXDOMAINなら名前自体が無く、応答はあるがAが無いなら他タイプ(CNAMEやAAAA)だけが登録されている状態を疑います。
よくある質問
Aレコードの実務でつまずきやすい点を、5つの質問に絞って答えます。
AレコードとAAAAレコードは両方登録すべきですか?
IPv6でもサービスを公開するなら、同じ名前にAレコード(IPv4)とAAAAレコード(IPv6)を併記します。多くのクライアントはAAAAがあればIPv6を先に試し、失敗するとIPv4へ回る挙動です。IPv6の受け口を用意していないのにAAAAだけ残っていると、IPv6優先の端末で接続が遅延・失敗することがあるため、公開する実体に合わせてAとAAAAの整合を取ります。IPv4のみで公開するなら、Aレコードだけで問題ありません。
AレコードとCNAMEレコードはどう使い分けますか?
名前を直接IPv4アドレスへ向けるのがAレコード、ある名前を別の名前の別名にするのがCNAMEです。IPが固定のサーバーへ向けるならA、複数の名前を1つの本体名にまとめたいならCNAMEが向きます。ただしCNAMEはゾーンの頂点(example.com そのもの)には置けず、同名に他のレコードを共存できないのが規格上の制約です。頂点をロードバランサーへ向けたいときはAレコードか、Route 53のAlias等の擬似レコードを使います。
ルートドメイン(example.com)にAレコードは設定できますか?
設定できます。ゾーンの頂点にAレコードを置くのは規格上問題なく、固定IPのサーバーへ向けるなら頂点に直接Aレコードを書く形です。問題になるのは、頂点をIPが変動するロードバランサーやCDNへ向けたい場合で、そこではCNAMEが使えないためAliasやANAMEといった事業者拡張を用います。固定IPならAレコード1本で完結し、変動する宛先なら拡張機能を検討する、という切り分けです。
Aレコードを変更したのに反映されないのはなぜですか?
各所のキャッシュにTTLの秒数だけ古いIPが残るためです。digの回答行のTTL値が保持時間で、これがゼロになるまで新しいIPは配られません。切り替え作業の前にTTLを短く(例:300秒)下げ、旧値の伝播が抜けるのを待ってから書き換え、完了後に戻すのが定石です。加えてブラウザやOSのローカルキャッシュも残るため、端末側でのキャッシュクリアも合わせて確認します。名前解決全体の伝播やキャッシュの考え方は名前解決とは?DNSの仕組み・正引き/逆引き・dig/nslookupでの確認方法を実装者向けに解説で整理しています。
1つの名前に複数のAレコードを登録するとどうなりますか?
権威DNSサーバーが応答のたびに順序を入れ替えて複数IPを返し、DNSラウンドロビンとしてアクセスが分散します。ただしDNSは各IPの死活を見ないため、故障したサーバーのIPもTTLの間は返り続けるのが弱点です。障害時に自動で生きたIPだけを返したいなら、ヘルスチェックと連動するマネージドDNSのフェイルオーバーや、前段のロードバランサーを併用します。複数Aレコードは手軽な分散ですが、可用性の担保には別の仕組みを重ねる前提で設計します。
関連記事
- 名前解決とは?DNSの仕組み・正引き/逆引き・dig/nslookupでの確認方法を実装者向けに解説:Aレコードが引かれるDNS全体の流れと、正引き・逆引きの位置づけを土台から押さえられます。
- FQDNとは?ドメイン名・ホスト名との違いと書き方・確認方法を実装者向けに解説:Aレコードの左辺となる「名前」の正確な構造(ホスト名+ドメイン名)を確認できます。
- グローバルIPとは?プライベートIPとの違い・確認方法・仕組みを実装者向けに解説:Aレコードの右辺となるIPv4アドレスの公開範囲と種類の前提を整理できます。
- プライベートDNSとは?内部名前解決の仕組み・Route 53プライベートホストゾーン・設計を実装者向けに解説:外部に出さない内部向けAレコードの管理と設計を深掘りできます。