CNAME-CNAME 체인이 허용됩니까?


68

DNS에서 다른 CNAME 레코드를 가리키는 CNAME 레코드를 가질 수 있습니까?

이것이 필요한 이유는 웹 서버 컴퓨터의 IP 주소를 조회하려는 호스트 이름이 있기 때문입니다. 또한 첫번째 웹 서버가 죽을 경우를 대비하여 활성화 될 수있는 다른 웹 서버 컴퓨터도 있습니다. 이 경우 웹 서버 컴퓨터에서 호스트 이름을 대기의 IP 주소로 빠르게 지정해야합니다.

불행히도 호스트 이름은 DNS 시스템에 상주하므로 다른 sysadmin에 의존하는 수동 작업으로 인해 변경이 오래 걸릴 수 있습니다. 그러나 변경 사항을 신속하게 수행 할 수있는 또 다른 DNS 도메인이 있습니다. CNAME 대 CNAME 체인을 갖는 것은 가능한 해결책처럼 보입니다. 그러나 그것은 허용됩니까? 웹 브라우저가 이해할 수 있습니까?

답변:


81

RFC 1034 부터 -도메인 이름-개념 및 시설 :

다른 이름을 가리키는 RR의 도메인 이름은 항상 별명이 아닌 기본 이름을 가리켜 야합니다. 이렇게하면 정보에 액세스 할 때 추가적인 간접적 인 지시가 발생하지 않습니다. 예를 들어, 위 호스트의 이름이 RR 인 주소는 다음과 같아야합니다.

52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU

USC-ISIC.ARPA를 가리 키기보다는 물론, 견고성 원칙에 따라 CNAME 체인 또는 루프가 제공 될 때 도메인 소프트웨어가 실패해서는 안됩니다. CNAME 체인을 따라야하며 CNAME 루프가 오류로 표시되었습니다.

따라서 그렇습니다. 제대로 작성된 소프트웨어는 정상적으로 처리 할 수 ​​있습니다. 그러나 CNAME 체인은 모범 사례로 간주되지 않으며 인프라에 오버 헤드를 부과합니다.


3
RFC 레퍼런스의 경우 +1
Alnitak

16
나는 항상 이것을하지만, 위의 인용문은 문맥에 맞지 않습니다. 이 단락 바로 위에 읽습니다.Domain names in RRs which point at another name should always point at the primary name and not the alias. This avoids extra indirections in accessing information.
Molomby

3
Microsoft Azure 네트워킹 담당자가 언급 한 CNAME 체인은 AnyCast로드 밸런싱을 수행하는 데 중요합니다.
Paul Lan

26

물론 가능합니다.

그러나 더 많은 DNS 리소스를 사용한다는 명백한 이유 때문에 일반적으로 권장하지 않습니다 . 예를 들면 다음과 같습니다.

foo   IN      CNAME  someserver.somehost.com.
bar   IN      CNAME  foo

'bar'를 foo쿼리하면 CNAME 이 쿼리 된 다음 someserver.somehost.com.쿼리되어 추가 쿼리가 발생합니다.

체인의 모든 요소에 대해 추가 쿼리가 필요합니다.

이것이 권장되지 않는 또 다른 이유는 이와 같은 체인을 만들어 CNAME 루프를 만들 가능성 이 높아지기 때문입니다. 이들은 현재 DNS 서버에 의해 자동으로 감지되어야하지만 여전히 서버에 큰 부하를가합니다.


5

예, 허용되고 작동하지만 좋은 습관으로 간주되지는 않습니다. 다중 조회는 더 많은 리소스를 사용하므로 실수로 루프를 생성 할 위험이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.