Cómo resolver un DNS Privado en Route 53 Multi-Region.

Es posible, que en ocasiones tengamos la necesidad de resolver por DNS Privado, el llamado a una aplicación en una instancia EC2 que se encuentre en la cuenta A de AWS desde la Cuenta B de AWS que necesita consumir el servicio.

Lo anterior, es muy util incluso por diseño, para no hacer el llamado hacia IP privadas; teniendo en cuenta que esta puede llegar a cambiar en algún momento de fallas.

Este caso de uso tiene 2 soluciones posibles , los cuáles son :

  1. Opción A: asociar una zona hospedada privada de Route 53 con una VPC en una cuenta de AWS diferente.
  2. Opción B: Usar en Route 53 resolver inbound y outbound endpoint.

En este Post. Explicaremos como resolverlo a través de la Opción A; la cual consideremos en nuestro caso la mejor opción y mas rápida.Requisitos:

  • Tener una VPC Peering entre la Cuentas AWS A y la Cuenta AWS B
  • Tener una Zona Hosteada Privada en Route 53 en la Cuenta AWS A.
  • Contar con AWS CLI desde la máquina desde donde se vayan a ejecutar los comandos necesarios.
  • Crear un usuario IAM En la cuenta A con permisos para ejecutar comandos AWS CLI y con permisos exclusivos en Route 53 para “CreateVPCAssociationAuthorization”.
  • Crear un usuario IAM en la cuenta B con permisos para ejecutar comandos AWS CLI y con permisos exclusivos en Route 53 para “AssociateVPCWithHostedZone”.
  • Contar con el ID de la cuenta AWS B , VPC ID de la cuenta AWS B , CIDR de la VPC de la cuenta AWS B y Viceversa de la cuenta A para el Peering entre las VPC.

A pesar que para este Post deberíamos tener ya establecido el Peering entre las VPC de ambas cuentas y mostrar únicamente el procedimiento para resolver el DNS Privado , hemos decidido mostrarlo completo para los que quieran realizar todo el procedimiento. Los que ya tengan esto resuelto favor ir a la sección Establecer la Zona privada en Route 53 y desde allí ver los pasos necesarios si ya cuenta con el VPC Peering.

Como establecer el Peering VPC entre ambas cuentas de AWS.

A continuación mostramos los pasos para establecer el Peering desde la Cuenta A de AWS.

Cuenta AWS A

Ahora después de crear el VPC Peering tendremos un breve resumen de la solicitud.

Seguido de la solicitud ahora en la cuenta AWS B , debemos aceptar la solicitud para establecer el Peering.

para eso entramos en VPC → VPC Peering y aceptamos.

Ahora vemos un resumen de la aceptación del Request del Peering de la cuenta A y aceptamos viendo el status “ Active”.

Ahora debemos agregar en cada una de las cuentas , las rutas de la red que esperamos alcanzar ; es decir en la Cuenta A poner la Red de la VPC de la cuenta B y en la Cuenta B en su tabla de ruteo poner la Red de la VPC de la cuenta A.

En la cuenta AWS A debes agregar para este caso lo siguiente

Tabla de ruteo Cuenta AWS A
Tabla de ruteo Cuenta AWS B

Establecer la Zona DNS Privada en Route 53

Procedemos en la Cuenta AWS A a crear nuestra Zona DNS Privada.

para nuestro Lab higcloudtec.com

Después de crear la zona DNS Privada en la cuenta AWS A creamos el registro de Tipo A que apunte a la instancia que queremos que resuelva con el nombre servidor1.higcloudtec.com

Creación del usuario IAM en la cuenta AWS A para autorizar la VPC asociada en Route 53.

Recuerde escoger el tipo de acceso “Programatic access”

Debes asociar la siguiente política granular de IAM para ese usuario ( tenga en cuenta que asignar la política administrada Full Acces de Route 53 no será suficiente)

{“Version”: “2012–10–17”,“Statement”: [{“Sid”: “VisualEditor0”,“Effect”: “Allow”,“Action”: “route53:CreateVPCAssociationAuthorization”,“Resource”: “*”}]}

Luego debe configurar la llave en la maquina desde donde ejecutará el siguiente comando para este ejemplo del Post.

aws route53 create-vpc-association-authorization — hosted-zone-id Z05585021Y3ZCMWVDT9PM — vpc VPCRegion=us-west-2,VPCId=vpc-0ceeb95324657aa96

Una vez ejecutado tendrá una salida exitosa del comando como se muestra en la imagen.

Creación del usuario IAM en la cuenta AWS B para autorizar la VPC asociada en Route 53.

Recuerde escoger el tipo de acceso “Programatic access”

Creación usuario IAM Cuenta AWS B

Debes asociar la siguiente política granular de IAM para ese usuario ( tenga en cuenta que asignar la política administrada Full Acces de Route 53 no será suficiente)

{“Version”: “2012–10–17”,“Statement”: [{“Sid”: “VisualEditor0”,“Effect”: “Allow”,“Action”: “route53:AssociateVPCWithHostedZone”,“Resource”: “*”}]}

Luego debe configurar la llave en la maquina desde donde ejecutará el siguiente comando para este ejemplo del Post.

aws route53 associate-vpc-with-hosted-zone — hosted-zone-id Z05585021Y3ZCMWVDT9PM — vpc VPCRegion=us-west-2,VPCId=vpc-0ceeb95324657aa96

Una vez ejecutado tendrá una salida exitosa del comando como se muestra en la imagen.

Una vez ya tenemos los 2 comandos con cada usuario IAM ya podremos hacer un Ping desde una instancia de la cuenta AWS B al dns servidor1.higcloudtec.com que se encuentra en la cuenta AWS A.

Test resolución DNS
Prueba conectividad a través de DNS

Conclusiones:

Recomiendo, realizar siempre en los diseños de arquitectura en los que se consumen servicios entre cuentas de AWS; hacer el Setup con los siguientes pasos. Todo esto , debido a que un plan de recuperación de desastres (DRP) es muy necesario al trabajar con apuntamientos DNS; para así tener cambios rápidos de registros en DNS y poder recuperarnos de manera fácil.

Fuente de consulta : https://aws.amazon.com/es/premiumsupport/knowledge-center/private-hosted-zone-different-account/

Entrepreneur, travel lover, AWS x3, CIO High Cloud Tec , AWS Community Builder, passionate about cloud learning

Entrepreneur, travel lover, AWS x3, CIO High Cloud Tec , AWS Community Builder, passionate about cloud learning