> ## Documentation Index
> Fetch the complete documentation index at: https://docs.basaltic.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Gateways

> Internet, NAT y puertas de enlace de solo salida: a qué se conecta cada una y por qué crear una no mueve tráfico.

<a id="routes-using-a-gateway" />

## Rutas que utilizan una puerta de enlace

Abra una puerta de enlace de Internet, NAT o de salida únicamente y seleccione **Routing** para ver sus rutas, sus destinos y los enlaces a las tablas de rutas propietarias. La tarjeta **Rutas** explica cómo las subredes usan esa puerta de enlace. Use **Cargar más** para obtener resultados adicionales; una lectura fallida muestra **Reintentar** en lugar de una lista vacía.

Enumera las rutas que apuntan directamente a una puerta de enlace:

```http theme={null}
GET /v1/internet-gateways/{internet_gateway_id}/routes
GET /v1/nat-gateways/{nat_gateway_id}/routes
GET /v1/egress-only-gateways/{egress_only_gateway_id}/routes
```

Cada respuesta contiene `routes` y paginación `meta`. Cada ruta incluye un resumen `route_table` con `id`, `crn`, y `name`, junto con su destino y los campos de destino. Use `limit` para elegir el tamaño de la página y pase `meta.marker` como `marker` mientras `meta.has_more` es verdadero.

Estas colecciones requieren acceso de lectura a la puerta de enlace y `network:ListRoutes` en la tabla propietaria de la ruta. Las rutas en tablas que no se pueden leer se omiten antes de la paginación. Consulte [permisos de red](/es/networking/permissions).

<a id="internet-gateways" />

## Gateways de internet

Una puerta de enlace se crea de forma independiente y se adjunta a una VPC en una llamada independiente. Ambos lados son uno a uno:

* Una VPC puede tener como máximo una puerta de enlace adjunta ("la VPC de destino ya tiene una puerta de enlace adjunta").
* Una puerta de enlace puede estar conectada a un máximo de una VPC ("ya conectado - desconectar primero").

Al conectar, se conecta la VPC a la red externa de la región. **No** crea una ruta: aún agregas `0.0.0.0/0` a cada tabla de rutas que debería ser pública, lo que permite que una VPC mantenga subredes públicas y privadas juntas.

Desconectar rechaza mientras cualquier ruta todavía apunta a la puerta de enlace, y eliminar rechaza mientras está adjunta o referenciada por una ruta. Reescribe las rutas primero.

<Note>
  En la consola, la regla de uno por VPC aparece como un control deshabilitado en lugar de un error: **Attach** en la página de la puerta de enlace está atenuada cuando no queda nada a lo que adjuntar, y el diálogo dice "Cada VPC ya tiene una puerta de enlace de Internet adjunta" El botón **Detach** y la acción **Eliminar puerta de enlace de Internet** se encuentran en la misma página y se rechazan por las razones anteriores.
</Note>

<a id="nat-gateways" />

## Gateways NAT

Una puerta de enlace NAT proporciona a las subredes privadas IPv4 e IPv6 acceso saliente sin que sean accesibles desde el exterior.

