web-dev-qa-db-ja.com

ルートドメインCNAMEの制限を克服する方法は?

顧客向けに多くのWebアプリケーションをホストしています。明らかなように、彼らは独自のドメインを使用してそれらのアプリケーションを参照することを望みます。通常、http://www.customer1.exampleまたはhttp://customer1.exampleのいずれかを入力したユーザーはすべてWebアプリケーションにアクセスします。

私たちが直面している状況は、近い将来にIPアドレスを変更できる柔軟性が必要だということです。また、顧客がドメインでAレコードの変更を行うことに依存したくありません。したがって、CNAMEレコードを使用しても機能すると考えましたが、CNAMEレコードはルートドメインでは機能しないことがわかりました。

基本的に:

customer1.example IN CNAME customer1.mycompanydomain.example //this is invalid as the RFC
www.customer1.example IN CNAME customer1.mycompanydomain.example //this is valid and will work

customer1.mycompanydomain.exampleまたはAレコードのIPアドレスを変更できるようにしたいので、顧客はこのレコードを管理します。

dNSでは、次のようになります。

customer1.mycompanydomain.example IN A 192.0.2.1

何か案は?

111
Geo

この質問がまだ頻繁に発生する理由は、あなたが言及したように、誰かが何らかの形で重要と思われる誰かが、RFCがサブドメインの前のドメイン名が無効であると述べているからです。ただし、RFCを注意深く読むと、これが正確に言っていることではないことがわかります。実際、 RFC 1912 状態:

CNAMEを使いすぎないでください。ホストの名前を変更するときにそれらを使用しますが、それらの除去を計画します(そしてユーザーに通知します)。

一部のDNSホストは、カスタムレコードタイプを使用して、ゾーンの頂点(ネイキッドドメイン名のルートドメインレベル)でCNAMEのような機能を取得する方法を提供します。そのような記録には、たとえば次のものが含まれます。

  • DNSimpleのALIAS
  • DNSのANAMEが簡単に
  • EasyDNSのANAME
  • CloudFlareのCNAME

各プロバイダーのセットアップは同様です。CNAMEレコードの場合と同様に、apexドメインのALIASまたはANAMEエントリをexample.domain.comにポイントします。 DNSプロバイダーに応じて、空または@ Nameの値がゾーンの頂点を識別します。

ALIASまたはANAMEまたは@ example.domain.com。

DNSプロバイダーがそのようなレコードタイプをサポートしておらず、サポートしているレコードタイプに切り替えることができない場合、サブドメインリダイレクトを使用する必要があります。 。

「アマチュア管理者」またはそのようなアイデアによってのみ行われているという声明には強く反対します。それは単純な「名前とそのサービスは何をする必要があるのですか?」対処してから、それらの要望に応えるようにDNS設定を調整します。主なサービスがWebと電子メールの場合、CNAMEを完全に削除することが問題となる正当な理由はわかりません。結局、誰が@ domain.orgより@ subdomain.domain.orgを好むのでしょうか?プロトコル自体が既に設定されている場合、「www」は誰が必要ですか?ルートドメイン名の使用が無効であると想定するのは非論理的です。

58

ルートレコードのCNAME化は、技術的にはRFCに反するものではありませんが、制限があるため、推奨されないプラクティスです。

通常、ルートレコードには複数のエントリがあります。ネームサーバーに3つ、次にIPアドレスに1つを言います。

RFCごと:

CNAME RRがノードに存在する場合、他のデータは存在しないはずです。

IETFの「一般的なDNSの運用および設定エラー」ドキュメント:

これは、ドメイン名をホストにすることを許可する明白な方法として、経験の浅い管理者によってしばしば試みられます。ただし、BINDなどのDNSサーバーはCNAMEを参照し、その名前の他のリソースの追加を拒否します。 CNAMEと共存できる他のレコードはないため、NSエントリは無視されます。したがって、podunk.xxドメイン内のすべてのホストも同様に無視されます!

参照:

48
bind

私は彼らがそれをどうやって逃げているのか、またはそれらがどのような負の副作用であるのか分かりませんが、Hover.comを使用していくつかのドメインをホストし、最近ドメインの頂点をCNAMEとして設定しています。彼らのDNS編集ツールはまったく文句を言わず、私のドメインは割り当てられたCNAMEを介して喜んで解決します。

以下に、Digがこのドメイン(実際のドメインはmydomain.comとして難読化されている)について表示します。

; <<>> Dig 9.8.3-P1 <<>> mydomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2056
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;mydomain.com.          IN  A

;; ANSWER SECTION:
mydomain.com.       394 IN  CNAME   myapp.parseapp.com.
myapp.parseapp.com. 300 IN  CNAME   parseapp.com.
parseapp.com.       60  IN  A   54.243.93.102
4
Mason G. Zhwiti

外部ドメインの最後にピリオドを付ける必要があるため、customer1.mycompanydomain.com.localdomainを意味するとは思われません。

変更するだけです:

customer1.com IN CNAME customer1.mycompanydomain.com

customer1.com IN CNAME customer1.mycompanydomain.com.
3
Gwerks

Sipwizは正しいです。これを適切に行う唯一の方法は、HTTPとDNSのハイブリッドアプローチです。私のレジストラはTucowsの再販業者であり、無料の付加価値サービスとしてルートドメイン転送を提供しています。

ドメインがblah.comの場合、ドメインの転送先を尋ねられ、www.blah.comと入力します。 AレコードをApacheサーバーに割り当て、blah.comをDNS vhostとして自動的に追加します。仮想ホストは、適切なURLにリダイレクトするHTTP 302エラーで応答します。スクリプト/セットアップは簡単で、ローエンドで処理できます。そうでなければ、ハードウェアは廃棄されます。

例として次のコマンドを実行します。curl -v eclecticengineers.com

3
MrEvil

私の会社は、私たちの場合はwww.company.comではなくxyz.company.comですが、彼らのためにWebサイトをホストしている多くの顧客に対して同じことをしています。 xyz.company.comでAレコードを設定して、割り当てたIPアドレスを指すようにします。

IPアドレスの変更にどのように対処できるかについては、完璧な解決策はないと思います。いくつかのアイデアは次のとおりです。

  • NATまたはIPロードバランサーを使用して、顧客にIPアドレスを割り当てます。 WebサーバーのIPアドレスを変更する必要がある場合は、NATまたはロードバランサーで更新を行うことができます。

  • DNSホスティングサービスも提供し、顧客にドメインをホストしてもらい、Aレコードを更新できるようにします。

  • 顧客にAレコードを1つのメインWebサーバーに設定し、各顧客のWeb要求にHTTPリダイレクトを使用するようにさせます。

2
sipwiz