Instancias NAT - Amazon Virtual Private Cloud

Instancias NAT

importante

NAT AMI se basa en la última versión de Amazon Linux, 2018.03, cuya compatibilidad estándar llegó a su fin el 31 de diciembre de 2020. Para obtener más información, consulte la siguiente entrada del blog: Amazon Linux AMI end of life. Esta AMI solo recibirá actualizaciones de seguridad críticas (no habrá actualizaciones regulares).

Si utiliza una AMI NAT existente, AWS recomienda que migre a una gateway NAT. Las gateway NAT ofrecen una mejor disponibilidad, un mayor ancho de banda y que requieren menos esfuerzo administrativo. Si las instancias NAT coinciden mejor con su caso de uso, puede crear su propia AMI NAT. Para obtener más información, consulte Comparar las puertas de enlace NAT con las instancias NAT.

Puede crear su propia AMI que proporcione traducción de direcciones de red y utilizar su AMI para iniciar una instancia EC2 como instancia NAT. Puede utilizar una instancia NAT en una subred pública para permitir que las instancias de la subred privada inicien el tráfico IPv4 saliente a la internet o a otros servicios de AWS, pero impedir que las instancias reciban tráfico entrante iniciado por alguien en internet.

Su cuota de instancias NAT depende de la cuota de instancias para la región. Para obtener más información, consulte Amazon EC2 Service Quotas en la Guía del usuario de Amazon EC2 para instancias de Linux.

Conceptos básicos de las instancias NAT

El siguiente gráfico muestra los conceptos básicos de las instancias NAT. La tabla de ruteo principal está asociada a la subred privada y envía el tráfico de las instancias de la subred privada a la instancia NAT en la subred pública. La instancia NAT envía el tráfico a continuación a la gateway de internet para la VPC. El tráfico se atribuye a la dirección IP elástica de la instancia NAT. La instancia NAT especifica un número de puerto alto para la respuesta; si la respuesta vuelve, la instancia NAT la envía a una instancia de la subred privada en función del número de puerto de la respuesta.

El tráfico de Internet desde las instancias en la subred privada se direcciona a la instancia NAT, que luego se comunica con Internet. Por lo tanto, la instancia NAT debe tener acceso a Internet. Debe estar en una subred pública (una subred que tiene una tabla de enrutamiento con una ruta a la gateway de Internet) y debe tener una dirección IP pública o una dirección IP elástica.


        Configuración de la instancia NAT

Configurar la instancia NAT

Utilice el siguiente procedimiento para configurar una VPC y una instancia NAT.

Requisito

Antes de comenzar, cree una AMI configurada para que se ejecute como instancia NAT. Asegúrese de guardar esta configuración para que se mantenga incluso después de reiniciar la instancia. Consulte la documentación del sistema operativo específico que está utilizando en la instancia para aprender a configurar NAT.

