Redes en AWS desde 0
Tags: aws, networking
Published: 2021-10-11 05:23:17

En este artículo vamos a ver los fundamentos de las comunicaciones en AWS, redes, subredes, firewall, internet gateway, listas de control de acceso, NAT entre otros. 

Crear redes, segmentos de red, configurar enrutamiento y asignar permisos de red son decisiones arquitecturales importantes para la comunicación entre los sistemas. Servicio de Computo (EC2, ECS, EKS), Bases de Datos (RDS, Aurora, ElastiCache) entre otros, permiten seleccionar la red, subred, firewall y zona de disponibilidad para el despliegue y ejecución del servicio de AWS. Es nuestra responsabilidad configurar las comunicaciones necesarias para la operación de los sistemas y protegerlos ante ataques que afecten la disponibilidad e integridad.

Iniciamos de adentro hacia fuera, con los servicios que son base para la creación de otros servicios. En cada servicio se describe el tipo, alcance, límites y un ejemplo para conocer capacidades y fronteras de cada uno. Comencemos.

&nbsp;  

## Virtual Private Cloud (VPC)

![VPC](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8y4rqkktrpzbgrv173xu.png)


**Tipo:** Comunicaciones
&nbsp;  

**Alcance:** Crear red virtual privada con bloque de direcciones ip (CIDR). Permite aislar lógicamente los recursos provisionados y desplegados en la red virtual de otros servicios que están en la nube de AWS.
&nbsp;  

**Limites:** Por región de AWS se pueden crear máximo 5 VPC. Pude ajustar el límite por medio de una solicitud a soporte AWS. 
&nbsp;  

**Ejemplo:** Para crear una VPC se necesita un bloque de direcciones ip privadas (CIDR) para IPv4 o IPv6, este valor depende de la cantidad de subredes y hosts que necesitamos. Utilizaremos el bloque **192.168.0.0/24** para crear VPC en la Región de Ohio en AWS. Al crear una VPC, se crean un Route Table y Network Access Control List (NACL) automáticamente 
&nbsp;  

## Subnets

![Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d3zbnrhg9tjpvfrdzo4f.png)


**Tipo:** Comunicaciones
&nbsp;  

**Alcance:** Crear subred virtual en la red VPC para segmentar la red y habilitar el despliegue de sistemas en la subred. Permite seleccionar la zona de disponibilidad de la Región de AWS para crear la subred, es posible crear más de una subred en una zona de disponibilidad.
&nbsp;  

**Limites:** Por VPC se puede crear hasta 200 Subredes. Pude ajustar el límite por medio de una solicitud a soporte AWS. 
&nbsp;  

**Ejemplo:** Para crear una subred se necesita un bloque de direcciones ip (CIDR) que este dentro del bloque de direcciones asignado a la VPC. 

Tomando 3 bits de la dirección de red **VPC 192.168.0.0/24**,  podemos crear 8 subredes (2^3=8). Los bloques de direcciones ip para cada subred son:
&nbsp;  

* **192.168.0.0/27**
* **192.168.0.32/27**
* **192.168.0.64/27**
* **192.168.0.96/27**
* **192.168.0.128/27**
* **192.168.0.160/27**
* **192.168.0.192/27**
&nbsp;  

Los restantes 5 bites son para crear hosts, la cantidad de hosts en cada subred es 27 (2^5 = 32 - 5). En cada bloque de direcciones ip de las subredes, AWS reserva 5 direcciones ip, las 4 primeras direcciones y la última. 
&nbsp;  

Para el bloque **192.168.0.0/27**, las direcciones ip reservadas por AWS son:  

* **192.168.0.0**, Dirección de red.
* **192.168.0.1**, Reservada por AWS para VPC Router.
* **192.168.0.2**, Reservada por AWS para DNS.
* **192.168.0.3**, Reservada por AWS para uso futuro.
* **192.168.0.31**, Broadcast, AWS no soporta comunicación broadcast en una VPC.
&nbsp; 
 
Para el bloque **192.168.0.32/27**, las direcciones ip reservadas por AWS son son:

* **192.168.0.32**, Dirección de red.
* **192.168.0.33**, Reservada por AWS para VPC Router.
* **192.168.0.34**, Reservada por AWS para DNS.
* **192.168.0.35**, Reservada por AWS para uso futuro.
* **192.168.0.63**, Broadcast, AWS no soporta broadcast en una VPC.
&nbsp;  

