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

DNSのワイルドカードレコードについて

DNSのワイルドカードレコードとは、個別に設定していないサブドメインに対して、共通の応答を返すための仕組みです。

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

*.example.com. IN A 203.0.113.10

この場合、foo.example.comshop.example.com など、個別にレコードを作っていない名前に対して、203.0.113.10 を返せるようになります。

ただし、DNSのワイルドカードは、ファイル名の * や正規表現のような単純なパターン一致ではありません。

「その名前がDNS上で存在するかどうか」 をもとに動くため、見た目よりもルールは厳密です。

まず押さえたい基本

DNSのワイルドカードを理解するときは、次の4点が特に重要です。

  • *.example.comexample.com 自体には適用されない
  • 個別に定義された名前があれば、そちらが優先される
  • 委任された下位ゾーンには適用されない
  • 深い階層のサブドメインにも関係しうるが、途中に存在する名前があるとその枝では効かない

つまり、ワイルドカードは「すべてに無条件で一致する便利記号」ではなく、未定義名に対するデフォルト応答」として理解するのが正確です。

基本的な動作例

次のようなゾーン設定を考えます。

example.com.        IN A 203.0.113.1
*.example.com.      IN A 203.0.113.10
www.example.com.    IN A 203.0.113.20

このときの挙動は次のようになります。

  • example.com203.0.113.1
  • www.example.com203.0.113.20
  • abc.example.com203.0.113.10
  • shop.example.com203.0.113.10

ここで重要なのは、www.example.com にはワイルドカードが使われないことです。

すでに www.example.com が個別に定義されているため、そちらが優先されます。

*.example.comexample.com には効かない

これは非常によくある誤解です。

*.example.com. IN A 203.0.113.10

この設定だけでは、foo.example.com には効いても、example.com 自体には効きません。

そのため、ルートドメインにも同じIPを向けたい場合は、別途次のような設定が必要です。

example.com.   IN A 203.0.113.10
*.example.com. IN A 203.0.113.10

つまり、example.com*.example.com は別物として考える必要があります。

ワイルドカードは「未定義の名前」にだけ効く

ワイルドカードは、存在しない名前に対するデフォルト応答です。

たとえば次の設定を見てください。

*.example.com.     IN A 203.0.113.10
mail.example.com.  IN A 203.0.113.30

この場合、

  • mail.example.com は個別設定があるため 203.0.113.30
  • test.example.com は未定義なので 203.0.113.10

となります。

つまり、ワイルドカードは「個別設定がないときだけ使われる」ということです。

名前は存在するが、欲しい型のレコードがない場合

ここは特に誤解が起きやすいポイントです。

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

*.example.com.     IN A  203.0.113.10
app.example.com.   IN MX 10 mail.example.com.

このとき、app.example.com という名前自体はすでに存在しています。

では app.example.com A を問い合わせたとき、ワイルドカードの A が使われるのかというと、通常はそう考えません。

理由は、ワイルドカードが働く前提が「その名前が未定義であること」だからです。

つまりこのケースでは、

  • app.example.com というノードは存在している
  • そのためワイルドカード適用対象ではない
  • A レコードがなければ、A はないものとして扱われる

という理解が正確です。

ワイルドカードは、足りないレコード型を補完する仕組みではありません。

深い階層のサブドメインにも効くのか

これもよく誤解される点です。

*.example.com は、見た目だけで判断すると「foo.example.com のような1階層下だけに効く」ように見えるかもしれません。

しかし実際には、そう単純ではありません。

正確な考え方

  • *.example.com は1階層限定とは言い切れない
  • 条件によっては a.b.example.com のような深い名前にも関係する
  • ただし、b.example.com のような途中ノードが存在すると、その枝ではワイルドカードは止まる

つまり、

  • 「1階層だけに効く」も不正確
  • 「どんな深さにも全部効く」も不正確

です。

実務では、「途中に存在する名前や委任があるかどうかで挙動が決まる」と理解しておくのが安全です。

委任された下位ゾーンには効かない

次のような設定を見てみます。

*.example.com.    IN A  203.0.113.10
sub.example.com.  IN NS ns1.subdns.example.net.

この場合、x.sub.example.com の問い合わせは、example.com 側のワイルドカードでは処理されません。

