> ## 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

> Gateways de Internet, NAT e somente de saída — o que cada um se conecta e por que criar um não move nenhum tráfego.

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

## Rotas usando um gateway

Abra um gateway de Internet, NAT ou somente de saída e selecione **Routing** para ver suas rotas, seus destinos e links para as tabelas de rotas proprietárias. O cartão **Routes** explica como as sub-redes usam esse gateway. Use **Load More** para resultados adicionais; uma leitura falhada mostra **Retry** em vez de uma lista vazia.

Liste as rotas que direcionam diretamente um gateway:

```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 resposta contém `routes` e paginação `meta`. Cada rota inclui um resumo `route_table` com `id`, `crn`, e `name`, ao lado de seu destino e campos de destino. Use `limit` para escolher o tamanho da página e passar `meta.marker` como `marker` enquanto `meta.has_more` é verdadeiro.

Essas coleções requerem acesso de leitura ao gateway e `network:ListRoutes` na tabela proprietária da rota. Rotas em tabelas que você não pode ler são omitidas antes da paginação. Consulte [permissões de rede](/pt/networking/permissions).

<a id="internet-gateways" />

## Gateways de internet

Um gateway é criado separadamente e anexado a uma VPC em uma chamada separada. Ambos os lados são um-para-um:

* Uma VPC pode ter no máximo um gateway anexado ("a VPC de destino já tem um gateway anexado").
* Um gateway pode ser anexado a no máximo uma VPC ("já anexado — desvincular primeiro").

A conexão conecta a VPC à rede externa da região. Ele **não** cria uma rota — você ainda adiciona `0.0.0.0/0` a cada tabela de rota que deve ser pública, o que permite que uma VPC mantenha sub-redes públicas e privadas lado a lado.

Detach recusa enquanto qualquer rota ainda tem como alvo o gateway, e delete recusa enquanto ele está anexado ou referenciado por uma rota. Reescreva as rotas primeiro.

<Note>
  No console, a regra de um por VPC aparece como um controle desabilitado em vez de um erro: **Attach** na página do gateway está esmaecida quando não há nada para anexar, e a caixa de diálogo diz "Cada VPC já tem um gateway da internet anexado".O botão **Detach** e a ação **Delete internet gateway** estão na mesma página e são recusados pelos motivos acima.
</Note>

<a id="nat-gateways" />

## Gateways NAT

Um gateway NAT dá acesso de saída IPv4 e IPv6 a sub-redes privadas sem torná-las acessíveis de fora.

<Tabs>
  <Tab title="Console">
    Vá para **Networking → NAT Gateways** e escolha **Create NAT Gateway**. Dê um **Name** em **NAT gateway details**, em seguida, escolha o **VPC** e **Subnet** em **Placement**. O resumo mostra **Public IP** como **Auto-allocated** — você não escolhe o endereço.
  </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>

As respostas do gateway NAT incorporam `subnet`, que inclui seu pai `vpc` e um resumo de tabela de rotas nulo. Leia o nome da sub-rede de `subnet.name` e o nome da VPC de `subnet.vpc.name`; use seus campos `id` para links. Os antigos campos de resposta de nível superior `subnet_id` e `vpc_id` são removidos. Criar um gateway ainda leva `subnet` como uma referência de cadeia de caracteres.

Há **um por VPC** — um segundo é recusado com "a VPC de destino já tem um gateway NAT" — e a VPC precisa de um gateway de Internet conectado primeiro, porque o gateway NAT reutiliza esse uplink. Sem um, a criação falha com "a VPC de destino não tem um gateway de internet conectado - conecte um primeiro".

<ResponseField name="public_ipv4" type="string, stable">
  Alocado a partir do pool público regional e fixo para a vida útil do gateway. Esse é o endereço do qual o tráfego de saída aparece, portanto, é o que você dá a um terceiro para permitir.
</ResponseField>

<ResponseField name="public_ipv6" type="string, optional, stable">
  Alocado a partir do pool público regional quando a sub-rede de hospedagem tem IPv6. Um gateway criado em uma sub-rede de pilha dupla recebe-o imediatamente. A ativação do IPv6 na sub-rede de hospedagem atribui-o posteriormente a um gateway existente, mesmo sem uma rota IPv6. Ele permanece fixo até a exclusão do gateway.
</ResponseField>

<Warning>
  **Criar um gateway NAT não traduz nada.** As sub-redes que ele serve seguem das tabelas de rotas que apontam para ele. Adicione `0.0.0.0/0 → target_nat_gateway` para IPv4 e `::/0 → target_nat_gateway` para IPv6 para a tabela de rotas de sub-redes privadas. Cada família começa a usar NAT quando sua rota existe. No console que é **Add Route** nessa tabela com **Target type** definido como **NAT Gateway**.
</Warning>

Cada endereço público usa a mesma cota que um IP flutuante dessa família. O NAT IPv6 traduz endereços de sub-rede ULA ou globais para o IPv6 público compartilhado do gateway. As VMs não precisam de IPs flutuantes individuais e seus endereços de convidado permanecem inalterados. Uma rota NAT IPv4 sozinha não habilita a tradução IPv6.

Use rotas padrão para NAT compartilhado. A mistura de uma rota NAT mais específica com uma rota de gateway de internet direta na mesma tabela ainda não é suportada: outro tráfego dessa sub-rede também pode ser traduzido.

O nome, a localização da sub-rede e os endereços públicos atribuídos são imutáveis. A sub-rede de hospedagem não pode ser excluída enquanto o gateway existir e o gateway não pode ser excluído enquanto uma rota fizer referência a ele.

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

## Gateways somente de saída: o caso do IPv6

Uma NIC com um endereço IPv6 global nativo pode alcançar a Internet diretamente. Um gateway somente de saída permite conexões de saída e suas respostas, bloqueando conexões iniciadas pela Internet. Ele não executa tradução de endereços, portanto, não pode dar acesso à Internet a endereços ULA. Use um gateway NAT compartilhado para saída de ULA sem um IP flutuante em cada VM. Os IPs flutuantes IPv6 fornecem um mapeamento separado quando uma VM precisa de uma identidade pública estável.

<Tabs>
  <Tab title="Console">
    Vá para **Networking → Egress-Only Gateways** e escolha **Create
    Egress-Only Gateway**. Dê um **Name** e, em seguida, escolha o **VPC** — o seletor lista apenas VPCs que podem conter um, então uma VPC sem um CIDR IPv6 ou uma que já tenha um gateway simplesmente não está lá e a página diz qual dos dois é.

    A aba **Routing** do gateway é onde você verifica seu trabalho: ela lista todas as rotas que apontam para esse gateway, e fica vazia até que uma seja feita.
  </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>

As respostas de gateway somente de saída incorporam seu `vpc` completo em vez de retornar `vpc_id`. Use `vpc.id`, `vpc.name` e `vpc.cidr_ipv6` diretamente. A criação ainda leva uma referência de string `vpc`. Em Go, os campos de resposta correspondentes são `nat.Subnet.VPC` e `g.VPC`; campos de solicitação permanecem strings.

Um por VPC, e a VPC deve ter um CIDR IPv6 ("a VPC de destino não tem CIDR IPv6 — um gateway somente de saída roteia somente v6").

Ele não possui endereço e não faz nada por conta própria. Torna-se eficaz quando uma tabela de rotas aponta `::/0` para ele. As sub-redes nessa tabela recebem IPv6 de saída e as respostas para suas próprias conexões, enquanto as conexões iniciadas pela internet são descartadas.

O requisito de gateway de internet é aplicado nessa rota, não na criação: um gateway somente de saída usa o gateway de internet da VPC para seu uplink, portanto, a rota `::/0` é recusada com "o gateway somente de saída requer um gateway de internet anexado à sua VPC" se não houver nenhum.

<Warning>
  Essa queda de entrada é imposta pela plataforma e **não** é algo que seus grupos de segurança podem abrir. Se você quiser que o IPv6 de entrada seja regido por suas próprias regras, roteie `::/0` no gateway da internet.
</Warning>

Excluir recusa enquanto uma rota ainda faz referência a ela.

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

### A alcançabilidade do IPv6 é a rota, não o endereço

| `::/0` rota na tabela da sub-rede | O que o IPv6 da sub-rede faz |
| - | - |
| Nenhum | Nenhum caminho de internet padrão; o roteamento local da VPC ainda funciona. |
| → gateway de internet | O IPv6 global nativo funciona em ambos os sentidos, sujeito a grupos de segurança. ULA precisa de um IPv6 público FIP. |
| → gateway somente de saída | IPv6 global nativo de saída e respostas somente. Não torna a ULA globalmente roteável. |
| → Gateway de NAT | Tradução de saída compartilhada para ULA ou IPv6 global, usando o IPv6 público do gateway. |

<Note>
  Adicionar, alterar ou remover essa rota inverte a postura de **todas as instâncias já em execução** nessa tabela de rotas, não apenas as criadas posteriormente.
</Note>


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