Utilizamos el bloque CIDR **192.168.0.0/27** para crear **Subred Publica** (acceso a Internet) y el bloque CIDR **192.168.0.32/27** para crear **Subred Privada** (acceso interno) en la zona de disponibilidad **us-east-2a** de Ohio.
&nbsp;  


## Internet Gateway

![Internet Gateway](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e3lpj5apsubig7c56tfz.png)


**Tipo:** Comunicaciones
&nbsp;  

**Alcance:** Puerta de entrada de acceso a Internet para los recursos desplegados en la subred y VPC. También es un NAT para las instancias (EC2, RDS) que tiene direcciones ip públicas.
&nbsp;  

**Limites:** Hasta 5 Internet Gateway por Región. Pude ajustar el límite por medio de una solicitud a soporte AWS.
&nbsp;  

**Ejemplo:** Se crea Internet Gateway para **VPC 192.168.0.0/24**. Un Internet Gateway se adjunta a una sola VPC.
&nbsp;  


## Route Table

![Route Table](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qa2hhpxbsbcaiqub1vjx.png)

**Tipo:** Comunicaciones
&nbsp;  

**Alcance:** Crear reglas de enrutamiento usadas para direccionar las comunicaciones de los recursos en al VPC y Subred hacia un sistema destinatario. Route Table adjunto a una VPC aplica para todas las Subredes de la VPC. Route Table adjunto a una Subred tiene prioridad sobre Route Table de la VPC.
&nbsp;  

**Limites:** Hasta 200 Route Tables por VPC y máximo 50 reglas de enrutamiento por Route Table. Pude ajustar el límite por medio de una solicitud a soporte AWS.
&nbsp;  

**Ejemplo:** En **Subred Publica 192.168.0.0/27** se crea y asocia Route Table con reglas de enrutamiento hacia Internet Gateway y red interna Local.
&nbsp;  

![Route Table Public Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rb6b4g3rhvtsf9wsg7e2.png)
&nbsp; 

Para **Subred Privada 192.168.0.32/27** se crea y asocia Route Table con regla de enrutamiento hacia red interna Local.
&nbsp;  

![Route Table Private Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ayp9hyi4mdno4loju41.png)
&nbsp;  

## Network Access Control List (NACL)

![NACL](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/np9cprwx3ux7r7go2qf4.png)

**Tipo:** Seguridad
&nbsp;  

**Alcance:** Firewall de red para controlar comunicaciones de entrada y salida a recursos en la Subred por medio de reglas. Una regla especifica el protocolo de comunicación, puerto, origen/destino y permitir o rechazar la comunicación. Las reglas son ordenadas por número, tienen precedencia y son sin estado, se crean reglas de entrada y salida para peticiones y respuestas
&nbsp;  

**Limites:** Máximo 200 Network ACL por VPC y hasta 20 reglas de IPv4 o IPv6 por NACL. Pude ajustar el límite por medio de una solicitud a soporte AWS.
&nbsp;  

**Ejemplo:** En **Subred Publica 192.168.0.0/27** se crea y asocia NACL con reglas de entrada y salida que permitan acceso a internet (todas las comunicaciones).
&nbsp;  

![NACL Inbound Public Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o8w5ki5foopsl8sw1fzj.png)

![NACL Outbound Public Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a1bfatpj2n80fbrcjp71.png)

Para **Subred Privada 192.168.0.32/27** se crea y asocia NACL con regla de entrada y salida que permitan las comunicaciones desde y hacia la **Subred Publica 192.168.0.0/27**.
&nbsp;  

![NACL Inbound Private Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mzr9j5jqwau3tanmwod5.png)

![NACL Outbound Private Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/we4qrt7mzn38cznlyoec.png)
&nbsp;  

## Security Group

![Security Group](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/flz88yf1dwdhb7go72oj.png)


**Tipo:** Seguridad
&nbsp;  

**Alcance:** Firewall de instancia para controlar comunicaciones de entrada y salida de una instancia (EC2, RDS) por medio de reglas. Una regla especifica el protocolo de comunicación, puerto y origen/destino especifico. Las reglas de Security Group son con estado, solo se necesitan crear reglas de entrada/salida para peticiones recibidas/generadas por la instancia y no necesita reglas para la respuesta.
&nbsp;  

**Limites:** Máximo 2500 Security Group por Region de AWS y hasta 60 reglas de entrada o salida por Security Group. Pude ajustar el límite por medio de una solicitud a soporte AWS.  
&nbsp;  

