インターネット
 Computer >> コンピューター >  >> ネットワーキング >> インターネット

ドメインのルートを CNAME にできない理由と、DNS に関するその他のヒント

この投稿では、上記の質問を使用して DNS を調べます。 、 digA レコード、CNAME レコード、および ALIAS/ANAME 初心者目線の記録。それでは始めましょう。

最初にいくつかの定義

  • ドメイン ネーム システム (DNS):人間が覚えやすいドメイン名 (example.com) を IP アドレス (93.184.216.34) に変換するためのシステム全体。 IP アドレスは、ウェブページを表示するために必要なファイルが保存されているサーバー (通常はウェブ サーバー) のものです。
  • DNS サーバー (ネームサーバーまたはネームサーバーとも呼ばれます):DNS ソフトウェアを使用して、ドメインアドレスに関する情報を保存します。各 ISP、ルート (全世界で合計 13)、トップ レベル ドメイン (TLD、「.com」など)、およびドメイン レベル DNS サーバーに属するいくつかのレベルがあります。
  • ドメイン名 :TLD(.com)と組み合わせたドメイン(例)。 「ドメイン」という用語は、ドメイン名と同義語として使用されることがよくありますが、それらは異なります。レジストラーまたは再販業者から「ドメイン」を購入すると、特定のドメイン名 (example.com) と作成するサブドメイン (my-site.example.com、mail.example.com、など)

高レベルのクエリ フロー

ブラウザに「example.com」と入力したときに起こることの大まかなフローは、以下のように、ISP、ルート、および TLD DNS サーバーへのホップを削除するように単純化できます。

ドメインのルートを CNAME にできない理由と、DNS に関するその他のヒント
簡略化された DNS リクエスト フロー。より詳細なフローで詳細を確認できます

通常、ドメインには 2 つ以上のネーム サーバーがあり、ドメイン名 (example.com) に関連するレコードが含まれています。

多くの種類のレコードを保存でき、そのほとんどは種類ごとに複数のエントリを持つことができます:

  • A :ドメイン名を IP アドレスにマップするアドレス レコード
  • CNAME :正規名レコード。あるドメイン名 (またはサブドメイン名) を別のドメイン名にエイリアスするために使用されます。これについては後で詳しく説明します。
  • MX :メール配信エージェントにメールの配信先を伝える Mail eXchange レコード
  • TXT :さまざまな用途で文字列を格納するための柔軟なテキスト レコード
  • SOA :ドメインの最上位レベルに保持される単一の Start of Authority レコード。プライマリ ネーム サーバーなど、ドメインに関する特定の必須情報が含まれています
  • NS :ドメインに関連付けられたネームサーバー

デバイスがネーム サーバーに到達するクエリを送信すると、サーバーはドメインのレコード ノードで A を探します。 レコード、および関連する保存済み IP アドレス (example.com:93.184.216.34)。これはデバイスに返され、正しい Web サーバーに要求を送信して、要求された Web ページまたはリソースを取得するために使用されます。

「掘る」の使用

dig (ドメイン情報グロパー ) は、DNS サーバーにクエリを実行するためのコマンド ライン ツールです。このコマンドは通常、トラブルシューティングや、システムのセットアップについて理解を深めるために使用されます。

$ dig example.com 端末に長い応答が出力されます。デフォルトの出力については、ここで詳しく説明します。そのうちの ANSWER SECTION に関心があります。 .

;; ANSWER SECTION:
example.com.       72703      IN     A       93.184.216.34

example.com であることがわかります。 A を返します 93.184.216.34の記録 .ドメインに複数の A がある場合があります 複数の Web サーバーが必要な情報を提供できる場合は、記録してください。

もっとあります!他の例を試してみると、別の一般的なレコード CNAME が表示されることがすぐにわかります。 .

$ dig www.skyscanner.net :

;; ANSWER SECTION:
www.skyscanner.net. 169 IN CNAME www.skyscanner.net.edgekey.net.
www.skyscanner.net.edgekey.net. 5639 IN CNAME e11316.a.akamaiedge.net.
e11316.a.akamaiedge.net. 20 IN A 23.217.6.192
www.skyscanner.net.edgekey.net. 5639 IN CNAME e11316.a.akamaiedge.net.
e11316.a.akamaiedge.net. 20 IN A 23.217.6.192

+short の使用 フラグにより​​、形成されたパスを明確に確認できます:

$ dig www.skyscanner.net +short

www.skyscanner.net.edgekey.net.
e11316.a.akamaiedge.net.
23.217.6.192

CNAME

CNAME レコードにより、ドメイン名を別の正規 (真の) ドメインのエイリアスとして使用できます。

