GitHub Pagesに独自ドメインを割り当てる手順とDNSの基礎(レジストラ/レジストリ/NSの関係)

概要

GitHub Pages に独自ドメインを割り当てるための最短手順と、レジストラ・レジストリ・権威DNS・NSレコードなどの用語関係を図解で整理。初心者でも“どこで何を設定するか”がわかるようにまとめました。

この記事は匿名の個人メモです。 例として example.com / www.example.comusername.github.io を使用します。

0. まず結論(最短手順)

GitHub Pages に独自ドメインをつなぐ最小セットはこれだけ:

  1. GitHub(リポジトリ → Settings → Pages)で Custom domain に example.com を保存(CNAME ファイルが自動作成される場合あり)。

  2. DNS(権威DNSの管理画面)でレコードを追加:

    • Apex(example.com) … A を4件

      1
      2
      3
      4
      
      A     185.199.108.153
      A     185.199.109.153
      A     185.199.110.153
      A     185.199.111.153
      

      ApexにCNAMEは置けません。

    • www(www.example.com) … CNAME を username.github.io に向ける(末尾ドット不要)。

  3. HTTPS を有効化(GitHub Pages の Enforce HTTPS をON)。

→ 反映後、example.com / www.example.com のどちらでも Pages サイトに到達します。

1. 用語の整理:誰が何をしている?

  • Registrant(登録者) … あなた。ドメインの所有者。
  • Registrar(レジストラ) … ドメインの“販売・窓口”。例:お名前.com, Route 53 Domains, Cloudflare Registrar など。
  • Registry(レジストリ) … TLD を運用する主体。例:.com の Verisign、.jp の JPRS。.com」や「.net」「.jp」などのトップレベルドメイン毎に1つのみ存在する一番上位の機関をいいます。
  • Authoritative DNS(権威DNS) … そのドメインの最終的な答え(A/AAAA/CNAME/MX/TXT…)を返すDNS。例:01–04.dnsv.jp(お名前.com DNS)、Cloudflare DNS、Route 53 Hosted Zone など。
  • Recursive Resolver(再帰DNS) … 8.8.8.8 / 1.1.1.1 など。クライアントの代わりに辿って答えをキャッシュしてくれる。
  • NSレコード(Name Server) … 「このドメインの権威DNSはどれか」を親ゾーンに教える“委任”情報。
  • DSレコード … DNSSEC を使う場合、親ゾーンに登録する検証用情報。

ポイント:レジストラは必ずしも自社DNSを提供するわけではありませんが、多くは権威DNSサービスも提供しています(お名前.comの dnsv.jp など)。一方、Cloudflare や Route 53 は「レジストラ機能」も「権威DNS」も提供可能です。


2. 名前解決の全体像(ざっくり図解)

graph TD A[ブラウザ/OS] --> B[再帰DNS] B --> C[ルート .] C --> D[.com(レジストリ)] D --> E[ns*.example-dns.tld(権威DNS)] E --> F[A/AAAA/CNAME の最終回答]
  • NSレコードは「どこに聞くか」を指す案内板。A/AAAA/CNAMEといった中身の答えは権威DNSが持っています。
  • 複数のAレコードを返した場合、どのIPに接続するかはクライアント側(OS/ブラウザ)の実装次第(順番に試す・並行接続・失敗時切替など)。

3. GitHub Pages × 独自ドメイン:具体手順

3.1 GitHub 側の設定

  • リポジトリ → Settings → Pages → Custom domain に example.com を保存。
  • Enforce HTTPS をON(Let’s Encrypt による証明書が自動発行)。

3.2 DNS 側の設定(権威DNSの画面)

  • Apex(example.com):A を4件、可能なら AAAA も4件(上記一覧を転記)
  • www(www.example.com):CNAME → username.github.io
  • ApexにCNAMEは不可。もし DNS が ALIAS / ANAME をサポートしているなら、それを username.github.io に向けてもOK(提供事業者による)。

3.3 反映確認(dig 例)

