AWS Route 53 - Zona Privada em Multi VPC, Multi Account ou Hibrido.
Tags: aws, route53, dns
Published: 2021-09-10 02:15:51

# Route 53 - Multi Account or Hibrid with Private Zone

- **Matéria**
Estratégias de utilização do Route 53 em ambientes Multi Account ou Hibridos.
- **Descrição**
Como planejar e utilizar o Route 53 em ambientes Multi Account ou Hibiridos, provendo acesso a resolução privada de nomes em ambientes com multiplas Contas ou em ambientes hibridos, sendo datacenters ou usuários por meio de VPN.
- **Objetivo**
Saber qual é a melhor estratégia a ser utilizada para resolução de nomes em ambientes privados.
- **Ferramentas**
AWS Route 53
DNS
NSLOOKUP

---

# Route 53

O Route 53 é um dos Core Services, sendo de grande importância em ambientes escaláveis e resilientes. É um serviço gerenciado pela AWS, auto escalável e com alta disponibilidade em multi region. 

Em sua função básica, o Route 53 pode hospedar zonas Publicas ou Privadas, as quais seus registros podem usufruir de recursos como DNS Failover, Weighted Round Robin, entre outros.
Neste artigo, irei explorar as estratégias de utilização de PHZ em ambientes multi account ou hibrid.

## Private Hosted Zone (PHZ)

De modo simples, uma PHZ é uma zona de DNS como qualquer outra, entretanto ela só será resolvida internamente nas VPCs, desde que o seu DHCP Options utilize a opção **AmazonProvidedDNS** como **Domain name servers** e habilitar o **DNS resolution** na VPC. Caso precise utilizar algum ambiente com Domain Controller, o **Domain name servers** precisará apontar para os seus servidores, dessa forma, configure o DNS Server dos Domain Controllers para fazer o forwarder para o IP 169.254.169.253 ou para o segundo IP da VPC (Ex.: VPC CIDR utilizando 10.1.0.0/16, o segundo IP será 10.1.0.2).

![Diagrama 1 - Apresentação da utilização inicial do Route 53 com Private Hosted Zones](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8a4eco9omzxnepixrxcj.png)

Diagrama 1 - Apresentação da utilização inicial do Route 53 com Private Hosted Zones

Garantindo essas configurações iniciais na VPC, Private Hosted Zones poderão ser criadas e associadas as VPCs da conta, independente da region. 

Até aqui temos uma implementação simples, mas que já funcional para ambientes com múltiplas VPCs que precisam ter acesso as zonas de DNS privadas para acessarem os recursos internos. Vou incrementando os cenários e apresentando as soluções possíveis.

> Custo: 
- US$ 0,50 por hosted zone por mês
- US$ 0,40 por milhões de queries

> Exemplo em Terraform:
[https://github.com/andremulin/aws_route53_strategies_article/tree/main/simple](https://github.com/andremulin/aws_route53_strategies_article/tree/main/simple)

## Private Hosted Zone in Multi Account

Em muitos casos, se faz necessário a utilização de múltiplas contas, para que se possa segmentar os ambientes para obter maior segurança. Contudo, apesar da separação administrativa, existem serviços comuns a todas as contas ou aplicações que precisam se comunicar e resolver os DNS privados já existentes. 

A melhor opção que temos é o associar as private hosted zones existentes as VPCs das demais contas. O gerenciamento das private hosted zones continuará na conta onde ela foi criada, mas as VPCs que foram associadas, conseguirão resolver os endereços como as VPCs da conta principal. 

Dessa forma, nenhum trafego adicional precisará ser liberado entre as contas, pois a resolução de nome será realizada pelo Route 53 localmente na VPC.

![Diagrama 2 - Private Hosted Zones compartilhadas entre contas](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f1kujpmirt4l3ucfepyx.png)

Diagrama 2 - Private Hosted Zones compartilhadas entre contas

Para associar uma Private Hosted Zone a uma VPC de outra conta, siga os passos abaixo:

Conta A: Possui a PHZ e criará a associação
Conta B: Aceitará a associação da PHZ

Utilizando o AWS CLI, execute o comando abaixo na conta que possui a PHZ. O VPCRegion e o VPCid devem ser da VPC da Conta B, que receberá a associação da PHZ. As credenciais devem ser da Conta A.

**`aws route53 create-vpc-association-authorization --hosted-zone-id <hosted-zone-id> --vpc VPCRegion=<region>,VPCId=<vpc-id> --region us-east-1`**

Depois de criar a associação é necessário aceitar a associação. Para isso, execute o comando abaixo na Conta B, que receberá a associação. Lembre-se de alterar as credenciais ou perfis de acesso do AWS CLI. 

`aws route53 associate-vpc-with-hosted-zone --hosted-zone-id <hosted-zone-id> --vpc VPCRegion=<region>,VPCId=<vpc-id> --region us-east-1`

Pronto, esses dois comandos sendo executados de maneira correta, a PHZ já estará disponível para resolução na VPC da outra Conta. Como boa prática, é indicado remover a associação que foi aberta, isso prevenirá uma nova recriação da associação. Execute esse comando abaixo na Conta A:

`aws route53 delete-vpc-association-authorization --hosted-zone-id <hosted-zone-id> --vpc VPCRegion=<region>,VPCId=<vpc-id> --region us-east-1`

> Custo: 
- US$ 0,50 por hosted zone por mês
- US$ 0,40 por milhões de queries

> Exemplo em Terraform:
[https://github.com/andremulin/aws_route53_strategies_article/tree/main/multi_account](https://github.com/andremulin/aws_route53_strategies_article/tree/main/multi_account)

## Private Hosted Zone in Hibrid Environment

Até aqui, a resolução de endereços só foi possível dentro das VPCs, contudo, em alguns casos se faz necessário resolução de endereços fora da VPCs, ou seja, em datacenters ou por colaboradores através de VPNs.
Nesses casos, temos um ambiente Hibrid, para tal, será necessário utilizar um recurso adicional chamado Route 53 Resolver Endpoint.  Este recurso cria interfaces de rede em uma VPC que é capaz de receber e enviar consultas DNS. 

Utilize uma de suas VPCs que já possua acesso a PHZ desejada e acesso para o seu datacenter ou usuários de VPN. Este Endpoint pode ser utilizado de direção Inbound, onde a resolução de endereços é realizada dentro da VPC, ou Outbound, onde a resolução de endereços é realizada fora da VPC. Para fornecer acesso a resolução de endereços do PHZ, utilize Inbound.
Tendo criado o Endpoint, configure o DNS Forward de seus servidores DNS para encaminhar a resolução de nomes de suas PHZ para os IPs do Resolver Endpoint que foi criado.

![Diagrama 3 - Private Hosted Zone acessível por meio de Route 53 Resolver Endpoint](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gf76t9ntid90r89u1rx3.png)

Diagrama 3 - Private Hosted Zone acessível por meio de Route 53 Resolver Endpoint

> Custo: 
- US$ 0,125 por ENI por hora. São necessárias no mínimo duas ENI.
- US$ 0,50 por hosted zone por mês
- US$ 0,40 por milhões de queries

> Exemplo em Terraform:
[https://github.com/andremulin/aws_route53_strategies_article/tree/main/hibrid](https://github.com/andremulin/aws_route53_strategies_article/tree/main/hibrid)

## Resumo

Neste artigo apresentei 3 estratégias para utilização de Private Hosted Zones do Route 53, cada uma para uma arquitetura. 
Utilizando uma dessas estratégias, você conseguirá fornecer acesso a resolução de endereços de sua PHZ a outras VPCs, outras contas, ambientes locais ou legados.