DNS サーバーが CNAME を返す場合 記録し、それをクライアントに返しません。代わりに、返されたドメイン名を再度検索し、A を返します。 レコードの IP アドレス。このチェーンは、多くの CNAME を続けることができます レベルは深くなりますが、キャッシングが行われる前に複数回のルックアップによるパフォーマンス ヒットがわずかに発生します。

これの簡単な例は、すべての写真を保持するサーバーがある場合です。通常は photos.example.com からアクセスできます .ただし、photographs.example.com 経由のアクセスを許可することもできます。 .これを可能にする 1 つの方法は、CNAME を追加することです。 photographs を指すレコード photos へ .これは、誰かが photographs.example.com にアクセスしたときに、 photos.example.com と同じコンテンツが与えられます .

クエリ $ dig photographs.example.com の使用

photographs.example.com    IN   CNAME photos.example.com
photos.example.com         IN   A     xx.xxx.x.xxx

CNAME 右側のピースです。左側は別名またはラベルです。

もう 1 つの一般的な用途は、www です。 サブドメイン。 example.com を購入した www.example.com と入力するユーザーも必要になる可能性があります 同じコンテンツを表示します。

ここで、example.com に注目する価値があります。 頂点、ルート、またはネイキッド ドメイン名と呼ぶことができます。

1 つのオプションは、別の A をセットアップすることです。 example.com と同じ IP アドレスを指しているレコード .これは完全に有効であり、実際の example.com は しますが、うまくスケーリングしません。 example.com という IP アドレスを更新する必要がある場合はどうなりますか に指差す? www 用に更新する必要もあります。

CNAME の場合 レコードは www.example.com のエイリアスに使用されました example.com を指す 他のすべてのノードがルート ドメインを指しているため、ルート ドメインのみを更新する必要があります。

CNAME の制限

DNS 標準が作成された時点で、その使用を管理するためのいくつかの規則が設定されました。 RFC 1912 と RFC 2181 は次のように規定しています:

  • SOANS レコードはルート ドメインに存在することが必須です
  • CNAME レコードは単一のレコードとしてのみ存在でき、他のリソース レコードと組み合わせることはできません ( DNSSEC SIGNXT 、および KEY RR レコードを除く)

これは CNAME を除外します 2 つのルールが互いに矛盾するため、ルート ドメインで使用されます。

ここで重要なのは、これは契約上の制限であり、技術的な制限ではないということです。 CNAME を使用することが可能です ルートでは、予期しないエラーが発生する可能性があります。これは、予期される動作の契約を破っているためです。

この例は Cloudflare によって語られ、CNAME を使用した後に Microsoft Exchange メール サーバーで発生した問題について説明しています。 ルート ドメイン:

ドメインは通常、MX レコードと呼ばれるものを通じてメールを処理するサーバーを指定します。問題は、Exchange サーバーがルート レコードで CNAME を取得し、MX レコードで設定された CNAME を適切に尊重しない可能性があることでした。 Exchange を責めることはできません。 それらは、DNS 仕様によって定められた仮定の下で動作していました。

ここでは、いくつかのサーバー ソフトウェアまたはライブラリに見られる欠点を示します。 CNAME の標準が整っているため 唯一になる 他のレコードは検索されません。 他のすべてのレコードは、警告やエラー メッセージなしで無視されます。 MX であっても MX というメールを受信するようにレコードが設定されました CNAME であるため、存在しないかのように無視されます。 最初に評価されます。 A があった場合も同様です。 記録:CNAME A が優先されます。 レコードは読み取られません。

現代のインターネット

では、なぜこれが問題なのですか? CNAME を使用する理由 とにかくあなたのルートドメインのために?コンテンツをホストしている Web サーバーの IP アドレスを探す場合、これがパスの終点ではないでしょうか?

現代のインターネット環境では、もはやそうではありません。 DNS 標準が作成されたときとは、世界は大きく異なります。

Heroku などの Platform as a Service (PaaS) プロバイダーを使用して、Web サーバーにコンテンツを保存することもできます。コンテンツは制御できますが、インフラストラクチャは制御できません。PaaS プロバイダーは、ネットワーク メンテナンスの手間のかかる作業を行います。通常、URL (my-app.herokuapp.com) が提供されます。 ) はルート ドメインのサブドメインであり、コンテンツが存在する Web サーバーの IP アドレスを表示できます。ただし、これらは完全に PaaS プロバイダーの管理下にあり、警告なしに変更されます。

PaaS プロバイダーによるバックエンドの変更の規模と頻度により、ルート ドメイン A の維持が困難になる場合があります 単一の IP アドレスを指すレコード。これを行うのが理想的です:

