Habilitación de recursos privados para la comunicación fuera de la VPC
En esta sección, se describe cómo crear instancias de NAT y trabajar con ellas para que los recursos de una subred privada puedan comunicarse fuera de la nube virtual privada.
Tareas
1. Crear una VPC para la instancia NAT
Utilice el siguiente procedimiento para crear una VPC con una subred pública y una subred privada.
Para crear la VPC
-
Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. -
Seleccione Crear VPC.
-
En Resources to create (Recursos para crear), elija VPC and more (VPC y más).
-
En Generación automática de etiquetas de nombre, ingrese un nombre para la VPC.
-
Para configurar las subredes, haga lo siguiente:
-
En Number of Availability Zones (Número de zonas de disponibilidad), elija 1 o 2, según sus necesidades.
-
En Number of public subnets (Número de subredes públicas), asegúrese de tener una subred pública por zona de disponibilidad.
-
En Number of private subnets (Número de subredes privadas), asegúrese de tener una subred privada por zona de disponibilidad.
-
-
Seleccione Crear VPC.
2. Crear un grupo de seguridad para instancias NAT
Cree un grupo de seguridad con las reglas que se describen en la tabla siguiente. Estas reglas permiten que su instancia NAT reciba tráfico vinculado a Internet de instancias en la subred privada, así como también tráfico SSH de su red. La instancia NAT también puede enviar tráfico a internet, lo que permite que las instancias de la subred privada obtengan actualizaciones de software.
A continuación, se muestran las reglas de entrada recomendadas.
Origen | Protocolo | Rango de puerto | Comentarios |
---|---|---|---|
CIDR de subred privada |
TCP | 80 | Permite el tráfico HTTP entrante de servidores en la subred privada. |
CIDR de subred privada |
TCP | 443 | Permite el tráfico HTTPS entrante de servidores en la subred privada. |
Rango de direcciones IP públicas de su red |
TCP | 22 | Permite el acceso SSH entrante a la instancia NAT desde su red (a través de la puerta de enlace de Internet). |
A continuación, se muestran las reglas de salida recomendadas.
Destino | Protocolo | Rango de puerto | Comentarios |
---|---|---|---|
0.0.0.0/0 | TCP | 80 | Permite el acceso HTTP saliente a internet |
0.0.0.0/0 | TCP | 443 | Permite el acceso HTTPS saliente a internet |
Para crear el grupo de seguridad
-
Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. -
En el panel de navegación, elija Grupos de seguridad.
-
Elija Create Security Group (Crear grupo de seguridad).
-
Ingrese un nombre y una descripción para el grupo de seguridad.
-
Para VPC, seleccione el ID de la VPC para su instancia NAT.
-
Agregue reglas para el tráfico entrante en Reglas entrantes de la siguiente manera:
-
Seleccione Agregar regla. Elija HTTP para Tipo e ingrese el rango de direcciones IP de su subred privada para Fuente.
-
Seleccione Agregar regla. Elija HTTPS para Tipo e ingrese el rango de direcciones IP de su subred privada para Fuente.
-
Seleccione Agregar regla. Elija SSH para Tipo e ingrese el rango de direcciones IP de su red para Origen.
-
-
Agregue reglas para el tráfico saliente en Reglas salientes de la siguiente manera:
-
Seleccione Agregar regla. Elija HTTP como Tipo e introduzca 0.0.0.0/0 como Destino.
-
Seleccione Agregar regla. Elija HTTPS como Tipo e introduzca 0.0.0.0/0 como Destino.
-
-
Elija Create Security Group (Crear grupo de seguridad).
Para obtener más información, consulte Grupos de seguridad.
3. Creación de una AMI de NAT
Una AMI de NAT está configurada para ejecutar NAT en una instancia de EC2. Debe crear una AMI de NAT y, a continuación, lanzar la instancia NAT con su AMI de NAT.
Si piensa utilizar un sistema operativo que no sea Amazon Linux para su AMI de NAT, consulte la documentación de este sistema operativo para obtener información sobre cómo configurar la NAT. Asegúrese de guardar esta configuración para que se mantenga incluso después de reiniciar la instancia.
Para crear una AMI de NAT para Amazon Linux
-
Lance una instancia EC2 que ejecute AL2023 o Amazon Linux 2. Asegúrese de especificar el grupo de seguridad que creó para la instancia de NAT.
-
Conéctese a la instancia y ejecute los comandos siguientes en la instancia para habilitar iptables.
sudo yum install iptables-services -y sudo systemctl enable iptables sudo systemctl start iptables
-
Haga lo siguiente en la instancia para habilitar el reenvío de IP de forma que persista después del reinicio:
Mediante un editor de texto, como nano o vim, cree el siguiente archivo de configuración:
/etc/sysctl.d/custom-ip-forwarding.conf
.-
Agregue la siguiente línea al archivo de configuración.
net.ipv4.ip_forward=1
Guarde el archivo de configuración y salga del editor de texto.
-
Ejecute el siguiente comando para aplicar el archivo de configuración.
sudo sysctl -p /etc/sysctl.d/custom-ip-forwarding.conf
-
Ejecute el siguiente comando en la instancia y anote el nombre de la interfaz de red principal. Necesitará esta información para el siguiente paso.
netstat -i
En el ejemplo de salida a continuación,
docker0
es una interfaz de red creada por Docker,eth0
es la interfaz de red principal ylo
es la interfaz de bucle invertido.Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg docker0 1500 0 0 0 0 0 0 0 0 BMU eth0 9001 7276052 0 0 0 5364991 0 0 0 BMRU lo 65536 538857 0 0 0 538857 0 0 0 LRU
En el ejemplo de salida a continuación, la interfaz de red principal es
enX0
.Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg enX0 9001 1076 0 0 0 1247 0 0 0 BMRU lo 65536 24 0 0 0 24 0 0 0 LRU
En el ejemplo de salida a continuación, la interfaz de red principal es
ens5
.Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg ens5 9001 14036 0 0 0 2116 0 0 0 BMRU lo 65536 12 0 0 0 12 0 0 0 LRU
-
Ejecute los comandos siguientes en la instancia para configurar NAT. Si la interfaz de red principal no es
eth0
, reemplaceeth0
por la interfaz de red principal que anotó en el paso anterior.sudo /sbin/iptables -t nat -A POSTROUTING -o
eth0
-j MASQUERADE sudo /sbin/iptables -F FORWARD sudo service iptables save -
Cree una AMI de NAT desde la instancia EC2. Para obtener más información, consulte Crear una AMI de Linux desde una instancia en la Guía del usuario de Amazon EC2.
4. Lanzamiento de una instancia NAT
Utilice el siguiente procedimiento para lanzar una instancia NAT mediante la VPC, el grupo de seguridad y la AMI de NAT que ha creado.
Para lanzar una instancia NAT
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el panel, elija Iniciar instancia.
-
En Nombre, ingrese un nombre para la instancia NAT.
-
Para las imágenes de aplicaciones y sistemas operativos, seleccione su AMI de NAT (elija Buscar más AMI, Mis AMI).
-
En Tipo de instancia, elija un tipo de instancia que proporcione los recursos de computación, memoria y almacenamiento que necesita su instancia NAT.
-
(Opcional) En Par de claves, seleccione un par de claves existente o elija Crear nuevo par de claves.
-
En Network settings (Configuración de red), haga lo siguiente:
-
Elija Editar.
-
En VPC, elija la VPC que ha creado.
-
En Subred, elija la subred pública que creó para la VPC.
-
En Auto-assign public IP (Autoasignar IP pública), elija Enable (Habilitar). Como alternativa, después de lanzar la instancia NAT, asigne una dirección IP elástica y asígnela a la instancia NAT.
-
En Firewall, elija Seleccionar un grupo de seguridad existente y, a continuación, elija el grupo de seguridad que creó.
-
-
Seleccione Iniciar instancia. Elija el ID de la instancia para abrir la página de detalles de la instancia. Espere a que el estado de la instancia cambie a En ejecución y a que las comprobaciones de estado se realicen de forma correcta.
-
Deshabilite las comprobaciones de origen o destino para la instancia NAT (consulte 5. Deshabilitar las comprobaciones de origen/destino).
-
Actualice la tabla de enrutamiento para enviar tráfico a la instancia NAT (consulte 6. Actualización de la tabla de enrutamiento).
5. Deshabilitar las comprobaciones de origen/destino
Cada instancia EC2 realiza las comprobaciones de origen/destino de forma predeterminada. Esto significa que la instancia debe ser el origen o el destino de todo tráfico que envíe o reciba. No obstante, una instancia NAT debe poder enviar y recibir tráfico cuando el origen o el destino no sea la propia instancia. Por lo tanto, debe deshabilitar las comprobaciones de origen/destino en la instancia NAT.
Para deshabilitar las comprobaciones de origen o destino
-
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el panel de navegación, seleccione Instances (Instancia[s]).
-
Seleccione la instancia NAT.
-
Elija Acciones, Redes, Cambiar verificación de origen/destino.
-
Para comprobar el origen o el destino, seleccione Detener.
-
Seleccione Guardar.
-
Si la instancia NAT tiene una interfaz de red secundaria, selecciónela en Network interfaces (Interfaces de red) en la pestaña Networking (Redes). Elija el ID de interfaz para ir a la página de interfaces de red. Elija Actions (Acciones), Change source/des. check (Cambiar comprobación de origen y destino), borrar Enable (Habilitar) y elija Save (Guardar).
6. Actualización de la tabla de enrutamiento
La tabla de enrutamiento para la subred privada debe tener una ruta que envíe tráfico de Internet a la instancia NAT.
Para actualizar la tabla de enrutamiento
-
Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. -
En el panel de navegación, elija Tablas de enrutamiento.
-
Seleccione la tabla de enrutamiento de la subred privada.
-
En la pestaña Rutas, elija Editar rutas y luego elija Agregar ruta.
-
Ingrese 0.0.0.0/0 para Destino y el ID de instancia de la instancia NAT para Destino.
-
Elija Guardar cambios.
Para obtener más información, consulte Configurar tablas de enrutamiento.
7. Pruebe su instancia NAT
Una vez que haya lanzado una instancia NAT y haya completado los pasos de configuración anteriores, puede probar si una instancia en su subred privada puede acceder a Internet a través de la instancia de NAT mediante el uso de la instancia NAT como servidor bastión.
Tareas
Paso 1: Actualizar el grupo de seguridad de la instancia de NAT
Para permitir que las instancias de la subred privada envíen tráfico de ping a la instancia de NAT, añada una regla que permita el tráfico ICMP entrante y saliente. Para permitir que la instancia de NAT sirva como servidor bastión, agregue una regla que permita el tráfico SSH saliente a la subred privada.
Para actualizar el grupo de seguridad de su instancia de NAT
Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. En el panel de navegación, elija Grupos de seguridad.
Seleccione la casilla de verificación del grupo de seguridad asociado a la instancia NAT.
En la pestaña Reglas de entrada, seleccione Editar reglas de entrada.
Seleccione Add rule (Agregar regla). Seleccione All ICMP IPv4 (Todos los ICMP IPv4) para Type (Tipo). Elija Personalizado para Origen e ingrese el rango de direcciones IP de su subred privada. Seleccione Guardar reglas.
-
En la pestaña Reglas de salida, elija Editar reglas de salida.
-
Seleccione Add rule (Agregar regla). Seleccione SSH para Type (Tipo). Elija Personalizado para Destino e ingrese el rango de direcciones IP de su subred privada.
-
Seleccione Add rule (Agregar regla). Seleccione All ICMP IPv4 (Todos los ICMP IPv4) para Type (Tipo). Seleccione Anywhere - PIv4 (En cualquier lugar: IPv4) para Destination (Destino). Seleccione Save rules (Guardar reglas).
Paso 2: Lanzar una instancia de prueba en la subred privada
Lance una instancia en su subred privada. Debe permitir el acceso a SSH desde la instancia de NAT y debe utilizar el mismo par de claves que utilizó para la instancia de NAT.
Para lanzar una instancia de prueba en la subred privada
Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/
. -
En el panel, elija Iniciar instancia.
-
Seleccione su subred privada.
-
No asigne una dirección IP pública a esta instancia.
-
Asegúrese de que el grupo de seguridad de esta instancia permita el acceso SSH entrante desde su instancia NAT o desde el rango de direcciones IP de su subred pública y el tráfico ICMP saliente.
-
Seleccione el mismo par de claves que utilizó para la instancia de NAT.
Paso 3: Realizar un ping a un sitio web compatible con ICMP
Para comprobar que la instancia de prueba de la subred privada puede usar la instancia de NAT para comunicarse con Internet, ejecute el comando ping.
Para probar la conexión a Internet desde tu instancia privada
-
Desde su equipo local, configure el reenvío del agente SSH para poder utilizar la instancia de NAT como servidor bastión.
-
Conéctese a la instancia de NAT desde su equipo local.
-
Desde la instancia de NAT, ejecute el comando ping y especifique un sitio web que esté habilitado para ICMP.
[ec2-user@ip-10-0-4-184]$
pingietf.org
Para confirmar que la instancia de NAT tiene acceso a Internet, compruebe que ha recibido un resultado como el siguiente y, a continuación, pulse Ctrl+C para cancelar el comando ping. De lo contrario, compruebe que la instancia de NAT esté en una subred pública (que su tabla de enrutamiento contenga una ruta a una puerta de enlace de Internet).
PING ietf.org (104.16.45.99) 56(84) bytes of data. 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=33 time=7.88 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=33 time=8.09 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=33 time=7.97 ms ...
-
Desde su instancia NAT, conéctese a su instancia en su subred privada utilizando su dirección IP privada.
[ec2-user@ip-10-0-4-184]$
ssh ec2-user@private-server-private-ip-address
-
Desde su instancia privada, pruebe que puede conectarse a Internet ejecutando el comando ping.
[ec2-user@ip-10-0-135-25]$
pingietf.org
Para confirmar que la instancia privada tiene acceso a Internet a través de la instancia de NAT, compruebe que ha recibido un resultado como el siguiente y, a continuación, pulse Ctrl+C para cancelar el comando ping.
PING ietf.org (104.16.45.99) 56(84) bytes of data. 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=1 ttl=33 time=8.76 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=2 ttl=33 time=8.26 ms 64 bytes from 104.16.45.99 (104.16.45.99): icmp_seq=3 ttl=33 time=8.27 ms ...
Resolución de problemas
Si el ping comando falla desde el servidor de la subred privada, siga estos pasos para solucionar el problema:
-
Verifique que haya hecho ping a un sitio web que tenga habilitado ICMP. De lo contrario, su servidor no puede recibir paquetes de respuesta. Para probar esto, ejecute el mismo comando ping desde una terminal de línea de comandos en su propia computadora.
-
Verifique que el grupo de seguridad de su instancia NAT permita el tráfico ICMP entrante desde su subred privada. De lo contrario, su instancia NAT no puede recibir el comando ping de su instancia privada.
-
Verifique que deshabilitó la verificación de origen o destino para su instancia NAT. Para obtener más información, consulte 5. Deshabilitar las comprobaciones de origen/destino.
-
Verifique que configuró sus tablas de rutas correctamente. Para obtener más información, consulte 6. Actualización de la tabla de enrutamiento.
Paso 4: Limpiar
Si ya no necesita el servidor de prueba de la subred privada, finalice la instancia para que no se le siga facturando. Para obtener más información, consulte Terminar una instancia en la Guía del usuario de Amazon EC2.
Si ya no necesita la instancia de NAT, puede detenerla o cancelarla para que no se le siga facturando. Si ha creado una AMI de NAT, puede crear una nueva instancia de NAT siempre que la necesite.