Contenido

Dominios con AWS Route 53

Recientemente he comenzado a utilizar AWS Route 53. Como era novato, la lié parda y me ha costado bastante reestablecer los valores necesarios para que funcione, pero me ha servido para aprender por el camino :)

Aquí voy a contar cómo hacer lo que he necesitado: gestionar un dominio con AWS Route 53 sin utilizar el hosting de Amazon.

Si no estáis interesados en Route 53 pero sí en cómo comprobar vuestro dominio, podéis saltar directamente a la sección “Comprobando nuestro dominio”.

Amazon Web Services

Solicitando el dominio

Lo primero, claro está es solicitar el dominio. Y eso pasa por encontrar un dominio que no esté ya reservado, cosa nada trivial.

Para ello necesitamos cuenta en AWS, lo que nos regalará un año de hosting en una máquina pequeñita. Podéis aprovechar para guarrear. Desgraciadamente no hay regalos en cuanto al dominio.

Accederemos a la consola de Route 53 y pulsamos sobre Domains. A continuación sobre Register Domain y buscaremos un dominio libre. Cuando lo tengamos, seguimos las instrucciones, introduciendo nuestros datos y tal.

Al poco tiempo recibiremos un email diciendo que ya tenemos nuestro dominio disponible.

Sirviendo nuestro site

Ahora hay dos cosas que hacer: por un lado, decirle a nuestro hosting que disponemos del nuevo dominio, para que abra firewalls y demás. En mi caso estaba en OpenShift, pero eso cambia de un hosting a otro. Incluso hay algunos que no requieren este paso.

Por otra parte, hay que unir el dominio con la dirección de nuestro hosting. Esta parte sí es enteramente Route 53.

Para ello, y desde la consola de Route 53, nos vamos a Hosted Zones (en el menú de la izquierda). Seguramente nos haya creado ya una hosted zone con el nombre de nuestro dominio y podemos usarla directamente. Si no es así, podeis leer la siguiente sección.

Al entrar en la hosted zone de nuestro dominio, veremos que hay varias record set ya creadas: una de tipo NS y otra de tipo SOA. Lo que necesitamos es crear un record set más (botón Create Record Set).

Usaremos www o * como nombre, y el tipo CNAME. No es un Alias, TTL por defecto, Routing Policy de tipo Simple. En Value tenemos que poner la ruta que nos dio el proveedor, que suelen ser subdominios de un dominio más largo (algo como blablabla.rhcloud.com).

Poco después nos llegará un mail y nuestro dominio estará disponible.

Creando el hosted zone

Como he dicho, era novato y borré el hosted zone, ya que AWS no iba a tener mi hosting… ¡Error! Y encima no encontré la documentación necesaria para reestablecerlo. No es difícil, pero tiene un pequeño truco.

Lo primero es crear una hosted zone con nuestro dominio. No tiene pérdida y ya nos crea las entradas NS y SOA. No las toquéis, ya que son los servidores de AWS que nos han configurado para con nuestro DNS. Eso sí: apuntáos los servidores asociados al NS.

A continuación volvemos al Dashboard y seleccionamos Domains, eligiendo nuestro dominio. A la derecha veremos los Name Servers que están asociados con nuestro dominio y que no coinciden con los de nuestra hosted zone, así que es necesario editarlos, eliminar los valores actuales y meter los que nos apuntamos previamente.

Éste era el paso mágico que no encontré por ningún sitio, y viene a llamarse configurar el Domain Register. Hay webs que incluso me mandaban a otros servicios de DNS externos para poder hacer eso.

Al cabo de un buen rato (incluso una hora) llegará un mail diciendo que está todo bien, y al cabo de aún más rato (unas pocas horas) podremos acceder normalmente.

Comprobando nuestro dominio

En cualquier momento podemos comprobar nuestro dominio con la orden dig (disponible en el paquete de bind_).

Para ver si nuestra hosted zone está disponible, basta con coger cualquier servidor del record set llamado NS (en mi ejemplo, “ns-905.awsdns-49.net”) y hacer:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ dig @ns-905.awsdns-49.net example.org

; <<>> DiG 9.10.3 <<>> @ns-905.awsdns-49.net example.org
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28833
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.org.                  IN      A

;; AUTHORITY SECTION:
example.org.           900     IN      SOA     ns-905.awsdns-49.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400

;; Query time: 26 msec
;; SERVER: 205.251.195.137#53(205.251.195.137)
;; WHEN: vie dic 11 10:47:45 CET 2015
;; MSG SIZE  rcvd: 121

Con esto estamos preguntando directamente al servidor DNS por nuestro dominio.

Lo siguiente es ver si nuestro dominio ya se ha registrado en los Name Servers del mundo mundial, preguntando a otros Name Servers que, en principio, no sabían de la existencia de nuestro dominio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
$ dig example.org

; <<>> DiG 9.10.3 <<>> example.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13962
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;example.org.                   IN      A

;; AUTHORITY SECTION:
example.org.            900     IN      SOA     ns-905.awsdns-49.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400

;; Query time: 110 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: vie dic 11 10:51:14 CET 2015
;; MSG SIZE  rcvd: 121

Y, finalmente, podemos preguntar por el hosting concreto, con subdominio incluido:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ dig www.example.org

; <<>> DiG 9.10.3 <<>> www.example.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47347
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.example.org.               IN      A

;; ANSWER SECTION:
www.example.org.        300     IN      CNAME   example-example.rhcloud.com.
example-example.rhcloud.com. 60     IN      CNAME   ex-std-node724.prod.rhcloud.com.
ex-whatever.prod.rhcloud.com. 60 IN  CNAME   ec2-whatever.compute-1.amazonaws.com.
ec2-whatever.compute-1.amazonaws.com. 604800 IN A 92.23.179.44

;; Query time: 160 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: vie dic 11 10:51:19 CET 2015
;; MSG SIZE  rcvd: 179

Donde se ve toda la ruta necesaria para obtener la IP de nuestro hosting.