tutorial tier son route precios los ec2 cuales aws amazon-web-services dns amazon-route53

amazon web services - tier - RRSet de tipo CNAME con nombre DNS foo.com. no está permitido en el ápice en zone bar.com



dns amazon ec2 (5)

Soy dueño de foo.com y bar.com . Estoy administrando ambos en Route53. foo.com aloja mi sitio, y me gustaría dirigir el tráfico de bar.com a foo.com . Intenté configurar un registro CNAME para bar.com apuntando a foo.com , pero recibí el mensaje de error:

RRSet of type CNAME with DNS name foo.com. is not permitted at apex in zone bar.com.

¿Por qué esto no funciona, y qué puedo hacer en su lugar?


  1. Crea un Bucket S3 llamado bar.com . (¡El nombre debe ser el mismo que el dominio del que desea redireccionar para que esto funcione!)
  2. En el bar.com S3 de bar.com vaya a Properties > Static Website Hosting , seleccione Redirect all requests to another host name e ingrese foo.com en el cuadro de texto.
  3. De vuelta en la ruta 53, en su Hosted Zone para bar.com , haga clic en Create Record Set . Seleccione A - IPv4 address para el tipo. Haga clic en Yes para Alias . Haga clic en el cuadro de texto para Alias Target . bar.com debe aparecer en la lista -- S3 Website Endpoints -- bar.com -- S3 Website Endpoints -- . Guarde el registro. Espere unos minutos y debe tener una configuración de redireccionamiento para redirigir las solicitudes de bar.com a foo.com.

Puede usar este mismo método para redirigir un dominio desnudo a un subdominio (como www). Uso esto en los casos en que www.foo.com tiene que ser un CNAME, por lo que me redirecciono de foo.com a www.foo.com con este mismo método. Si foo.com es un registro A, puede utilizar esta técnica para redirigir desde www.foo.com a foo.com.

NOTA: este método reenviará con la ruta completa. es decir, http://bar.com/test se enviará a http://foo.com/test .


Debería usar el DNAME en lugar de un CNAME. Un registro CNAME solo puede redirigir la etiqueta a otra etiqueta.

Cuando hable de redirigir nombres de dominio en lugar de etiquetas, debe usar DNAME

$ORIGIN bar.com IN DNAME foo.com

Esto también significa que todos los registros A, NS y más se deben eliminar. Esto debe ser configurado en el dominio de foo.com.


En Route53, debe crear un registro A , NO un registro CNAME , y crear un alias debajo de eso.

Del comentario de @ ewalshe sobre la respuesta de Alexandru Cucu, si viniste aquí tratando de configurar API Gateway con un nombre de dominio personalizado y tener una url de distribución de Cloudfront.


Según RFC1912 sección 2.4:

A CNAME record is not allowed to coexist with any other data. In other words, if suzy.podunk.xx is an alias for sue.podunk.xx, you can''t also have an MX record for suzy.podunk.edu, or an A record, or even a TXT record. Especially do not try to combine CNAMEs and NS records like this!: podunk.xx. IN NS ns1 IN NS ns2 IN CNAME mary mary IN A

El RFC tiene perfecto sentido ya que el servidor de nombres no sabría si necesita seguir el CNAME o responder con el registro real con el que se superpone el CNAME. bar.com es una zona, por lo tanto, implícitamente tiene un registro SOA para el nombre de bar.com . No puede tener un registro SOA y un CNAME con el mismo nombre.

Sin embargo, dado que los registros SOA generalmente se usan solo para el mantenimiento de la zona, estas situaciones en las que desea proporcionar un CNAME en el vértice de la zona son bastante comunes. Aunque el RFC lo prohíbe, muchos ingenieros desearían un comportamiento como: "seguir el CNAME a menos que la consulta solicite explícitamente el registro SOA". Es por eso que Route 53 proporciona alias records . Se trata de una función específica de Route 53 que ofrece la funcionalidad exacta que necesita. Eche un vistazo a http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingAliasRRSets.html


tldr; Debe pasar un FQDN como el nombre ResourceRecordSet.

Tuve el mismo problema al usar esta declaración c # snip:

private static void RegisterHostWithDns(IAmazonRoute53 ec2,SynoviaImage image) { var changeBatch = new ChangeBatch(); var rRs = new ResourceRecordSet(image.Name, RRType.CNAME) {TTL=60,ResourceRecords = new List<ResourceRecord>() { new ResourceRecord(image.PublicDns)} }; var change = new Change(ChangeAction.UPSERT, rRs); changeBatch.Changes.Add(change); var request = new ChangeResourceRecordSetsRequest(ConfigurationManager.AppSettings["DnsZoneId"], changeBatch); var response = ec2.ChangeResourceRecordSets(request); Console.WriteLine("Updated CNAME For {0} setting {1}",image.Name,image.PublicDns); }

En este caso image.Name == "Listener"

Una vez que lo cambié a:

private static void RegisterHostWithDns(IAmazonRoute53 ec2,SynoviaImage image) { var changeBatch = new ChangeBatch(); var rRs = new ResourceRecordSet(string.Format("{0}.{1}",image.Name, "testing.foo.bar.com"), RRType.CNAME) {TTL=60,ResourceRecords = new List<ResourceRecord>() { new ResourceRecord(image.PublicDns)} }; var change = new Change(ChangeAction.UPSERT, rRs); changeBatch.Changes.Add(change); var request = new ChangeResourceRecordSetsRequest(ConfigurationManager.AppSettings["DnsZoneId"], changeBatch); var response = ec2.ChangeResourceRecordSets(request); Console.WriteLine("Updated CNAME For {0} setting {1}",image.Name,image.PublicDns); }

ahora el valor que se transfiere es: "Listener.fully.qualified.com"

Ahora funciona.