ドメイン名の基本
ホスト名とは?
- サーバやクライアントにつけられた名前のことをホスト名と呼ぶ
- Mac の場合ターミナルから下記コマンドでホスト名を確認可能
$ scutil --get ComputerName
$ scutil --get LocalHostName
- しかし別の場所に同じホスト名が存在した場合、それらを区別することができないため、別の情報を付与する必要がある
ドメイン名とは?
- 上述の通り、ホスト名だけではノードを一意に識別することはできないため、ホスト名に対して
どこの
という情報の修飾を付与することが必要 - この
どこの
にあたる修飾がドメイン名で、.
区切りでどこの
という情報を付与する - 例えば、
www
というホスト名に対して、example.co.jp
というドメイン名を付与- ここで後ろから見て、
jp
はトップレベルドメイン、co
はセカンドレベルドメイン、example
はサードレベルドメインと呼びます。
- ここで後ろから見て、
FQDN(完全修飾ドメイン名)とは?
- ドメイン名に付与していった結果、完全に修飾した名前を FQDN(完全修飾ドメイン名)と呼ぶ
- FQDNは
https://www.example.co.jp.
のように最後が.
で終了するが、これはルートを表し、これ以上続くものがないということを示す('jp' のような認知されたトップレベルドメインの場合は最後に.
をつけないことも多い)
以上をまとめると https://www.example.co.jp.
という URL の場合、 www
がホスト名、example.co.jp
がドメイン名、https://www.example.co.jp
が FQDN(完全修飾ドメイン名) となる。
DNS(Domain Name System)
- FQDNに対応するIPアドレスなどの情報を取得する仕組み
- DNSから情報を取得することを名前解決(Name Resolution)と呼ぶ
名前解決するコマンド nslookup
$ nslookup www.google.co.jp
Server: 2404:1a8:7f01:b::3
Address: 2404:1a8:7f01:b::3#53
Non-authoritative answer:
Name: www.google.co.jp
Address: 172.217.161.35
ドメイン名の登録
- ローカルネットワークに閉じた場合、自分の好きなドメイン名を使用して良い
- インターネットの世界では、任意のドメイン名を利用するには登録が必要
- ドメイン名には種類があり、管理主体や属性によって誰でも登録できるものや特定の条件が存在するものがある
- トップレベルドメイン(TLD)の種類
- 国別コードトップレベルドメイン (ccTLD)
- 例1:
.jp
の場合、すでに登録されてなければ誰でも登録できる - 例2:
.co.jp
の場合、日本国内で登記を行っている会社のみ登録可
- 例1:
- 分野別トップレベルドメイン (gTLD)
- 例1:
.com
の場合、すでに登録されてなければ誰でも登録できる - 例2:
.gov
の場合、米国政府機関のみ登録可
- 例1:
- https://www.iana.org/domains/root/db において、TLDのリストが公開されている
- 国別コードトップレベルドメイン (ccTLD)
ドメイン名登録の全体像
下記の用語をまず理解。
- レジストラント(登録者)
- ドメイン名を登録し、使用するユーザ
- レジストラ(登録取次事業者)
- レジストリと契約し、ドメイン名登録の窓口となる事業者のこと
-
Amazon Registrar(Route53)
、GMOインターネット(お名前.com)
など - レジストラによって取得可能なドメインに差がある(全てのレジストリと契約しているわけではないため)
- レジストリ(登録管理機関)
- TLD を管理する主体
- TLD のネームサーバ、WHOIS情報を提供する
WHOIS データベース
-
ドメイン名の情報を参照可能なデータベース
- 登録者情報
- ネームサーバ情報
- ドメインの状態
-
https://lookup.icann.org/lookup からドメイン名の情報を確認できる
whois
コマンドでも確認可。
$ whois qiita.com
ネームサーバの基本
ネームサーバ
-
.
を起点に全てのFQDNを探索できるように構成された分散データベース、およびそれを成すひとつひとつのサーバ - 世界中からアクセスが集まり、ひとつのサーバのみで管理すると負荷が高いため
権限委譲(Delegation)
を行う
権限委譲
- 親ゾーンのNSレコードに子ゾーンのネームサーバを FQDN で指し示すことで権限を委譲
- 下記例でいうと、オレンジのレコード
- 子ゾーンのネームサーバの FQDN が、子ゾーンで管理されている場合、親ゾーンの返答にそのIPアドレスも含めて指し示す
- 下記例でいうと、緑のレコードで、Glueレコードという
リソースレコード(RR)と RRSet
-
ネームサーバが保持する情報をリソースレコード(RR)という
-
RR は 5つのフィールド(NAME、TTL、CLASS、TYPE、RDATA)を持ち、
NAME
,CLASS
,TYPE
の3つの組み合わせが問い合わせのキーになる -
NAME
,CLASS
,TYPE
が同じで、RDATA
が異なる RR の集合を RRSet と呼ぶ -
CLASS
- 現在のインターネットは IN のみ使われる
-
TYPE
レコードタイプ
- SOA (State Of Authority)
- ゾーンの管理主体であること、権威であることを宣言
- ゾーンとは、ネームサーバがドメインを管理する範囲
- ゾーンの管理主体であること、権威であることを宣言
- NS (Name Server)
- ゾーンを管理するネームサーバの FQDN を指す
- ゾーン自身と、その親ゾーンの両方に定義
example.comゾーン
example.com. 3600 IN SOA ns.icann.org. noc.dns.icann.org.
2019101513 7200 3600 1209600 3600
- A/AAAA
- FQDN に対する IPアドレスを応答する
- A は IPv4
- AAAA は IPv6
www.example.com. 3600 IN A 192.0.2.3
www.example.com. 3600 IN AAAA 2001:0DB8::1
- CNAME レコード
- CNAME レコードが存在する場合、名前解決を CNAME が指定する名前に置き換えて継続する
- ホスト名に別名をつけるつける手段として使われる
info.example.com. 3600 IN CNAME www.example.com.
www.example.com. 3600 IN A 192.0.2.3