0.初めに
ドメインは、よく「インターネット上の住所」と説明されます。実際その通りで、ネットワーク上のサーバーを特定するには本来 192.0.2.1 のようなIPアドレス(数字の並び)が必要なのですが、これを人間がいちいち覚えるのはさすがに無理があります。そこで、文字列として読みやすくしたものが「ドメイン名」というわけです。
www.example.com
このようなドメインは、裏側でDNS(Domain Name System)という仕組みによって対応するIPアドレスに変換され、ブラウザはそのIPアドレス宛に接続しています。普段意識することはほとんどありませんが、URLを打つたびにこの変換が走っています。
1. ドメインは右から読む階層構造
ドメインはドット(.)で区切られていて、階層構造を持っています。ポイントは、右側が上位、左側が下位(より詳細) という並び方になっていることです。
blog.example.co.jp を例に分解してみると、こうなります。
.
└─ jp
└─ co
└─ example
└─ blog
| 位置 | 例 | 説明 |
|---|---|---|
| トップレベルドメイン(TLD) | jp | 最上位のドメイン |
| 属性ラベル | co | 組織種別を表す |
| 登録ドメイン | example | 組織やサービス固有の名前 |
| サブドメイン | blog | サービスやホストの識別用 |
ちなみに「セカンドレベルドメイン」「サードレベルドメイン」という呼び方は、ドメインの構造によって指すものが変わってくるので少しややこしいところです。たとえば example.com の場合は、
-
.comがトップレベルドメイン -
exampleがセカンドレベルドメイン
という対応になります。属性ラベルが入る co.jp のような構造とは、数え方の感覚が変わる点に注意してください。
2. FQDN(完全修飾ドメイン名)の話
DNSの仕組み上、ドメイン名の末尾には本来「ルート」を表すドットが存在します。
www.example.com.
この末尾の . が、DNSのルートを意味するものです。とはいえ普段の表記ではほぼ省略されていて、
www.example.com
と書くのが一般的です。ブラウザのアドレスバーに打つときにこのドットを付ける人はまずいませんが、知っておくとDNSの仕組みを理解する上で役に立ちます。
3. トップレベルドメイン(TLD)の種類
TLDは大きく2つに分けられます。
① ccTLD(Country Code Top Level Domain)
国や地域ごとに割り当てられたトップレベルドメインです。
-
.jp(日本) -
.us(アメリカ) -
.uk(イギリス) -
.de(ドイツ) -
.fr(フランス) -
.kr(韓国) -
.au(オーストラリア)
ただ、登録条件は国ごとのレジストリ次第でかなり差があります。
-
.jp→ 日本国内の住所が必要 -
.us→ 米国内の連絡先が必要 -
.io→ 世界中から取得可能 -
.tv→ 世界中から取得可能
.io や .tv のように、本来は特定の地域に割り当てられたccTLDでも、実質的に世界中の誰でも取得できるものがある点はちょっと意外に感じるかもしれません。.io はテック系のスタートアップに好まれていることで知られていますが、これは英国領インド洋地域に割り当てられたccTLDで、近年はこの領土の帰属をめぐる政治的な動きとも絡めて話題になることがあります。取得自体は今のところ問題なくできますが、ccTLDは背景にある地域や国の状況に影響されることがある、という点は頭の片隅に置いておくとよいかもしれません。
② gTLD(Generic Top Level Domain)
こちらは特定の国に紐付かず、世界中の誰でも取得できる分野別のトップレベルドメインです。
代表的なものとしては、
-
.com(Commercial) -
.net(Network) -
.org(Organization) -
.info(Information) -
.biz(Business)
があり、近年は新しいgTLDもかなり増えました。
.app.dev.cloud.shop.blog.tokyo
このあたりは、サービスの内容に合わせてドメイン名そのものでブランディングできるのが面白いところです。
4. 属性型JPドメイン
日本には「属性型JPドメイン名」という独自の制度があります。
example.co.jp
example.ac.jp
example.go.jp
組織の種別によって、取得できるドメインがあらかじめ決まっている仕組みです。
| ドメイン | 対象組織 |
|---|---|
| co.jp | 日本国内の企業 |
| or.jp | 社団法人・財団法人など |
| ne.jp | ネットワークサービス事業者 |
| gr.jp | 任意団体 |
| ac.jp | 大学・高専など |
| ed.jp | 小中高校・幼稚園など |
| go.jp | 政府機関 |
| lg.jp | 地方公共団体 |
| ad.jp | JPNIC会員 |
属性型JPドメインは登録時に資格の確認が入るため、信頼性が高いドメインとして扱われる傾向があります。なかでも co.jp は日本国内で登記された法人でなければ取得できないので、「このサイトを運営しているのは確かに実在する会社らしい」という安心材料になりやすい、というのは実務上もよく言われることです。
5. JPドメインの3つの種類
JPドメインは大きく3種類に分かれます。
属性型JPドメイン
example.co.jp
example.ac.jp
先ほど触れたとおり、組織種別ごとに取得条件が決まっています。
汎用JPドメイン
example.jp
企業でも個人でも取得できるタイプです。現在の日本では、もっとも柔軟に使われているJPドメインだと言ってよいと思います。
都道府県型JPドメイン
example.tokyo.jp
example.aichi.jp
都道府県名を含むJPドメインで、こちらも個人・法人どちらも取得可能です。地域に根ざしたサービスだと、ドメインだけでどこの地域向けかが伝わるメリットがあります。
6. ドメインがサイトにつながる仕組み(DNS)
ブラウザにドメインを入力したとき、裏側で動いているのがDNS(Domain Name System)です。ドメイン名をIPアドレスに変換してくれる、いわばインターネットの「電話帳」のような存在です。
① ユーザーがアクセスする
https://example.com
にアクセスするところから始まります。
② DNSルックアップが走る
ブラウザやOSは、まず手元のキャッシュを確認します。キャッシュに情報がなければ、
ルートDNS
↓
.com DNS
↓
example.com の権威DNS
という順番で問い合わせていきます。これにより、
example.com
↓
192.0.2.1
という対応関係が得られます。なお、ブラウザ・OS・DNSリゾルバそれぞれがキャッシュを持っているので、アクセスするたびにルートサーバーまで毎回問い合わせているわけではありません。このあたりはパフォーマンス上、地味に重要な仕組みです。
③ サーバーへ接続する
取得したIPアドレス宛に接続し、Webページのデータを受信して画面に表示する、という流れになります。
7. DNSレコードの種類
DNSにはいくつかのレコードタイプがあり、用途ごとに使い分けられています。
| レコード | 用途 |
|---|---|
| A | IPv4アドレスへ紐付け |
| AAAA | IPv6アドレスへ紐付け |
| CNAME | 別のドメイン名へ転送 |
| MX | メールサーバー指定 |
| TXT | 所有権確認・SPF設定 |
| NS | 権威DNSサーバー指定 |
| SRV | サービス情報管理 |
| CAA | 証明書発行許可設定 |
サーバー構築をしていると、このあたりのレコードはほぼ必ず一度は触ることになるはずです。
8. HTTPS証明書とドメインの関係
HTTPS通信では、自分がそのドメインの正当な所有者であることを証明するために、SSL/TLS証明書を利用します。
代表的な認証局としては、
- Let's Encrypt
- DigiCert
- GlobalSign
などが挙げられます。最近はACMEプロトコルによる自動発行がかなり一般的になっていて、手動で証明書を更新していた時代と比べると運用の手間はずいぶん減りました。
認証方式は主に2つです。
HTTP-01:Webサーバー上に認証用のファイルを配置して確認する方式
DNS-01:DNSのTXTレコードを使って確認する方式
ワイルドカード証明書を取りたい場合は、DNS-01方式が必須になります。このあたりは自動化ツールを使う上でも知っておくと詰まりにくいポイントです。
9. 自宅サーバーやKubernetes環境でのドメイン運用
自宅サーバーやKubernetes環境で遊んでいると、ドメインは単なる「サイトのURL」以上の役割を持ち始めます。
- Webサイト公開
- API公開
- GitOps環境
- VPN接続
- オブジェクトストレージ
- メールサーバー運用
といった用途で、ドメインとDNSの設計がそのまま運用のしやすさに直結してきます。
ワイルドカードDNS
たとえば、
*.example.com
というDNSレコードを1つ設定しておくと、
app.example.com
wiki.example.com
argocd.example.com
grafana.example.com
のようなサブドメインをまとめて同じIPアドレスに向けることができます。サブドメインを増やすたびにDNSレコードを追加する必要がなくなるので、サービスをどんどん追加していくような環境では地味にありがたい仕組みです。
10.終わりに
- ドメインはIPアドレスを人間向けに表現した名前
- ドメインは右側ほど上位階層になる
- DNSがドメイン名とIPアドレスを対応付けている
- TLDにはccTLDとgTLDがある
- 日本には属性型JPドメインという独自制度がある
- HTTPS証明書はドメイン所有者であることの証明に使われる
- Kubernetesや自宅サーバーでは、DNSと証明書管理の設計が運用の快適さを左右する
ドメインとDNSは、普段は意識しないところで動いている技術ですが、Webサイト公開からKubernetes運用、メールサーバー構築まで、インターネット上のサービスを支える基盤そのものです。一度仕組みを理解しておくと、トラブルが起きたときの当たりをつけるスピードがかなり変わってくる分野だと感じます。