IPアドレスでCNAMEを使用できますか?なぜIfが機能するか(時々)?


13

最初の質問の最も簡単な答えは「いいえ、これには「A」があります」と思いますが、CNAMEを使用してIPアドレスを指すサブドメインを誤って設定し、オフィスのいくつかのコンピューターで動作しました。どうしてそれが可能だったのだろうか?

今、私は家からそれをチェックしているとき、私は次のエラーがあります:

beast:~ viroos$ host somesubdomain.somedomain.com
Host somesubdomain.somedomain.com not found: 3(NXDOMAIN)

私はオフィスで働いていた100%です(現在はそうではないようですが、別のマシンでチェックしています)。したがって、何らかの特別なネットワーク設定が原因で機能する場合、またはDNSエントリを追加した直後にテストしたため、100%ではありません。

私はこの話が少しクレイジー/信じられないほど聞こえるかもしれませんが、誰かがこのパズルを解決するのを手伝ってもらえますか?

//編集:dig出力を追加しています

; <<>> DiG 9.6-ESV-R4-P3 <<>> somesubdomain.somedomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 60224
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;somesubdomain.somedomain.com.      IN  A

;; ANSWER SECTION:
somesubdomain.somedomain.com.   67  IN  CNAME   xxx.xxx.xxx.xx1.

;; AUTHORITY SECTION:
.           1800    IN  SOA a.root-servers.net. nstld.verisign-grs.com. 2012040901 1800 900 604800 86400

;; Query time: 72 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Apr 10 00:11:01 2012
;; MSG SIZE  rcvd: 136

2
事務機を動かしたのは他の何かではなかったのですか?キャッシュされたエントリ?ローカルネットワーク上のそのドメインの権限のあるサーバーは、パブリック解決をオーバーライドしますか?ファイルをホストしますか?
シェーンマッデン

正確には、2台のマシンで動作しましたが、どちらもOSXです。Ubuntuマシンでは動作しませんでした。2台のマシンで動作していたため、DNS伝播の問題またはDNSキャッシュであると考えられたため、「ubuntu」問題(それは間違い)を無視しました。各クライアントのDNSセットアップのみをチェックしましたが、同じでした(DNS伝搬理論に関する不確実性が残っていました)。これらのマシンの1つは私のMacBookであり、現在自宅で使用していますが、セットアップしたWebサイトが正しく動作しなくなりました。「somesubdomain.somedomain.comのサーバーが見つかりません。DNSルックアップに失敗しました。」
Maciek Sawicki

を使用して名前を照会すると何が返されますdigか?
シェーンマッデン

質問に発掘出力を追加しました。
マシークサウィッキ

OSXコンピューターは、mDNS(まったく同じではない)など、DNS以外を使用してルックアップを実行していると強く思います。
クリスS

回答:


16

CNAMEレコード上のデータは常に別のDNS名である必要があります-それが重要なポイントですCNAME

RFC 1034で簡潔に言えCNAMEば、aのデータは次のようになります。

            CNAME           a domain name.

一方、IPアドレスを指す場合、チケットは次のとおりです。

            A               For the IN class, a 32 bit IP address

CNAMEDNSエイリアスとして設計および実装されています。そのデータフィールドにIPアドレスを持つという概念はありません。そのため、設計どおり、別のDNS名のエイリアスとして解釈されます。結局、IPアドレスはDNS名の構文に適合します。

したがって、たとえば、DNSデータが次のようになっているとします。

somesubdomain.somedomain.com.   60  IN  CNAME   192.0.2.1.

クエリを実行している再帰DNSサーバーは、レコードがであるCNAMEことを確認し、そこに含まれる実際のデータが必要であることを予測します。以外の記録はありませんCNAMEが見つからなかったため、クライアントに回答する必要は。

192ドメイン内で、ホスト名のレコードを照会しようとします0.2.1。その名前に対して何もキャッシュされていないため、ルートサーバーに問い合わせます。TLDのリクエストは、.comおよびのようなもの.netですが、このリクエストはのリクエストです.1。彼らはそのようなものはないことを即座に応答し、それは再帰者があなたに送るものです。

表示される応答digは、再帰ネームサーバーが「まあ、探している名前はどこか他の場所を指していて、どこにも存在しなかった-信じられない場合はルートサーバーに問い合わせてください」と言っています。


したがって、はい、CNAMEレコードにIPアドレスを入力することは決して有効ではありません。動作しているシステムは、hostsファイルやローカルの名前解決など、他のメカニズムを介して正しく機能していると思われます。


2

cnameは正規名であり、通常はAレコードまたは別のcnameなどの別の名前の単なるエイリアスです。IPを指すようにcnameを設定した場合、それはそのIPの単なるエイリアスです。DNSサーバーはターゲットが正当かどうかをチェックするとは思わない。なぜなら、標準RFCはcnameのターゲットのデータ形式/検証が何であるかを実際に言っていないからだ。これは通常の使用法ではありませんが、うまく機能している場合は機能しています。動作していないという事実は、従来使用されているものを使用するのに十分な場合があると思います。


0

あなたが持つことができます:

example IN CNAME 1.2.3.4.

1.2.3.4は有効なIPアドレスです。ただし、CNAMEの末尾のドットに注意してください。あなたのオフィスの一部のマシンはこれで動作しますが、他のマシンはサブファイルがlmhostsor /etc/hostsファイルに設定されていると信じさせません。


1
これはCNAMEの有効なデータですが、ルートサーバーを除き、存在しないTLDという名前の場合を除き、追加のルックアップを引き起こすことはないと確信しています4
シェーンマッデン

ANY(例host -a)クエリを使用して追加のルックアップが実行されます。
アダモ

@ShaneMaddenところで、あなたのコメントはDJBのローカルTLDを
14:17
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.