DNS : MX 레코드와 CNAME이 모두 필요한 하위 도메인


17

mywebservice.com 영역을 소유하고 있다고 가정하겠습니다.

각 고객이 customer.mywebservice.com과 같은 자체 하위 도메인을 갖기를 원합니다.

customer.mywebservice.com은 지정된 서버 외부 사이트에 대한 CNAME이어야합니다. 해당 사이트는 자체 장비를 관리하고 언제든지 주소를 변경할 수 있으므로 CNAME이 필요합니다.

사람들은 또한 간단한 MX 레코드가 필요한 inbox@customer.mywebservice.com으로 이메일을 보낼 수 있어야합니다.

그러나 여기에 몇 가지 지침이 필요합니다.

에 따르면 RFC 1034 :

If a CNAME RR is present at a node, no other data should be
present; this ensures that the data for a canonical name and its aliases
cannot be different.

또한 내 DNS 서버가이를 사용하는 호스트에 대해 CNAME 이외의 서비스를 거부 할 것임을 확인했습니다.

그래서 나는지는 상황에 처한 것 같습니다. MX 레코드를 사용하려면 CNAME 대신 A를 사용해야합니다.

누구든지 해결 방법을 생각할 수 있습니까? 감사!

답변:


20

불행히도, 당신이 겪고있는 것은 DNS 사양의 한계입니다. 대부분의 DNS 서버 구현에서는 CNAME 레코드로 정의 된 호스트 이름과 동일한 MX 레코드를 갖는 데 실패합니다. 일부 구형 DNS 서버는이를 허용하지만 새롭고보다 안전한 구현을 위해 대부분 단계적으로 폐지되었습니다.

CNAME 레코드를 사용하는 대신 이름을 별칭으로 지정하는 대신 고객 사이트의 IP 주소와 함께 'A'레코드를 사용해야합니다.


그래, 나는 이것에 직면 할 것 같아. 감사!
Michael Gorsuch 2016 년

2
또한이 내용을 읽는 사람들에게이 제한의 이유는 CNAME이 조회중인 호스트의 "정식 이름"을 참조해야하기 때문입니다. 예를 들어 x1.example.com을 가리키는 CNAME 레코드 인 x2.example.com 호스트가있는 경우 x2를 찾는 모든 리졸버는 CNAME을보고 x2에 대해 수행 한 모든 작업을 x1로 대체하고 다시 시작해야합니다. . CNAME 외에 x2에 대한 MX 레코드가있는 경우 x1에도 MX가 있으면 바람직하지 않을 가능성이 있기 때문에 단순히 허용하지 않습니다.
저스틴 스콧

18

여기서 많은 연구와 연구를 한 결과, 수용 가능한 해결책을 찾았습니다. 첫째, 우리 모두가 RFC를 따르는 것이 중요합니다. RFC를 위반하기 위해 DNS 서버를 패치했으며 다른 주요 DNS 서버가 변경 사항을 존중하지 않는 것을 발견했습니다.

적절한 이동은 CNAME이 가리키는 호스트에 MX를 배치하는 것입니다. 따라서 customer.mywebservice.com이 A 레코드 loadbalancer.mywebservice.com의 CNAME 인 경우 loadbalancer.mywebservice.com에 대한 MX 레코드도 작성하는 것이 좋습니다. 나는 이것이 모든 주요 리졸버와 작동한다는 것을 확인했다.

customer.mywebservice.com에 대한 MX 쿼리가 수행되면 리졸버 라이브러리는 CNAME을 따르고 최종 A 레코드에 대한 적절한 MX를 가져옵니다. 만세!


4

customer.mywebservice.com은 지정된 서버 외부 사이트에 대한 CNAME이어야합니다. 해당 사이트는 자체 장비를 관리하고 언제든지 주소를 변경할 수 있으므로 CNAME이 필요합니다.

누구든지 해결 방법을 생각할 수 있습니까? 감사!

고객이 주소를 변경할 수 있어야한다는 요구 사항이 있습니다. 고객이 자신의 레코드를 동적으로 업데이트하도록 허용 하시겠습니까? 동적 dns를 사용하면 A 레코드를 사용할 수 있으며 고객은 필요에 따라 레코드를 변경할 수 있습니다. 약간의 작업이 필요하지만 각 개별 하위 도메인을 별도의 영역으로 사용하여 고객이 자신의 영역 만 만질 수 있도록 할 수 있습니다.

나는 그것을 시도하지 않았지만 gnudip 은 인증을 다루지 않고 DNS 서버에 많은 영역을 설정하지 않고도 동적 업데이트를 용이하게하는 오픈 소스 도구 인 것으로 보입니다.


3

MX 레코드가이 모든 레코드에 대해 동일하면 DNAME을 사용하여 XYZ.mywebservice.com을 hosted.mywebservice.com으로 리디렉션 할 수 있습니다. hosts.mywebservice.com 아래에서 관련 MX 및 A 레코드를 추가하십시오.

프로덕션에서 DNAME 레코드를 사용한 적이 없다고 말해야하지만 RFC2672 에서 더 자세히 읽을 수 있습니다 .


