| この記事の要点 |
|
DNS設定の全体像
DNS(Domain Name System)は「ドメイン名 ⇔ IPアドレス」を相互変換する仕組みです。サイトを公開する際は、取得したドメインに対して どのサーバを向けるか をレコードで宣言する必要があります。設定は通常、以下のどちらかの管理画面で行います。
- ドメインレジストラ(お名前.com / ムームー / Google Domains 廃止後の Squarespace / GoDaddy など)の DNS タブ
- 外部 DNS ホスティング(Cloudflare / Amazon Route 53 / Google Cloud DNS など)。レジストラ側で NS レコードを外部ホスティングに委任する
自前で BIND / Unbound / NSD を立てて権威サーバを運用する選択肢もありますが、可用性・DDoS 耐性・運用工数の観点から、よほどの理由がない限りクラウド DNS ホスティングを使うのが現代的です。
主要なレコード種別
| 種別 | 用途 | 値の例 |
|---|---|---|
| A | ホスト名 → IPv4 アドレス | 203.0.113.10 |
| AAAA | ホスト名 → IPv6 アドレス | 2001:db8::1 |
| CNAME | 別名(エイリアス)。別ホスト名を参照 | example.cloudfront.net. |
| MX | メールサーバの宛先と優先度 | 10 mail.example.com. |
| TXT | SPF / DKIM / 所有権確認 / 任意テキスト | "v=spf1 include:_spf.google.com ~all" |
| NS | サブドメインを別の権威サーバに委任 | ns-123.awsdns-15.com. |
| SOA | ゾーンの管理情報(自動生成が普通) | シリアル / TTL 群 |
| CAA | 許可する証明書発行 CA を宣言 | 0 issue "letsencrypt.org" |
CNAME を使うときの注意
RFC 上、ゾーン頂点(ルート / Apex)に CNAME は置けません。example.com(@)に CNAME を入れたい場合は、Route 53 の Alias、Cloudflare の CNAME Flattening、その他「ANAME / ALIAS」と呼ばれる擬似機能を使います。サブドメイン www.example.com なら通常の CNAME で問題ありません。
設定手順(一般的なホスティング管理画面)
- レジストラまたは DNS ホスティングの管理画面にログインし、対象ドメインのゾーン編集を開く
- レコード一覧で「追加」を選び、種別(A / CNAME / MX など)を選択
- 名前(ホスト名)と値を入力。
@はゾーン頂点、*はワイルドカード - TTL を指定(通常は 3600 秒。切り替え前は 300 秒など短めに)
- 保存し、伝播を
digや Web ツールで確認
dig / nslookup での確認
# A レコードを引く
dig example.com A +short
# 特定の権威 DNS に直接問い合わせる(キャッシュ無視)
dig @ns1.example.com example.com A
# MX レコード
dig example.com MX +short
# TXT(SPF / DKIM)
dig example.com TXT +short
dig default._domainkey.example.com TXT
# Windows / クロス OS なら nslookup
nslookup -type=A example.com 8.8.8.8
TTL の考え方
TTL(Time To Live)はキャッシュサーバが応答を保持する秒数です。長くするほど権威 DNS への問い合わせが減り表示が速くなる反面、変更の反映が遅くなります。
| シーン | 推奨 TTL |
|---|---|
| 通常運用 | 3600 秒(1 時間) |
| サーバ移行直前 | 300 秒(5 分)に下げる(24 時間前から) |
| 移行完了後 | 3600 秒以上に戻す |
| 滅多に変えないレコード(NS / CAA) | 86400 秒(24 時間) |
メール関連(MX + SPF + DKIM + DMARC)
「メールが届かない / 迷惑メール扱いされる」原因の多くは DNS です。最低限以下 4 つを揃えます。
; MX: メール受信先
example.com. IN MX 10 mail.example.com.
; SPF: 送信元 IP を宣言(TXT として)
example.com. IN TXT "v=spf1 include:_spf.google.com ~all"
; DKIM: 公開鍵(DKIM プロバイダから発行される)
selector._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0..."
; DMARC: 認証失敗時の挙動を宣言
_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"
DNSSEC
DNSSEC は応答に署名を付け、改ざんを検知する仕組みです。中間者攻撃や DNS キャッシュポイズニングを防ぎます。
- DNS ホスティング側で DNSSEC を有効化(鍵が自動生成される)
- 表示される DS レコード(Delegation Signer)をレジストラの管理画面で登録
dig +dnssec example.comでadフラグが付くか確認
DS レコード登録を忘れると DNSSEC が「鍵だけある」状態になり、検証が機能しません。逆に DS を消し忘れたままゾーンを引っ越すと、検証エラーで全断する事故が起きます。
反映までの時間と確認の流れ
| 段階 | 所要時間の目安 |
|---|---|
| 権威 DNS に反映 | 数秒〜数分(保存と同時) |
| キャッシュ DNS(ISP / 8.8.8.8 など) | TTL ぶん(通常 5 分〜1 時間) |
| 世界中の DNS リゾルバへ伝播 | 最大 24〜48 時間 |
| ブラウザの内部 DNS キャッシュ | 数分(再起動またはフラッシュで即時) |
確認には whatsmydns.net や dnschecker.org など、世界中の地点から同時に解決して見せるサービスが便利です。
よくあるエラーと対処
| 症状 | 原因 / 対処 |
|---|---|
| ブラウザだけ古い IP を引く | OS / ブラウザの DNS キャッシュ。ipconfig /flushdns(Win)/ dscacheutil -flushcache(mac) |
| NXDOMAIN(ドメインが見つからない) | NS 委任ミス / レジストラでネームサーバ未設定。レジストラ側の NS 設定を確認 |
| CNAME を入れたら他のレコードが効かない | RFC 上、CNAME を置いたホストには他レコードを共存させられない。Apex なら ALIAS / Route 53 Alias を使う |
| メールが SPF で reject される | SPF レコードに送信元(SaaS のサーバ)を含めていない。include: を追加 |
| DNSSEC 検証エラー(SERVFAIL) | 引っ越し時に DS の更新漏れ。レジストラの DS を新ホスティング側の鍵に合わせる |
関連
子ページはありません
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15