sub.example.com は別のDNSへ委任されているため、その配下は委任先のゾーンが担当します。

つまり、ワイルドカードは委任の境界を越えて適用されません。

CNAMEのワイルドカード

ワイルドカードで CNAME を使うこともあります。

*.example.com. IN CNAME app.example.net.

これは、未定義サブドメインをすべて app.example.net に向けたいときの書き方です。

たとえば、

  • foo.example.com
  • shop.example.com
  • abc.example.com

などを、まとめて別のホスト名へ寄せることができます。

ただし、CNAME を使う場合は次の点に注意が必要です。

  • 同じ名前に CNAME と他の通常レコードを共存させない
  • ルートドメインには通常の CNAME を置けない
  • DNS事業者によっては ALIASANAME など独自機能を使うことがある

どんなレコード型でも使えるのか

ワイルドカードはAレコード専用ではありません。

実際には、次のような型でも考え方自体は同じです。

  • A
  • AAAA
  • CNAME
  • MX
  • TXT

ただし、使えることと、使うべきことは別です。

A / AAAA

Webサーバーやロードバランサへまとめて向ける用途でよく使われます。

CNAME

未定義のサブドメインを、1つのホスト名に集約したいときに便利です。

MX

技術的に設定できても、意図しないサブドメイン宛メールまで受けてしまう可能性があるため、慎重な運用が必要です。

TXT

検証用途などで使われることはありますが、設計意図を明確にして使うべきです。

NS

かなり特殊で、一般的な通常用途として安易に考えないほうが安全です。

DNSのワイルドカードとワイルドカード証明書は別物

この2つは混同されがちですが、まったく別です。

DNSワイルドカード

*.example.com. IN A 203.0.113.10

これはDNSの名前解決の設定です。

ワイルドカード証明書

*.example.com 用のTLS証明書です。

これはHTTPS通信のための証明書です。

つまり、

  • DNSが正しくても証明書が合わなければHTTPSは成立しない
  • 証明書があってもDNSが向いていなければ接続できない

ということです。

実務では、DNS設定と証明書設定をセットで考える必要があります。

実務でよくある使い方

任意のサブドメインを同じ配信先に向ける

*.example.com. IN A 203.0.113.10

これにより、個別登録していないサブドメインも同じIPへ集約できます。

SaaSや会員単位のサブドメイン運用

たとえば、

  • client-a.example.com
  • client-b.example.com
  • campaign-001.example.com

のように、利用者や案件ごとにサブドメインを動的に作るケースです。

DNSではワイルドカードでまとめ、実際の出し分けはアプリケーション側で行います。

一時URLやテスト環境の受け皿

柔軟な運用ができる反面、想定外のホスト名まで応答してしまうので注意が必要です。

Web運用上の注意点

ワイルドカードDNSは便利ですが、DNSだけ設定して終わりではありません。

想定外のHost名を受けない設計にする

ワイルドカードを入れると、ランダムなサブドメインでもサーバーまで到達する可能性があります。

そのため、Webサーバーやアプリ側では

  • 許可済みのホスト名だけ通す
  • それ以外は404や410を返す
  • 正規URLへ301リダイレクトする

といった制御が重要です。

よくある誤解

*.example.com を設定すれば example.com にも効く

効きません。

別途設定が必要です。

個別名に足りない型はワイルドカードが補ってくれる

補いません。

名前が存在している時点で別扱いです。

*.example.com は1階層下だけにしか効かない

そう言い切るのは不正確です。

*.example.com はどんな深い名前にも全部効く

これも不正確です。

途中に存在する名前や委任があれば止まります。

DNSでワイルドカードを設定すればHTTPSも大丈夫

証明書は別問題です。

まとめ

DNSのワイルドカードレコードは、未定義の名前に対してデフォルトの応答を返すための仕組みです。

ただし、理解するときは次の点が重要です。

  • *.example.comexample.com 自体には効かない
  • 明示的に存在する名前には効かない
  • 足りないレコード型を補う仕組みではない
  • 委任された下位ゾーンには効かない
  • 深い階層にも関係しうるが、途中に存在する名前があるとその枝では止まる

以上、DNSのワイルドカードレコードについてでした。

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

カテゴリ一覧

ページトップへ