하위 도메인에 CNAME을 사용해야합니까? test.example.com 이것이 CNAME 레코드의 적절한 사용입니까?

현재 다음 DNS 구성이있는 여러 웹 사이트를 관리합니다.

example.com      - A Record - Production Server IP
test.example.com - A Record - Test Server IP
www.example.com  - CNAME    - example.com
beta.example.com - CNAME    - test.example.com
dev.example.com  - CNAME    - test.example.com

이것이 CNAME 레코드의 적절한 사용입니까? 온라인에서 보았지만 명확한 답변을 찾지 못했습니다. 일부 사람들은 CNAME 레코드가 잘못되었다고 주장하지만 (이 이유가 명확하지 않음) 다음 설정을 제안합니다.

example.com      - A Record - Production Server IP
test.example.com - A Record - Test Server IP
www.example.com  - A Record - Production Server IP
beta.example.com - A Record - Test Server IP
dev.example.com  - A Record - Test Server IP

이 중 어느 것이 더 나은 접근 방식입니까 (그리고 왜)?

참고 : 하위 도메인에는 자체 MX 레코드가 필요하지 않으므로 여기서는 문제가되지 않습니다.



답변

예, CNAME을 적절히 사용하는 것입니다. 내가 참여한 토론에서 논증은 다음과 같은 경향이 있습니다.

CNAME에 대하여 :

  • 다운 스트림 DNS 캐시는 2 개의 DNS 조회를 수행해야하기 때문에 (작은) 성능 저하가 있습니다. 하나는 CNAME에 대한 것이고 다른 하나는 CNAME이 가리키는 A- 레코드에 대한 것입니다.
  • “권한”이 적거나 호환성 문제가있는 CNAME에 대한 모호한 주장.

CNAME에 찬성하여 :

  • 하드웨어 (물리적 서버)와 서비스 사이를 깔끔하게 추상화합니다.
  • DNS 관리를 단순화하여 서버를 이동할 때 하나의 레코드 만 변경하면됩니다.

이 작업을 수행하기 위해 몇 가지 다른 방법시도한 후 개인적으로 좋아하는 스타일이 생겼습니다. 그것은:

  • 각 물리적 서버에 대해 하나의 A 레코드; 상당히 낮은 TTL (약 30 분); 서버에 인간에게 친숙한 이름을 부여합니다 .
  • 각 서비스 당 하나의 CNAME; 높은 TTL (약 24 시간); 위의 서버 이름을 가리 킵니다.
  • 위 규칙에 대한 단독 실행으로 도메인 루트는 웹 서버 / 웹로드 밸런서를 가리키는 A 레코드입니다. @는 A 레코드 여야합니다.

이 설정이 잘 작동한다는 것을 알았습니다. CNAME에 대한 추가 DNS 조회를 유지합니다. 서버가 충돌해도 여전히 공용 DNS를 상당히 빠르게 변경할 수 있습니다.

다음 은 BIND 구문의 개선 된 입니다.

;name     ttl   class rr     value
server01  30m   IN    A      192.168.0.3
server02  30m   IN    A      192.168.0.4

webmail   24h   IN    CNAME  server01
extranet  24h   IN    CNAME  server02
ftp       24h   IN    CNAME  server02

답변

그렇습니다.

많은 사람들이 공유하는 나의 모범 사례는 각 서버 IP에 대해 1 A 레코드를 작성하는 것입니다. CNAMES를 다른 용도로 사용하십시오.

일반적인 예는 다음과 같습니다.

server1.example.com.      IN A      192.168.0.1
server2.example.com.      IN A      192.168.5.2
www                       IN CNAME  server1
ftp                       IN CNAME  server1
beta                      IN CNAME  server2