example.com      IN   CNAME    my-app.herokuapp.com.www.example.com  IN   CNAME    my-app.herokuapp.com.example.com      IN   CNAME    my-app.herokuapp.com.
www.example.com  IN   CNAME    my-app.herokuapp.com.

Heroku (または選択したホスト プロバイダ) が A の更新を管理できるようにします。 CNAME を記録します。 あなたの側で何も変更せずに を指します。ただし、これは DNS 仕様に違反しているため、非常に悪い考えです。

example.com からの 301/302 リダイレクトを簡単に実装できます。 www.example.com. へ ただし、その命令はWebサーバー上で行われます(そのため、固定のAを使用する必要があるという問題がまだあります その Web サーバーを指すように DNS に記録する)、またはカスタム DNS プロバイダーのリダイレクト (HTTPS で複雑になる)。

これには、URL バーに表示されるドメインが変更されるという副作用もありますが、これは望ましくない場合があります。この方法は、複雑に変化するバックエンドをスケーラブルな方法で指すという問題を解決するのではなく、Web サイトが完全に移動した場合、または SEO ランキングを維持しようとしている場合を対象としています。

ソリューション

現在、いくつかの DNS プロバイダーが、この問題を回避するカスタム ソリューションを開発しています。

  • ALIAS DNSimpleで
  • ANAME DNS Made Easy
  • ANAME easyDNSで
  • CNAME (仮想) CloudFlare で

これらはすべて CNAME を提供する仮想レコード タイプです。 のような動作で、マイナス面はありません。正確な実装は異なる場合がありますが、高レベルでは、DNS サーバーがこれらの仮想レコード タイプのいずれかを認識すると、DNS リゾルバーとして機能します。 A で解決されるまで、エイリアスによって作成されたチェーンに従います。 レコード (またはレコード) を返し、これらの A を返します DNS サーバーに記録します。これは CNAME を「平坦化」します A に連鎖 レコードが返され、送信されたクエリと区別できません。クエリは、純粋な A のみを認識します これは DNS 仕様に違反せず、CNAME の欠点もありません。 .

これらの仮想レコードは、意図しない動作を心配することなく、他のレコードと一緒にルートに配置できます。 CNAMEに従うときのプロバイダのDNS解決方法に応じて チェーンを使用すると、以前のルックアップをキャッシュすることでパフォーマンスが向上する場合もあります。

DNSimple セットアップの場合、以下のように構成します。このソリューションには、ドメイン名エイリアスのすべての利点があり、ルート レベルで使用するリスクはありません。

example.com      IN   ALIAS    my-app.herokuapp.com.www.example.com  IN   CNAME    my-app.herokuapp.com.

読んでくれてありがとう! ?

いつものように、訂正や追加点があればいつでもお待ちしております。

リソース

  • DNS サーバーとは
  • DNS ネーム サーバーを設定する
  • DNSimple のサポート ページと ALIAS ブログ
  • Cloudflare のサポートと CNAME ブログ
  • dig ハウツー
  • いくつかの優れた Stack Overflow または StackExchange の投稿
  • よく書かれたウィキペディアのエントリ
  • Netlify ブログ「www かどうか www」

  1. iPadのWordPressに画像をアップロードしてサイズと名前を保持する方法

    これは何年もの間私を困惑させてきたものです。 iPadを持った最初の日から、私はラップトップやデスクトップコンピュータよりもiPadを使うことを好みました。あっという間に、仕事とレジャーの両方で、iPadでやりたいことをすべて行うことができました。ただし、画像をWordPressにインポートして、特定の名前とサイズを維持する方法がわかりませんでした。 iOSがiCloudやサードパーティのアプリからSafariにファイルをインポートする機能を作成すると、私はもっと身近になりました。写真のサイズと名前を変更するアプリを見つけましたが、それでも「 image.jpg」としてWordPressにイ

  2. サイバースクワッティングとタイポスクワッティングの違いは?

    URL または Web サイトのドメインはますます一般的になっています。人々は、ビジネス、コンテンツ作成プラットフォーム、またはブログに関する Web サイトを確立するために、ホスティング サービスと一緒にそれらを購入しています。それはビジネスの一部になり、広く採用された傾向でもあります。ドメイン検索は、基本的にビジネスの成果とブランドの人気を反映しています。しかし、URL の購入は、それ自体がまったく別のビジネスです。ドメイン名が検索で上位にあるほど、販売価格は高くなります。キャッチーな URL とドメイン名に対する需要が高まっていることを考えると、一部の恐喝者は、インターネット上で人々をだ