MENU
「安心のセキュリティをお得な価格」でご提供!
Fortinet商品など
ENGAGE fotinet

DNSの優先度について

DNSの「優先度」は、すべてのレコードにあるわけではありません。

この言葉が関係するのは、主に MXレコードSRVレコード です。

まず結論から言うと、DNSで優先度が明確に定義されている代表例は次の2つです。

  • MXレコード
    メール配送先サーバーの優先順位を表す
  • SRVレコード
    特定サービスの接続先の優先順位と振り分け方を表す

一方で、Aレコード、AAAAレコード、CNAMEレコード、NSレコードには、通常MXのような優先度フィールドはありません。

MXレコードの優先度

MXレコードは、ドメイン宛てのメールをどのメールサーバーに届けるかを示すためのレコードです。

ここで設定する数値は、メールサーバーの優先順位を意味します。

たとえば、次のような設定があったとします。

example.com. IN MX 10 mail1.example.com.
example.com. IN MX 20 mail2.example.com.

この場合は、数値の小さい 10 のほうが優先されます。

つまり、通常は mail1.example.com に配送され、そこが使えない場合に mail2.example.com が使われます。

DNSの優先度という話で最もよく出てくるのがこのMXレコードで、数値が小さいほど優先度が高い と覚えておけば基本は問題ありません。

MXレコードで同じ優先度を設定した場合

MXレコードは、同じ優先度の値を複数設定することもできます。

example.com. IN MX 10 mail1.example.com.
example.com. IN MX 10 mail2.example.com.

この場合、2つのメールサーバーは同順位です。

どちらを先に試すかは、送信側メールサーバーの実装に依存します。

そのため、実務上は冗長化や分散のような目的で使われることがありますが、必ずしも完全に均等な分散になるとは限りません。

MXレコードでよくある注意点

MXレコードの説明では、いくつか誤解されやすいポイントがあります。

小さい数字ほど優先

「数値が大きいほうが優先」と思われることがありますが逆です。

小さい数値ほど優先されます。

数字そのものに特別な意味はない

102030 のように設定されることが多いですが、これは慣習的なものです。

重要なのは数字の大小関係であり、15 でも問題ありません。

MXの向き先はホスト名で指定する

MXレコードの向き先は、通常IPアドレスではなくホスト名です。

example.com. IN MX 10 mail.example.com.
mail.example.com. IN A 192.0.2.10

このように、MXはメールサーバーのホスト名を指し、そのホスト名に対応するAレコードやAAAAレコードが別途存在する形になります。

MXの向き先にCNAMEは使わない

ここは特に重要です。

MXレコードの向き先にCNAMEを使うのは不適切です。

MXのターゲットには、別名ではなく、アドレスレコードを持つ正規のホスト名を設定する必要があります。

実務上の注意点というより、仕様上そう考えるべきポイントです。

SRVレコードの priority と weight

SRVレコードは、特定サービスの接続先サーバーを指定するためのレコードです。

主に、SIP、XMPP、LDAPなどで使われます。

SRVレコードには、通常次の情報があります。

  • priority
  • weight
  • port
  • target

たとえば次のような設定です。

_service._tcp.example.com. IN SRV 10 60 5060 sip1.example.com.
_service._tcp.example.com. IN SRV 10 20 5060 sip2.example.com.
_service._tcp.example.com. IN SRV 20  0 5060 sip-backup.example.com.

この場合、まず見るべきなのは priority です。

priority は小さい数値ほど優先されます。

そのため、最初に利用対象になるのは priority が 10sip1.example.comsip2.example.com です。

20sip-backup.example.com は、それらが使えない場合の予備という位置づけになります。

SRVレコードの weight とは

SRVレコードでは、同じ priority の中で weight が使われます。

これは、同順位の接続先の中で、どれをどの程度選びやすくするかを決めるための値です。

先ほどの例では、priority が 10 の中に2つの候補があります。

  • sip1.example.com の weight は 60
  • sip2.example.com の weight は 20