**Ejemplo:** Para instancia EC2 con conexión desde internet por medio de los protocolos de comunicación HTTP y SSH, desplegar en **Subred Publica 192.168.0.0/27**, crear y asociar Security Group con reglas de entrada que permitan comunicaciones por SSH y HTTP desde Internet e ip especifica.
&nbsp;  

![Security Group EC2 Public Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l90a3k7svrvpvsxl6m8z.png)

Para Instancia EC2 con acceso interno (sin acceso desde internet), desplegar en **Subred Privada 192.168.0.32/27**, crear y asociar Security Group con regla de entrada que permitan comunicaciones desde Security Group de la instancia EC2 en la **Subred Publica 192.168.0.0/27** por el protocolo TCP y puerto 22.
&nbsp;  

![Security Group EC2 Private Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u1bix9tl23xqlszsmw3r.png)

Para Instancia RDS con acceso interno (sin acceso desde internet), desplegar en **Subred Privada 192.168.0.32/27**, crear y asociar Security Group con reglas de entrada que permitan comunicaciones desde Security Group de la instancia EC2 en la **Subred Publica 192.168.0.0/27** y el Security Group de la instancia EC2 en la **Subred Privada 192.168.0.32/27**, ambos por el protocolo TCP y puerto 3306.
&nbsp;  

![Security Group RDS Private Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g19gtkq0p51c6a3rstdq.png)
&nbsp;  

La instancia EC2 en **Subred Publica** es **Bastion Host** (Puente) para conectar a las instancias EC2 y RDS en **Subred Privada** sin acceso desde internet.


## NAT Instance & NAT Gateway

![NAT](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1xj9toa1gp3x574bxzue.png)


**Tipo:** Comunicaciones
&nbsp;  

**Alcance:** Acceso a Internet para las instancias que se encuentran en **Subred privada** (sin acceso a interne) por medio del cambio de direcciones ip. Toma la dirección ip de los paquetes de comunicaciones enviados por las instancias y las reemplaza con la dirección ip de la NAT.
&nbsp;  

**NAT Instance:** Es una instancia EC2 con imagen de Maquina Amazon (AMI) preconfigurada, se despliega en subred pública con dirección ip publica o elástica. Ancho de banda depende del ancho de banda de la instancia EC2.
&nbsp;  

**NAT Gateway:** Es un servicio NAT administrado por AWS, con alta disponibilidad y dirección ip elástica. Escala hasta 45GB de ancho de banda. Permite comunicaciones hacia internet, entre VPCs y entre VPC y redes corporativas.
&nbsp;  

**Limites NAT Instance:** Aplican los límites de instancias EC2.
&nbsp;  

**Limites NAT Gateway:** Hasta 5 NAT Gateway por zona de disponibilidad de la región AWS. Pude ajustar el límite por medio de una solicitud a soporte AWS.
&nbsp;  

**Ejemplo:**
&nbsp; 

**NAT Instance:** : En **Subred Publica 192.168.0.0/27** desplegamos instancia EC2 con imagen NAT. 

En Route Table de la **Subred Privada 192.168.0.32/27**, agregamos regla de enrutamiento hacía NAT instance cuando el destino es internet.
&nbsp;  

![Route Table Private Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lhtrc5whsv7tev5lwk06.png)


**NAT Gateway:** Se crea NAT Gateway y se despliega en **Subred Publica 192.168.0.0/27**. 

En Route Table de la **Subred Privada 192.168.0.32/27**, agregamos regla de enrutamiento hacía NAT instance cuando el destino es internet.
&nbsp;   

![Route Table Private Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7mkfd0k7w7ukfixuswkf.png)
&nbsp;


Actualizar NACL de **Subred Privada 192.168.0.32/27** con regla de entrada y salida que permitan las comunicaciones hacia Internet (Peticiones y Respuestas).
&nbsp;

![NACL Inbound Private Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t1nk15sptcaadly23p6k.png)

![NACL Outbound Private Subnet](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bqgqbbelbtmy0s23osjx.png)

Route Table y NACL de **Subred Publica 192.168.0.0/27** sin cambios.
&nbsp;

## Conclusiones

En este post vimos los principales servicios de redes y seguridad de aws para construir redes y controlar las comunicaciones entre los sistemas desplegados en las red. También construimos solución para proteger las instancias restringiendo el acceso desde y hacia internet con Firewall de red e instancia y permitiendo la conexión por medio de Bastion Host y NAT.
&nbsp;

## Referencias

[VPC Limites](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html)
[Comparación NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-comparison.html)