ドメインのDNSレコードについて学習したので未来の自分に備忘録
IT技術
はじめに
最近業務でDNSレコードをいじる機会がありました。
DNSレコードについてはいつかなんとなく勉強したことあるし、いけるっしょ!と思って作業しようとしたら意外と理解していない自分がいて驚きました。
そんな訳で今回改めてDNSレコードについて学習したのでその備忘録、そして理解しているようで実はできていない方に向けての意味でもDNS レコードの種類や用途について改めて整理してみようと思います。
そもそもDNSとは
DNS(Domain Name System)は、ドメイン名と IP アドレスを結びつけるシステムです。例えば example.com にアクセスしたい場合、実際にはサーバーと通信するために「192.0.2.1」などの IP アドレスが必要です。しかし人間にとって数字の羅列は覚えにくいため、文字列であるドメイン名と IP アドレスを結びつけてくれる仕組みが DNS です。
DNSレコードとは
DNS には「どのドメインに対して、どんな情報(IPアドレスやメールサーバーなど)を保持しているのか」を定義するレコードが存在します。これらをDNSレコードと呼びます。
DNS レコードは数多くの種類がありますが、代表的なものとして以下のようなものが挙げられます。
- Aレコード
- AAAAレコード
- CNAMEレコード
- MXレコード
- NSレコード
- TXTレコード
それではそれぞれのレコードについて見ていきたいと思います。
Aレコード
A レコードは、ドメイン名に対して IPv4 アドレスを紐づけるレコードです。最も基本的でよく使われるレコードと言えます。
前述の例で言えば、example.com のAレコードの値が「192.0.2.1」となっている必要があります。この設定がされて初めてクライアントはURLから意図したWebページに辿り着けます。
domain name | record type | value |
example.com | A | 192.0.2.1 |
AAAAレコード
AAAA レコードは、ドメイン名と IPv6 アドレスを結びつけるレコードです。役割はAレコードと似ています。IPv4なのかIPv6なのかの違いです。
ただIPv6は使わずにIPv4のみで公開しているドメインもあるため必須かというとそうでもないです。
ちなみに読み方は「クアッドエー・レコード」です。(私は最初エーエーエーエーって読んでました)
domain name | record type | value |
example.com | AAAA | 2001:db8::1234:5678 |
CNAME レコード
CNAME レコードは、あるドメインを別のドメインに紐づけるためのレコードです。別名(Alias)を設定すると考えるとわかりやすいと思います。
なので値としてはIPアドレスではなく他のドメインが入ります。
例えば www.example.comのCNAMEレコードの値に 「example.com.」と指定していれば、www.example.comのドメインはexample.comのアドレスを参照するようになります。
リダイレクトとは違い名前解決の段階で参照先を判断します。
domain name | record type | value |
www.example.com | CNAME | example.com |
MX レコード
MX レコードは、ドメインに対するメール配送先(メールサーバー)を示すレコードです。
MXレコードの特徴としては優先度(priority)があることです。優先度の数字が小さい方が優先順位が高くなります。サーバーの負荷分散を行うため、複数のメールサーバーを並列で設定するケースが多いようです。
domain name | record type | priority | value |
example.com | MX | 10 | mail1.example.com |
example.com | MX | 20 | mail2.example.com |
NS レコード
NS レコードは、そのドメインの権威DNSサーバーを示すレコードです。レジストラ(ドメインを提供しているサービス)の管理画面で、この NS レコードを設定することが一般的です。
独自の DNS サーバーを運用する場合は、この NS レコードの値を書き換えて権威DNSサーバーを切り替えます。
domain name | record type | value |
example.com | NS | ns1.example.com |
TXT レコード
TXT レコードは、任意のテキスト情報を保持できるレコードです。代表的な利用例として、SPF (メール送信元認証) や DKIM、DMARC のドメイン所有権確認などがあります。
送信元のメールアドレスを変更したりする際にドメインのSPF レコード、 DKIMレコード、DMARCレコードを設定すると言った表現がありますが、実際にはTXTレコードの値にSPF 、DKIM、DMARCの値を記述することになります。
例えばGmailを独自ドメインで利用するような場合は以下のように書いたりします。
domain name | record type | value |
example.com | TXT | "v=spf1 include:_spf.google.com ~all" |
その他DNSレコードの特徴
DNSレコードでよく使うものに関しては前述しましたが、レコード以外にもいろんな特徴があります。
TTL
TTL(Time To Live)といってDNS レコードのキャッシュ有効期限を示す値があります。秒単位での設定が可能で、この値を長くすればキャッシュの問い合わせ回数を減らせますがレコードの設定を変更した際の反映が遅くなります。即座に変更を反映させたい場合はこの値を短くして対応します。
ドメイン末尾の「.(ドット)」
当記事のレコードの記入例ではドメインの値に対して末尾に「.」を付けずに記載していましたが、厳密にはドメイン末尾には「.」が必要です。
とはいえDNSサーバーのサービスでも末尾に「.」を付けずに記入してサービス側でよしなにやってくれることが多いので、今回私も省略して記載しました。
しかし、厳密にはこの末尾の「.」がないと思わぬ事故を引き起こす原因にもなるので理解しておきましょう。
終わりに
今回はDNSレコードについて学習しました。結構初歩的なことですが、いざ触ろうとすると急に自身がなくなったり意外とわかんなかったりもしますよね??(きっと私だけじゃないはず)
ということで未来の自分への備忘録、また私と同じ境遇の方へ向けての記事でした。
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