일부 SSL 도메인에서 DNAME을 사용하려고했지만 이전 DNS 서버 등에 여전히 문제가 있다고 들었습니다. 이것이 관련이 있습니까? 아니면 프로덕션 서버에서 DNAME을 사용하는 것이 안전합니까?
drybjed 2016 년

내가 추측해야 할 경우, 많은 응용 프로그램은 DNAME 레코드를 기대하지 않으며 사용할 때 깨질 수 있습니다. 모든 메일 서버가 DNAME을 따라 MX 레코드를 조회합니까? 잘 모르겠지만 그래야합니다. SSL 문제의 경우 DNAME을 이해하지 못하는 DNS 서버는 대신 CNAME 참조를 받아야합니다. 나는 이것을 구현하기 전에 철저히 테스트 할 것입니다.
Doug Luxem

응용 프로그램은 확실히 DNAME 레코드를 처리 할 필요가 없습니다! 이름 서버에서만 수행됩니다.
bortzmeyer 2016 년

3

customer.mywebservice.com CNAME의 RHS에 MX 항목이 있습니까?

그렇다면 메일 서버는 해당 MX를 사용하여 사용할 메일 서버를 찾습니다. 잘하면 당신은 그것을 제어 할 수 있습니다.


1

Michael Gorsuch의 대답은 대체로 맞습니다. CNAME-> A + MX 체인은 대부분 작동 합니다. 그러나 특정 MTA에서 일부 나쁜 동작을 유발합니다. 이 솔루션을 적절한 규모로 실행하는 것을 발견했습니다.

  • 일부 MTA는 단순히 기록을 찾기를 거부 할 것입니다.
  • 다른 사람들은 CNAME이 있어야 할 A 레코드를 잘못 대체 할 것입니다. 즉, "joe@foo.example.com"으로 메일을 보냈습니다.이 MX는 mail.example.com의 MX를 가진 web.example.com으로 메일을 보냈습니다. MTA는 봉투 헤더를 "To : joe@web.example.com"으로 다시 작성합니다.

이러한 문제가 얼마나 널리 퍼져 있는지 (분명히 Google / hotmail / yahoo / etc가 모두 올바르게 처리하는 것 같음) 아직 확실하지 않지만 더 나은 솔루션을 찾고 있습니다.


2
이것은 맞습니다. RFC5321 호환 SMTP 서버의 문서화 된 동작은 먼저 도메인에 대한 MX 레코드가 있는지 확인하고, 실패한 경우 A 레코드가 있는지 확인합니다. 이 동작은 MX가 CNAME이되어서는 안되는 실질적인 기술적 이유입니다. 사용 가능한 첫 번째 답변 후에는 해결이 중지됩니다.
adaptor

0

가능한 모든 유효한 솔루션은 모든 고객에 대한 기본 호스트 이름을 작성하고이를 오프 사이트 웹 서버 및 mx의 a 및 aa 레코드로 설정 한 다음 모든 고객 도메인을 단일 호스트 이름으로 CNAME하는 것입니다. 이렇게하면 오프 사이트의 IP 주소가 변경 될 때 하나의 레코드 만 변경하면됩니다.

CNAME은 a뿐만 아니라 전체 레코드 세트의 별명이므로 유일한 평가 및 가능한 방법입니다.


-4

MX와 CNAME은 완전히 별개의 레코드입니다. 첫 번째는 주어진 도메인의 메일 서버를 결정하고 두 번째는 도메인의 주소를 제공합니다. 이것은 작동해야합니다 :

@ IN SOA ns1.mywebservice.com. root.mywebservice.com. (
                        2009060201
                        12 시간
                        1 시간
                        1 주
                        8 시간
)

                        NS ns1.mywebservice.com.
                        NS ns2.mywebservice.com.

고객 CNAME offsite.host.
고객 MX 10 mail.server.

4
작동하지만 RFC1034 및 RFC1219를 위반하면 CNAME과 동일한 이름을 가진 다른 리소스 레코드가 없을 수 있습니다.
Doug Luxem

내 DNS 데몬은 RFC 엄격하며 플랫 아웃은 MX에 대한 응답을 거부합니다. 우리가 이것을 배치한다면 클라이언트 측에 잠재적 인 캐싱 문제가 있다고 생각합니다.
Michael Gorsuch 2016 년

어떤 DNS 데몬? 문제없이 해당 구성에서 작동 해야하는 BIND9를 사용하고 있습니다. 어쩌면 업그레이드해야 할 때입니까? 큰 인프라, 나는 추측?
drybjed 2016 년

MyDNS를 사용하고 있습니다. 그것은 꽤 큰 구성이며,이 작은 데몬은 지금까지 축복되었습니다. 나는 그것을 패치하는 것을 고려하고 있지만, 생길 수있는 부작용을 다루는 데 크게 관심이 없습니다. RFC에 반하는 경우 나쁜 생각처럼 들립니다.
Michael Gorsuch 2016 년

@Maciej-신뢰할 수있는 서버 이러한 레코드를 호스팅 할 있습니다. 그들은 그것을 쿼리하는 대부분의 재귀 서버에서 지옥을 혼란스럽게 할 것입니다.
Alnitak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.