<Tabs>
  <Tab title="Console">
    Vaya a **Networking → NAT Gateways** y elija **Create NAT Gateway**. Dale un **Name** bajo **NAT gateway details**, luego elige el **VPC** y **Subnet** bajo **Placement**. El resumen muestra **Public IP** como **Auto-allocated** — usted no elige la dirección.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST /v1/nat-gateways
    { "name": "main", "subnet": "<subnet>" }
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic network nat-gateway create --name main --subnet <subnet-id>
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    nat, err := network.New(cfg).CreateNATGateway(ctx, &network.NATGatewayCreateRequest{
        Name:     "main",
        Subnet: subnetID,
    })
    ```
  </Tab>
</Tabs>

Las respuestas de la puerta de enlace NAT incrustan `subnet`, que incluye su `vpc` padre y un resumen de tabla de rutas nullable. Lee el nombre de la subred de `subnet.name` y el nombre de la VPC de `subnet.vpc.name`; utiliza sus campos `id` para enlaces. Los antiguos campos de respuesta de nivel superior `subnet_id` y `vpc_id` se eliminan. La creación de una puerta de enlace todavía toma `subnet` como una referencia de cadena.

Hay **uno por VPC**, un segundo se rechaza con "la VPC de destino ya tiene una puerta de enlace NAT" y la VPC necesita una puerta de enlace de Internet conectada primero, porque la puerta de enlace NAT reutiliza ese enlace ascendente. Sin uno, la creación falla con "la VPC de destino no tiene una puerta de enlace de Internet conectada; primero conéctela".

<ResponseField name="public_ipv4" type="string, stable">
  Se asigna desde el grupo público regional y se fija durante la vida útil de la puerta de enlace. Esta es la dirección desde la que aparece el tráfico saliente, por lo que es la que le das a un tercero para que permita la lista.
</ResponseField>

<ResponseField name="public_ipv6" type="string, optional, stable">
  Se asigna desde el grupo público regional cuando la subred de alojamiento tiene IPv6. Una puerta de enlace creada en una subred de pila doble la recibe inmediatamente. Habilitar IPv6 en la subred de alojamiento la asigna más tarde a una puerta de enlace existente, incluso sin una ruta IPv6. Se mantiene fijo hasta la eliminación de la puerta de enlace.
</ResponseField>

<Warning>
  **Crear una puerta de enlace NAT no traduce nada.** Las subredes a las que sirve se deducen de las tablas de rutas que apuntan a ella. Añada `0.0.0.0/0 → target_nat_gateway` para IPv4 y `::/0 → target_nat_gateway` para IPv6 a la tabla de rutas de subredes privadas. Cada familia comienza a usar NAT cuando existe su ruta. En la consola que es **Add Route** en esa tabla con **Target type** establecido en **NAT Gateway**.
</Warning>

Cada dirección pública utiliza la misma cuota que una IP flotante de esa familia. La NAT IPv6 traduce las direcciones de subred global o ULA a la IPv6 pública compartida de la puerta de enlace. Las máquinas virtuales no necesitan IP flotantes individuales y sus direcciones de invitado permanecen sin cambios. Una ruta NAT IPv4 por sí sola no habilita la traducción IPv6.

Usar rutas predeterminadas para NAT compartido. La mezcla de una ruta NAT más específica con una ruta de puerta de enlace de Internet directa en la misma tabla aún no está soportada: otro tráfico de esa subred también puede ser traducido.

El nombre, la ubicación de subred y las direcciones públicas asignadas son inmutables. La subred de alojamiento no se puede eliminar mientras existe la puerta de enlace, y la puerta de enlace no se puede eliminar mientras una ruta hace referencia a ella.

<a id="egress-only-gateways-the-ipv6-case" />

## Pasarela de salida única: el caso IPv6

Una NIC con una dirección IPv6 global nativa puede llegar a Internet directamente. Una puerta de enlace de solo salida permite conexiones salientes y sus respuestas mientras bloquea las conexiones iniciadas por Internet. No realiza traducción de direcciones, por lo que no puede dar acceso a Internet a las direcciones ULA. Utilice una puerta de enlace NAT compartida para la salida de ULA sin una IP flotante en cada máquina virtual. Las IP flotantes IPv6 proporcionan una asignación separada cuando una máquina virtual necesita una identidad pública estable.

<Tabs>
  <Tab title="Console">
    Vaya a **Networking → Egress-Only Gateways** y elija **Create
    Egress-Only Gateway**. Dale un **Name**, luego elige el **VPC**: el selector solo muestra las VPC que pueden tener uno, por lo que una VPC sin un CIDR IPv6 o una que ya tiene una puerta de enlace simplemente no está allí y la página dice cuál de los dos es.

    La pestaña **Routing** de la puerta de enlace es donde se verifica el trabajo: enumera todas las rutas que apuntan a esta puerta de enlace, y está vacía hasta que uno lo hace.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST /v1/egress-only-gateways
    { "name": "main", "vpc": "<vpc>" }
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic network egress-only-gateway create --name main --vpc <vpc-id>
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    g, err := network.New(cfg).CreateEgressOnlyGateway(ctx,
        &network.EgressOnlyGatewayCreateRequest{
            Name:  "main",
            VPC: vpcID,
        })
    ```
  </Tab>
</Tabs>

Las respuestas de puerta de enlace de salida solo incrustan su `vpc` completo en lugar de devolver `vpc_id`. Utilice `vpc.id`, `vpc.name` y `vpc.cidr_ipv6` directamente. La creación todavía toma una referencia de cadena `vpc`. En Go, los campos de respuesta correspondientes son `nat.Subnet.VPC` y `g.VPC`; los campos de solicitud siguen siendo cadenas.

Una por VPC, y la VPC debe tener un CIDR IPv6 ("la VPC de destino no tiene CIDR IPv6: una puerta de enlace solo de salida solo enruta v6").

No posee ninguna dirección y no hace nada por sí mismo. Se hace efectivo cuando una tabla de rutas apunta `::/0` a ella. Las subredes de esa tabla reciben IPv6 saliente y las respuestas a sus propias conexiones, mientras que las conexiones que inicia Internet se descartan.

El requisito de puerta de enlace de Internet se aplica a esa ruta, no a la creación: una puerta de enlace solo de salida utiliza la puerta de enlace de Internet de la VPC para su enlace ascendente, por lo que la ruta `::/0` se rechaza con "la puerta de enlace solo de salida requiere una puerta de enlace de Internet conectada a su VPC" si no hay ninguna.

<Warning>
  Ese drop entrante es impuesto por la plataforma y **no** es algo que sus grupos de seguridad puedan abrir. Si desea que la IPv6 entrante se rija por sus propias reglas, envíe `::/0` en la puerta de enlace de Internet.
</Warning>

Eliminar rechaza mientras una ruta todavía hace referencia a ella.

<a id="ipv6-reachability-is-the-route-not-the-address" />

### La accesibilidad IPv6 es la ruta, no la dirección

| `::/0` ruta en la tabla de la subred | Qué hace la IPv6 de la subred |
| - | - |
| Ninguna | No hay ruta de Internet predeterminada; el enrutamiento local de VPC sigue funcionando. |
| → pasarela de internet | IPv6 global nativo funciona en ambas direcciones, sujeto a grupos de seguridad. ULA necesita un FIP IPv6 público. |
| → Puerta de enlace de salida única | IPv6 global nativo solo para salidas y respuestas. No hace que ULA sea enrutable globalmente. |
| → Puerta de enlace NAT | Traducción saliente compartida para ULA o IPv6 global, utilizando la IPv6 pública de la puerta de enlace. |

<Note>
  Agregar, cambiar o eliminar esa ruta invierte la postura de **cada instancia que ya se está ejecutando** en esa tabla de rutas, no solo las creadas posteriormente.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.