Para configurar una instancia NAT
  1. Cree una VPC con dos subredes.

    1. Cree una VPC (consulte Creación de una VPC).

    2. Cree dos subredes (consulte Creación de una subred).

    3. Adjunte una puerta de enlace de Internet a la VPC (consulte Crear y adjuntar una puerta de enlace de Internet).

    4. Cree una tabla de enrutamiento personalizada que envíe el tráfico cuyo destino esté fuera de la VPC a la puerta de enlace de Internet y, a continuación, asóciela a una subred, lo que la convierte en una subred pública (consulte Creación de una tabla de enrutamiento personalizada).

  2. Cree el grupo de seguridad de NATSG (consulte Crear el grupo de seguridad de NATSG). Este grupo de seguridad se especifica al lanzar la instancia NAT.

  3. Lance una instancia en su subred pública desde una AMI que se haya configurado para ejecutarse como instancia NAT.

    1. Abra la consola de Amazon EC2.

    2. En el panel, elija el botón Launch Instance y complete el asistente de la siguiente forma:

      1. En la página Elegir una Amazon Machine Image (AMI), establezca el filtro en De mi propiedady, a continuación, seleccione la AMI.

      2. En la página Choose an Instance Type, seleccione el tipo de instancia y, a continuación, elija Next: Configure Instance Details.

      3. En la página Configure Instance Details, seleccione la VPC que creó en la lista Network y seleccione la subred pública desde la lista Subnet.

      4. (Opcional) Seleccione la casilla de verificación Public IP para solicitar que la instancia NAT reciba una dirección IP pública. Si elige no asignar una dirección IP pública ahora, puede asignar una dirección IP elástica y asignarla a su instancia una vez lanzada. Elija Next: Add Storage (Siguiente: Agregar almacenamiento).

      5. Puede elegir añadir almacenamiento a su instancia y, en la página siguiente, añadir etiquetas. Elija Next: Configure Security Group cuando haya terminado.

      6. En la página Configure Security Group, seleccione la opción Select an existing security group y seleccione el grupo de seguridad NATSG que ha creado. Elija Review and Launch.

      7. Revise los ajustes que ha elegido. Realice los cambios que necesite y, a continuación, elija Launch para seleccionar un par de claves y lanzar su instancia.

  4. Deshabilite el atributo SrcDestCheck para la instancia NAT (consulte Deshabilitar las comprobaciones de origen/destino).

  5. Si no ha asignado una dirección IP pública a su instancia NAT durante el lanzamiento (paso 3), debe asociarle una dirección IP elástica.

    1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

    2. En el panel de navegación, elija Elastic IPs y, a continuación, elija Allocate new address.

    3. Elija Allocate.

    4. Seleccione la dirección IP elástica de la lista y, a continuación, elija Actions, Associate address.

    5. Seleccione el recurso de interfaz de red y, a continuación, seleccione la interfaz de red para la instancia NAT. Seleccione la dirección a la que desea asociar la IP elástica en la lista Private IP y, a continuación, elija Associate.

  6. Actualice la tabla de ruteo principal para enviar el tráfico a la instancia NAT. Para obtener más información, consulte Actualizar la tabla de ruteo principal.

Lanzar una instancia NAT mediante la línea de comandos

Para lanzar una instancia NAT en su red, utilice uno de los siguientes comandos. Para obtener más información, consulte Trabajo con VPC de Amazon. Puede utilizar el ID de AMI de la AMI que configuró para ejecutarse como una instancia NAT. Para obtener información acerca de cómo crear una AMI en Amazon Linux 2, consulte Creación de AMI de Amazon con respaldo EBS en la Guía del usuario de Amazon EC2 para instancias Linux.

Crear el grupo de seguridad de NATSG

Defina el grupo de seguridad de NATSG según lo descrito en la siguiente tabla para permitir a su instancia NAT recibir tráfico vinculado a internet desde instancias de una subred privada, así como 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 recomendadas.

Entrada
Fuente 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).
Salida
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 de NATSG
  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Security Groups y, a continuación, elija Create Security Group.

  3. En el cuadro de diálogo Create Security Group, especifique NATSG como el nombre del grupo de seguridad y proporcione una descripción. Seleccione el ID de su VPC de la lista VPC y, a continuación, elija Yes, Create.

  4. Seleccione el grupo de seguridad NATSG que acaba de crear. El panel de detalles muestra información detallada del grupo de seguridad, además de pestañas que permiten usar las reglas entrantes y salientes.

  5. Añada reglas para el tráfico entrante utilizando la pestaña Inbound Rules, tal y como se indica a continuación:

    1. Elija Edit.

    2. Elija Add another rule y seleccione HTTP en la lista Type. En el campo Source, especifique el rango de direcciones IP de su subred privada.

    3. Elija Add another rule y seleccione HTTPS en la lista Type. En el campo Source, especifique el rango de direcciones IP de su subred privada.

    4. Elija Add another rule y seleccione SSH en la lista Type. En el campo Source, especifique el rango de direcciones IP públicas de su red.

    5. Seleccione Save

  6. Añada reglas para el tráfico saliente utilizando la pestaña Outbound Rules, tal y como se indica a continuación:

    1. Elija Edit.

    2. Elija Add another rule y seleccione HTTP en la lista Type. En el campo Destination (Destino), especifique 0.0.0.0/0

    3. Elija Add another rule y seleccione HTTPS en la lista Type. En el campo Destination, especifique 0.0.0.0/0

    4. Seleccione Save.