1
2
3
4
dig NS example.com @a.gtld-servers.net +short
dig example.com A +short
dig example.com AAAA +short
dig www.example.com CNAME +short

4. よくある疑問と注意点

Q1. Aレコードは1つでも動く?動くことはありますが、4つ全部(`185.199.108.153–111.153`)を入れるのが実務推奨。
Q2. “浸透待ち”って何?再帰DNSのキャッシュTTLが更新されるのを待つこと。数分〜数時間、場合によっては24–48時間程度。
Q3. `www` にも A/AAAA を入れていい?推奨しません。 `www` は CNAME → `username.github.io` のみ。
Q4. Apex に CNAME を置けないのはなぜ?DNS仕様上、ゾーンの頂点にCNAMEを置くと他レコードと両立できません。代替は A/AAAA か、DNS事業者の ALIAS/ANAME。
Q5. NS はどこで決まる?レジストラの管理画面で設定し、レジストリ(例:`.com`=Verisign)へ登録されます。

5. 役割の違いをもう一度(誤解しがちなポイント)

  • レジストラ … レジストリに NS(+DS) を登録する“窓口”。
  • レジストリ … 親ゾーンに NS(委任) を掲載。A/AAAA/CNAME等は保持しない。
  • 権威DNS … A/AAAA/CNAME/MX/TXT…の最終回答を返すサーバー群。

6. 仕上げチェックリスト(コピペ用)

  • GitHub → Pages → Custom domain に example.com
  • Enforce HTTPS ON
  • Apex に A ×4(185.199.108.153〜111.153)
  • Apex に AAAA ×4(2606:50c0:8000::153::8003::153)※対応時
  • www に CNAME → username.github.io
  • (任意)CAA letsencrypt.org
  • dig で NS / A / AAAA / CNAME を確認

以上。この記事の手順をそのまま置換すれば、Hugo/静的サイトでも数分で独自ドメイン化できます。

あらためて、設定例をまじえて手順をまとめます。

7 GitHub Pagesとお名前.comの最終設定手順

1. GitHub Pages 側の設定

  1. GitHubリポジトリの Settings → Pages へ移動します。
  2. 「Custom domain」にあなたの独自ドメイン(例:example.com)を入力します。
  3. 「Enforce HTTPS」にチェックを入れます。
  4. GitHubが自動的に Let’s Encrypt 証明書を発行します。

2. お名前.com側のDNSレコード設定例

お名前.comのDNSレコード設定で、以下のように登録します。
(TTLや優先度はデフォルト値のままで問題ありません。)

ホスト名TYPETTLVALUE備考
example.comNS8640001.dnsv.jpネームサーバ
example.comNS8640002.dnsv.jpネームサーバ
example.comNS8640003.dnsv.jpネームサーバ
example.comNS8640004.dnsv.jpネームサーバ
example.comA3600185.199.108.153GitHub Pages Aレコード
example.comA3600185.199.109.153GitHub Pages Aレコード
example.comA3600185.199.110.153GitHub Pages Aレコード
example.comA3600185.199.111.153GitHub Pages Aレコード
www.example.comCNAME3600username.github.ioGitHub Pages CNAME

🔁 補足: username.github.io の部分は、自分のGitHub Pages用URLに置き換えてください。


3. 注意点

  • 設定変更後、反映までに最大で 24時間 ほどかかる場合があります。
  • HTTPS有効化がうまくいかない場合は、GitHub Pagesのドメイン設定を削除 → 再登録 すると解決することがあります。
  • www サブドメインを使う場合は CNAME、ルートドメイン(例:example.com)を使う場合は Aレコード を設定します。

4. まとめ

項目設定内容
独自ドメインお名前.comなどで取得
DNS設定GitHub Pages推奨A/CNAMEを登録
HTTPSGitHub Pagesで自動発行(Let’s Encrypt)
所要時間数時間〜1日で反映完了
技術ネタ、趣味や備忘録などを書いているブログです
Hugo で構築されています。
テーマ StackJimmy によって設計されています。