おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

DNSレコードについて勉強してみた。

はじめに

以下の記事でDNSの歴史と大まかな通信の流れについて勉強しました。

oooomincrypto.hatenadiary.jp

今回の記事ではDNSのゾーン情報について学習してみたいと思います。

Aレコード

Aレコードはドメイン名に対応するIPアドレスを記載したレコードです。 上記に載せたリンク先にて、最終的にWebサーバのIPアドレスへ辿り着きました。あのIPアドレスが対象DNSのAレコードだったという感じです。

AAAAレコード

こちらはAレコードがIPv4アドレスに対応しているのに対し、IPv6レコードに対応しているレコードになります。

MXレコード

MXレコードはメールドメイン(@配下の値)のメールサーバを指すレコードです。 Aレコードと何が違うの?というイメージを持ってしまいますが、MXレコードには「利用優先度」を表す値を持っています。

以下はDNSサーバ接続確認ができるnslookup(dig)テストにてyahooのメールドメインを検索した結果です。 以下の赤枠がMXレコードで、青枠が利用優先度を表しています。

※ちなみに、MXレコードがない場合はAレコードで代替することも可能です。

NSレコード

NSレコードは対応するネームサーバを表したレコードです。 前回の記事 ドメイン申請からWebサーバまでのアクセスについて勉強してみた。にてルートのDNSサーバへアクセスする際にキャッシュDNSサーバへアクセスするという話をしましたが、そのキャッシュDNSサーバがアクセスする先のサーバということですね。

SPFレコード

SPFレコードは送信元のドメインが詐称されていないかをチェックする仕組みの一つです。 最近だとAmazonのなりすましメール等、メールアドレスのFROMを詐称したものが多いですが、その対策をする感じです。

受信側のメールサーバがFROMに書かれたメールドメインDNSSPFレコードを問い合わせ、そこに登録されているIPアドレスのリストに送信側のメールサーバのIPアドレスがあれば認証OKということになります。

SPFレコードを設定する際に気を付ける点

システムを作る場合、「システムからメール送信する機能」が用いるメールサーバと「システム管理者」が用いるメールサーバが異なる場合はどちらのメールサーバもSPFレコードに登録するということを忘れてはいけません。 前者を忘れることはあまりありませんが後者を忘れていた場合、以下のような問題が起きます。

  1. システム側から顧客へメールを送り、顧客側がシステム管理者へ問い合わせを行う。
  2. システム管理者がメールを受け取り、顧客へ返信する。
  3. 2の際にシステム管理者が用いるメールサーバはSPFレコードに登録されていないため、相手に迷惑メールとして届く or ブラックリスト入りしてしまう

実際にシステムを作り、顧客からSPFレコードの導入を求められた場合はこのあたりを忘れないようにしましょう。

CNAMEレコード

CNAMEレコードはドメインの別名を登録するレコードです。

なぜCNAMEレコードを登録する必要があるのか?

上記の内容だけだと、Aレコードで十分では?という感じもします。 CNAMEレコードを登録する理由は調べた感じでは色々ありますが、個人的には以下の2点かなと思っています。

複数のドメインに一つのIPアドレスを紐づける場合、全てにAレコードを登録するとIPアドレスの変更が必要となった際に修正するレコードが多くなってしまうから

一つのAレコードにIPアドレスを登録し、他の複数ドメインについては全てCNAMEレコードを登録しておけば変更が必要になった場合も一つのAレコードのIPアドレスを変更するだけで問題ありません。

外部のサービスを用いている場合にその運営者だけでIPアドレスの変更を可能にするため

例えば自社にデータセンターなどを持っていて、データセンターに通信が来る前に外部サービスのWAFなどを利用しているとします。 その場合、WAFのIPアドレスを対象サイトのDNSサーバのAレコードに登録するのもアリですが、それをやってしまうともしIPアドレスを変更したいときにそのWAFを扱っている会社だけでは変更できなくなってしまいます(なぜならDNSサーバの管理はそのサービス運用会社の担当ではないから)。

そのため、対象サイトのCNAMEレコードとしてWAF用のFQDNを登録し、それに対してAレコードを登録することでそのWAFを扱っている会社のみでIPアドレスの変更が可能になります。 (説明が分かりにくいかも...すみません...(;´∀`))

おわりに

以上でDNSレコードのまとめでした。 しっかり理解して業務に活かせるよう頑張っていこうと思います!