Para obtener más información, consulte Grupos de seguridad.

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.

Puede deshabilitar el atributo SrcDestCheck para una instancia NAT que se esté ejecutando o se haya detenido mediante la consola o la línea de comandos.

Para deshabilitar la comprobación de origen/destino mediante la consola
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, seleccione Instances (Instancias).

  3. Seleccione la instancia NAT, elija Actions (Acciones), Networking (Redes), Change source/destination check (Cambiar comprobación de origen/destino).

  4. Compruebe que se ha detenido la comprobación de origen/destino. De lo contrario, elija Stop (Detener).

  5. Seleccione Save.

  6. 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).

Para deshabilitar la comprobación de origen/destino mediante la línea de comandos

Puede utilizar uno de los siguientes comandos. Para obtener más información, consulte Trabajo con VPC de Amazon.

Actualizar la tabla de ruteo principal

La subred privada de su VPC no está asociada a una tabla de ruteo personalizada; por tanto, utiliza la tabla de ruteo principal. De forma predeterminada, la tabla de ruteo principal permite que las instancias de su VPC se comuniquen entre sí. Debe agregar una ruta que envíe el resto del tráfico de la subred a la instancia NAT.

Para actualizar la tabla de ruteo principal
  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Route Tables.

  3. Seleccione la tabla de enrutamiento principal para su VPC (la columna Main [Principal] mostrará Yes [Sí]). El panel de detalles muestra pestañas para trabajar con sus rutas, sus asociaciones y la propagación de rutas.

  4. En la pestaña Routes (Rutas), haga lo siguiente:

    1. Elija la pestaña Edit routes (Editar rutas) y, a continuación, Add routes (Agregar rutas).

    2. Especifique 0.0.0.0/0 para Destination (Destino) y el ID de instancia de la instancia NAT de Target (Objetivo).

    3. Elija Save changes.

  5. En la pestaña Subnet associations (Asociaciones de subred), elija Edit subnet associations (Editar asociaciones de subred). Seleccione la casilla de verificación de la subred privada y, a continuación, elija Save associations (Guardar asociaciones).

Para obtener más información, consulte Configurar tablas de enrutamiento.

Comprobar la configuración de su instancia NAT

Después de haber iniciado una instancia NAT y completado los pasos de configuración anteriores, puede realizar una prueba para comprobar si una instancia de su subred privada puede obtener acceso a internet a través de la instancia NAT utilizando la instancia NAT como servidor bastión. Para ello, actualice las reglas del grupo de seguridad de NATSG para que permitan el tráfico ICMP entrante y saliente y el tráfico SSH saliente, lance una instancia en su subred privada, configure el reenvío de agentes SSH para obtener acceso a las instancias de su subred privada, conéctese a su instancia y, a continuación, pruebe la conectividad a internet.

Para actualizar el grupo de seguridad de su instancia NAT
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, elija Security Groups.

  3. Seleccione la casilla de verificación del grupo de seguridad NATSG asociado a la instancia NAT.

  4. En la pestaña Inbound rules (Reglas de entrada), seleccione Edit inbound rules (Editar reglas de entrada).

  5. Seleccione Add rule (Agregar regla). Seleccione All ICMP IPv4 (Todos los ICMP IPv4) para Type (Tipo). Seleccione Custom (Personalizado) para Source (Fuente) y escriba el rango de direcciones IP de la subred privada (por ejemplo, 10.0.1.0/24). Seleccione Save rules (Guardar reglas).

  6. Seleccione Edit outbound rules (Editar reglas salientes) en la pestaña Outbound rules (Reglas salientes).

  7. Seleccione Add rule (Agregar regla). Seleccione SSH para Type (Tipo). Seleccione Custom (Personalizado) para Destination (Destino) y escriba el rango de direcciones IP de la subred privada (por ejemplo, 10.0.1.0/24).

  8. 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).

