DNS CNAME 和 MX 通配符
DNS CNAME & MX wildcard
我在 AWS 上使用所有基础设施,我需要:
mydomain.com A ALIAS {S3-bucket- > } s3-website-eu-west-1.amazonaws.com.
www.mydomain.com CNAME mydomain.com
-> website on Amazon S3
*.mydomain.com CNAME {beanstalk} -> myserver-app.elasticbeanstalk.com
-> all other subdomains redirect to the Amazon Beanstalk app
*.mydomain.com MX ->
10 XXYY.in1.mandrillapp.com.
20 XXYY.in2.mandrillapp.com.
-> all emails goes to mandrillapp.
怎么可能呢?
如其所写,由于 CNAME 与 MX 通配符,它不起作用。
我不能使用所有名称,因为子域将动态生成。
非常感谢!!
大卫
您遇到的问题是 rules of DNS 的问题,它禁止在存在另一条记录的情况下使用 CNAME 记录。
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. This rule also insures that a cached CNAME can be
used without checking with an authoritative server for other RR types.
您是否有特殊原因想要拥有通配符 MX 记录?我看不到它提供好处的任何情况,但在很多情况下这将是一个非常糟糕的主意! (特别是它使网络上的任何主机成为发送垃圾邮件的可行目标,因为任何可以解析到该域的主机都有权发送。
如果您明确命名您的 MX 记录,您可以使用 CNAME 通配符(实际上我可能需要检查一下!但我相信如此)
如您所见,您不能在 DNS 层次结构的同一级别上拥有 CNAME
和任何其他类型的记录。 Route 53 Alias records,您用于您的裸域和 www
的创建是为了解决 DNS 设计中的这一限制,并且没有相同的不兼容问题......但是目标目前,Alias
记录只能是以下四种情况之一:CloudFront 分配、Elastic Load Balancer、与 A 记录中的主机名同名的 S3 存储桶,或相同的另一条记录输入相同的托管区域。
后两个对您没有帮助,但前两个都可以。
如果您的 beanstalk 应用程序已经有一个 ELB,您可以在 EC2 控制台的 Load Balancers 下找到该名称,并且您应该能够将其用作 *
通配符的别名目标 A-record 域的别名。或者,您可以为此目的向您的 beanstalk 应用程序添加一个负载均衡器。
或者,您可以创建 CloudFront 分配,并将 myapp.elasticbeanstalk.com 配置为分配的 "custom origin" 服务器。配置 CloudFront 调用 "alternate domain name (CNAME)" in the distribution for *.example.com
-- and, incidentally, disregard the fact that the CloudFront console calls it a "CNAME." They can also be used as Alias targets. Configure the distribution to forward the incoming Host:
header 到源的内容,以及您要转发的任何其他 headers。然后,您应该能够创建您的通配符别名 A 记录,指向 CloudFront 分配,它将请求转发到 beanstalk 应用程序。
我在 AWS 上使用所有基础设施,我需要:
mydomain.com A ALIAS {S3-bucket- > } s3-website-eu-west-1.amazonaws.com.
www.mydomain.com CNAME mydomain.com
-> website on Amazon S3
*.mydomain.com CNAME {beanstalk} -> myserver-app.elasticbeanstalk.com
-> all other subdomains redirect to the Amazon Beanstalk app
*.mydomain.com MX ->
10 XXYY.in1.mandrillapp.com.
20 XXYY.in2.mandrillapp.com.
-> all emails goes to mandrillapp.
怎么可能呢?
如其所写,由于 CNAME 与 MX 通配符,它不起作用。
我不能使用所有名称,因为子域将动态生成。
非常感谢!!
大卫
您遇到的问题是 rules of DNS 的问题,它禁止在存在另一条记录的情况下使用 CNAME 记录。
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. This rule also insures that a cached CNAME can be used without checking with an authoritative server for other RR types.
您是否有特殊原因想要拥有通配符 MX 记录?我看不到它提供好处的任何情况,但在很多情况下这将是一个非常糟糕的主意! (特别是它使网络上的任何主机成为发送垃圾邮件的可行目标,因为任何可以解析到该域的主机都有权发送。
如果您明确命名您的 MX 记录,您可以使用 CNAME 通配符(实际上我可能需要检查一下!但我相信如此)
如您所见,您不能在 DNS 层次结构的同一级别上拥有 CNAME
和任何其他类型的记录。 Route 53 Alias records,您用于您的裸域和 www
的创建是为了解决 DNS 设计中的这一限制,并且没有相同的不兼容问题......但是目标目前,Alias
记录只能是以下四种情况之一:CloudFront 分配、Elastic Load Balancer、与 A 记录中的主机名同名的 S3 存储桶,或相同的另一条记录输入相同的托管区域。
后两个对您没有帮助,但前两个都可以。
如果您的 beanstalk 应用程序已经有一个 ELB,您可以在 EC2 控制台的 Load Balancers 下找到该名称,并且您应该能够将其用作 *
通配符的别名目标 A-record 域的别名。或者,您可以为此目的向您的 beanstalk 应用程序添加一个负载均衡器。
或者,您可以创建 CloudFront 分配,并将 myapp.elasticbeanstalk.com 配置为分配的 "custom origin" 服务器。配置 CloudFront 调用 "alternate domain name (CNAME)" in the distribution for *.example.com
-- and, incidentally, disregard the fact that the CloudFront console calls it a "CNAME." They can also be used as Alias targets. Configure the distribution to forward the incoming Host:
header 到源的内容,以及您要转发的任何其他 headers。然后,您应该能够创建您的通配符别名 A 记录,指向 CloudFront 分配,它将请求转发到 beanstalk 应用程序。