この場合、sip1.example.com のほうが sip2.example.com より選ばれやすくなります。

つまり、SRVでは次のように理解するとわかりやすいです。

  • priority は接続先グループの優先順位
  • weight は同じ優先順位内での振り分け比率

この2つは役割が違うため、混同しないことが大切です。

AレコードやAAAAレコードに優先度はあるのか

AレコードやAAAAレコードには、MXのような優先度フィールドはありません。

たとえば次のように、同じ名前に対して複数のAレコードを設定することはできます。

example.com. IN A 192.0.2.10
example.com. IN A 192.0.2.20

この場合、複数のIPアドレスが返されますが、どちらが先に使われるかは、DNSの「優先度」で決まるわけではありません。

実際の接続順や選択結果には、次のような要素が関係します。

  • DNS応答の順序
  • クライアントやOSの実装
  • アドレス選択アルゴリズム
  • IPv4 / IPv6 の扱い
  • 接続時の挙動

そのため、Aレコードを複数登録しても、MXレコードのように「10が優先、20が予備」といった明確な意味にはなりません。

CNAMEレコードに優先度はあるのか

CNAMEレコードには、優先度の概念はありません。

CNAMEは「この名前は別の名前の別名である」と示すためのレコードです。

www.example.com. IN CNAME app.example.net.

このような設定は、接続先の順位を表しているわけではなく、単に参照先の名前を別名化しているだけです。

そのため、MXやSRVのような priority の考え方はありません。

NSレコードに優先度はあるのか

NSレコードにも、通常の意味での優先度はありません。

NSレコードは、そのゾーンを管理するネームサーバーを示すものです。

複数のNSレコードを設定することは一般的ですが、

MXレコードのように「小さい数値のほうが優先される」といった仕組みはありません。

また、NSレコードの向き先についても、CNAMEではなく正規のホスト名を使うべきです。

TTLと優先度の違い

DNSを扱っていると、TTLと優先度が混同されることがありますが、両者は別物です。

TTLは、DNSの応答をどのくらいキャッシュしてよいかを示す値です。

たとえば、次のような設定では 300 がTTLです。

example.com. 300 IN MX 10 mail.example.com.

この 300 は「5分間キャッシュしてよい」という意味であり、どのサーバーを優先するかとは無関係です。

つまり、

  • 優先度 は、複数候補のうちどれを先に使うか
  • TTL は、そのDNS情報をどれくらい保持するか

という違いがあります。

実務で「DNSの優先度」と言われたら何を指すのか

実務で「DNSの優先度」と言われた場合、最も多いのは MXレコードの優先度 です。

特にメール関連の設定では、この意味で使われることがほとんどです。

一方で、音声系サービスや一部の業務システムでは、SRVレコードの priority / weight を指している場合があります。

また、Webサイトの表示先やサーバー切り替えの話で「優先度」と言われることがありますが、その場合は純粋なDNS仕様の話ではなく、次のような別の仕組みを含んでいることもあります。

  • DNSプロバイダ独自のフェイルオーバー機能
  • ロードバランサー設定
  • CDNのオリジンサーバー制御
  • アプリケーション側の接続制御

そのため、「DNSの優先度」という言葉を見たら、どのレコードの話なのかを最初に切り分けることが重要です。

まとめ

DNSにおける「優先度」は、主にMXレコードとSRVレコードで使われる概念です。

  • MXレコード
    メール配送先の優先順位を表し、小さい数値ほど優先
  • SRVレコード
    priority が優先順位、weight が同順位内での振り分け
  • A / AAAA / CNAME / NS
    通常はMXのような優先度フィールドはない
  • TTL
    優先度ではなく、キャッシュ時間を表す

つまり、DNSの優先度とは、複数の接続先候補があるときに、どれを先に利用するかを示す情報です。

ただし、その考え方が適用されるのは主にMXとSRVであり、すべてのDNSレコードに共通する仕組みではありません。

以上、DNSの優先度についてでした。

最後までお読みいただき、ありがとうございました。

カテゴリ一覧

ページトップへ