net-nyan-cat

俺たちがインフラ野郎Aチーム

DNSで設定できないパターン3選

みんなはDNS使ってますか?
DNSを使うにあたって「これがやりたいけど設定できなくて焦った…」ってパターンを3つ挙げてみます。
Route53などの高機能DNSを使えばある程度解消できますが、そもそもそのような設定自体、DNSの仕様にそぐわないケースもあります。
でもTTLの問題もあるし…。 いろいろ難しいですよね。 RFC読むか…。
以下、内容です。

Zone APEXにCNAMEレコードの登録

RFC1912 2.4章で記述があります。
Zone APEXにCNAMEレコードを登録しようとすると、NSレコードが意味をなさなくなるためドメイン自体が無効、という風に扱われます。
もっとも、様々なDNSサービスではZone APEXにCNAMEを登録しようとすると、警告が表示されて適用できないケースがほとんどかと思います。

対策

  • NSレコードの変更
    一番確実な方法かと思います。
    CNAME先のドメインに対してZone APEXのNSレコードを向けてしまう、という選択です。
    これでCNAME先でDNSレコードを登録することで安全に制御が可能です。
    難点としてはNSレコードは通常、TTLが長いことですかね。
    クライアント端末側では24~48時間程度切り替えに時間を要する場合があります。

  • ALIASレコードの活用
    Route53やムームードメインではALIASレコードが存在します。
    これを利用するとZone APEXでもCNAMEレコードを扱うように設定が可能です。
    (Route 53のALIASレコードはAWS内のサービス限定)
    CNAME先のIPアドレスが内部でAレコードに変換されて、普通にAレコードとして返却されます。
    凄い便利なので利用してみるといいかもしれません。
    (AWSではロードバランサとか使ってるとほぼ必須かも?)

同一のサブドメインにAレコードとCNAMEレコードの共存

RFC1912 2.4章で記述があります。
CNAMEを定義したFQDNでは他のレコードが共存できない、ということらしいです。
(TXTレコードとかもダメなんでしょうかね…?)

これはShopifyを利用しようしたときに発生しました。
DNSラウンドロビンみたいになるのでおかしいですね…。

対策

そもそもそういう設定になる設計がおかしいです。 DNSラウンドロビンしたいにしろ、設計をちゃんと考えるべき。
Shopifyは設定方法が2種類くらいあるのでちゃんと確認しましょう。

AレコードにIPアドレスではなくホスト名を登録

Zone APEXにALIASレコードが書けない…からといってAレコード/AAAAレコードにドメインを記載することはできません。
そもそもの仕様です。

対策

設計がおかしい。
DNSのAレコード/AAAAレコードはホスト名(FQDN)とIPアドレスを紐づけるものです。
おとなしくALIASレコードを使いましょう。 使えないならNSレコードを設定しましょう。

まとめ

DNSは奥が深いですね…。
顧客に「DNSで~できる?」と言われたときに脊髄反射で「できます!」とか言うと普通に恥と迷惑をかけるので基本を押さえましょう。
とはいえ、一部の会社以外は変態設定をしていないと思うので、DNSの仕様的に設定することの出来ないパターンを覚えておくと役に立つかもしれません。
RFC1912も読みごたえがあると思うのでぜひ。

pentan.info