Para lanzar una instancia en su subred privada
  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, seleccione Instances (Instancias).

  3. Lance una instancia en su subred privada. Asegúrese de configurar las siguientes opciones en el asistente de lanzamiento y, a continuación, elija Launch:

    • En la página Choose an Amazon Machine Image (AMI), seleccione una AMI de Amazon Linux en la categoría Quick Start.

    • En la página Configure Instance Details, seleccione su subred privada de la lista Subnet y no asigne una dirección IP pública a su instancia.

    • En la página Configure Security Group, asegúrese de que su grupo de seguridad incluye una regla entrante que permita el acceso al SSH desde la dirección IP privada de su instancia NAT o desde el rango de direcciones IP de su subred pública, y asegúrese de tener una regla saliente que permita el tráfico ICMP saliente.

    • En el cuadro de diálogo Select an existing key pair or create a new key pair, seleccione el mismo par de claves que utilizó para lanzar la instancia NAT.

Para configurar el reenvío de agentes SSH para Linux u OS X
  1. Desde su equipo local, añada su clave privada al agente de autenticación.

    Para Linux, utilice el siguiente comando:

    ssh-add -c mykeypair.pem

    Para OS X, utilice el siguiente comando:

    ssh-add -K mykeypair.pem
  2. Conéctese a su instancia NAT utilizando la opción -A para habilitar el reenvío de agentes SSH; por ejemplo:

    ssh -A ec2-user@54.0.0.123
Para configurar el reenvío de agentes SSH para Windows (PuTTY)
  1. Descargue e instale Pageant desde la página de descargas de PuTTY, si aún no lo tiene instalado.

  2. Convierta su clave privada al formato .ppk. Para obtener más información, consulte Convertir la clave privada mediante PuTTYgen.

  3. Inicie Pageant, haga clic con el botón derecho en el icono de Pageant de la barra de tareas (puede estar oculto) y elija Add Key. Seleccione el archivo .ppk que ha creado, escriba la frase de contraseña si es necesario, y elija Open.

  4. Inicie una sesión de PuTTY para conectarse a su instancia NAT. En la categoría Auth asegúrese de seleccionar la opción Allow agent forwarding y deje el campo Private key file for authentication en blanco.

Para comprobar la conexión a Internet
  1. Compruebe que su instancia NAT puede conectarse a internet ejecutando el comando ping para un sitio web que tenga ICMP habilitado; por ejemplo:

    ping ietf.org
    PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=48 time=74.9 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=48 time=75.1 ms ...

    Pulse Ctrl+C en su teclado para cancelar el comando ping.

  2. Desde su instancia NAT, conéctese a su instancia en su subred privada utilizando su dirección IP privada. Por ejemplo:

    ssh ec2-user@10.0.1.123
  3. Desde su instancia privada, compruebe que puede conectarse a internet ejecutando el comando ping:

    ping ietf.org
    PING ietf.org (4.31.198.44) 56(84) bytes of data. 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=47 time=86.0 ms 64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=47 time=75.6 ms ...

    Pulse Ctrl+C en su teclado para cancelar el comando ping.

    En caso de error en el comando ping, compruebe la información siguiente:

    • Compruebe que las reglas de grupo de seguridad de su instancia NAT permiten el tráfico ICMP entrante desde su subred privada. En caso contrario, su instancia NAT no podrá recibir el comando ping desde su instancia privada.

    • Asegúrese de haber configurado las tablas de ruteo correctamente. Para obtener más información, consulte Actualizar la tabla de ruteo principal.

    • Asegúrese de haber deshabilitado la comprobación de origen/destino para su instancia NAT. Para obtener más información, consulte Deshabilitar las comprobaciones de origen/destino.

    • Asegúrese de estar haciendo ping a un sitio web que tiene ICMP habilitado. En caso contrario, no recibirá paquetes de respuesta. Para comprobar esto, ejecute el mismo comando ping desde el terminal de línea de comandos en su propio equipo.

  4. (Opcional) Termine su instancia privada si ya no la necesita. Para obtener más información, consulte Terminar la instancia en la Guía del usuario de Amazon EC2 para instancias de Linux.