첫 번째 질문에 대한 가장 쉬운 대답은 “아니오, 당신은 이것을 위해”A “입니다”라고 생각하지만 실수로 CNAME을 사용하여 ip 주소를 가리키는 일부 하위 도메인을 설정했으며 내 사무실의 일부 컴퓨터에서 작동했습니다. 어떻게 가능했는지 궁금 하신가요?
이제 집에서 확인할 때 다음과 같은 오류가 있습니다.
beast:~ viroos$ host somesubdomain.somedomain.com
Host somesubdomain.somedomain.com not found: 3(NXDOMAIN)
나는 사무실에서 일하는 데 사용 된 100 %입니다 (현재는 그렇지 않은 것처럼 보이지만 다른 컴퓨터에서 확인하고 있습니다). 따라서 특별한 네트워크 설정으로 인해 또는 DNS 항목을 추가 한 직후 테스트했기 때문에 100 %가 아닙니다.
나는이 이야기가 약간 미치거나 놀랍게 들린다는 것을 알고 있지만 누군가이 퍼즐을 풀도록 도와 줄 수있다.
// 편집 : 발굴 출력을 추가하고 있습니다
; <<>> 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
답변
CNAME
레코드 의 데이터 는 항상 다른 DNS 이름이어야합니다 CNAME
.
RFC 1034에서 간결하게 말하면, 데이터는 다음과 CNAME
같아야합니다.
CNAME a domain name.
IP 주소를 가리키고 있다면 티켓은 다음과 같습니다.
A For the IN class, a 32 bit IP address
CNAME
DNS 별칭으로 설계 및 구현되었습니다. 해당 데이터 필드에 IP 주소가 있다는 개념은 없습니다. 따라서 설계된대로 다른 DNS 이름의 별칭으로 해석됩니다. 결국 IP 주소는 DNS 이름의 구문에 맞습니다.
예를 들어 DNS 데이터가 다음과 같다고 가정 해 보겠습니다.
somesubdomain.somedomain.com. 60 IN CNAME 192.0.2.1.
쿼리하는 재귀 DNS 서버는 레코드가이며 레코드에 CNAME
포함 된 실제 데이터를 원한다는 것을 알 수 있습니다. 이외의 기록 CNAME
이 없으므로 고객에게 제공 할 답변이 없습니다.
192
도메인 내에서 호스트 이름에 대한 레코드를 쿼리하려고 시도 합니다 0.2.1
. 해당 이름에 대해 캐시 된 것이 없으므로 루트 서버에 요청합니다. .com
그리고와 같은 TLD에 대한 요청을 처리 .net
하지만이 요청은에 대한 요청입니다 .1
. 그들은 그러한 것이 없다고 신속하게 응답하며, 이것이 리 커서가 당신에게 보내는 것입니다.
당신이보고있는 응답 dig
은 재귀 이름 서버입니다. “글쎄, 당신이 찾은 이름이 다른 곳을 가리키고 있고 어딘가에 존재하지 않았다고 생각합니다. 당신이 나를 믿지 않으면 루트 서버에 문의하십시오.”
따라서 IP 주소를 CNAME
레코드 에 넣는 것은 결코 유효하지 않으며 작동하는 시스템이 호스트 파일 또는 로컬 이름 확인과 같은 다른 메커니즘을 통해 올바르게 작동한다고 생각합니다. 이름 확인 동작을 조사하십시오.
답변
cname은 정식 이름으로, 다른 이름의 별칭 일 뿐이며 일반적으로 A 레코드 또는 다른 cname 등입니다. IP를 가리 키도록 cname을 설정 한 경우 해당 IP의 별칭 일뿐입니다. 표준 RFC가 실제로 cname의 대상에 대한 데이터 형식 / 유효성이 무엇인지 말하지 않기 때문에 DNS 서버가 대상이 적법한 지 여부를 확인하지 않는다고 생각합니다. 이것은 일반적인 사용법은 아니지만 작동하는 경우 작동합니다. 때때로 작동하지 않는다는 사실은 일반적으로 사용되는 것을 사용하기에 충분해야한다고 생각합니다.
답변
당신은 할 수 있습니다 :
example IN CNAME 1.2.3.4.
여기서 1.2.3.4는 작동중인 IP 주소입니다. 그러나 CNAME에서 마지막 점을 주목하십시오. 사무실의 일부 컴퓨터 가이 작업을 수행하는 반면 다른 컴퓨터는 하위 도메인이 설정된 컴퓨터가 lmhosts
또는 /etc/hosts
파일 에 있다고 생각하지 않습니다 .