현재 다음 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