CNAME 레코드는 1개만 존재한다!?
Techchallengearena
EKS를 통해서 Kubernetes 환경을 구축하여 운영하면서 Route53 도메인에 레코드를 추가하기 위해 External DNS를 사용하고 있습니다. 그런데, CNAME을 추가하려고 보니까, TXT 레코드가 있는 상태에서는 추가가 안된다는 걸 알게 되었습니다.
원인을 분석하면서 알게된 사실을 간단하게 공유합니다.
1/ RFC 1034와 RFC 1035는 DNS 시스템의 설계와 구현을 규정하는 문서로, CNAME 레코드와 다른 유형의 레코드가 함께 존재할 수 없도록 명확히 규정하고 있습니다.
2/ 그 이유는 우선순위가 불분명하여 일관성이 깨지는 것을 방지하기 위함입니다. CNAME 레코드는 도메인의 모든 쿼리를 지정된 다른 도메인으로 리디렉션 하기 때문에, 동일한 도메인에 다른 레코드가 존재하면 어떤 레코드를 반환해야 할지 모호해집니다.
3/ 그런데, DNSSEC과 관련된 RRSIG와 NSEC 레코드는 함께 존재해도 무방합니다. RFC 4034를 보면 두 레코드가 CNAME과 함께 존재해도 된다고 명시하고 있는데, 이는 CNAME의 본래 목적을 훼손하지 않으면서도 보안을 유지할 수 있도록 설계되었기 때문이다.
실제로 BIND9 코드를 살펴보니, cname_and_other_data 라는 함수가 있고, 해당 함수에서 cname이 다른 레코드와 중복해서 존재하는지를 체크하고 있었습니다.
(참고로, 만약 External DNS를 통해서 CNAME을 사용한다면, txt레코드에 prefix를 붙여 이름이 중복되는 것을 회피할 수 있습니다.)
https://blog.techchallengearena.com/p/cname-1
#dns #cname #devops
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 6월 19일 오후 3:42