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

# Interfaces

> Uma NIC com sua própria identidade — o que ela mantém em um detach, e onde o apego realmente acontece.

Uma interface é uma NIC com um MAC, um array de `addresses`, e seu próprio [security-group membership](/pt/networking/security-groups).

<Tabs>
  <Tab title="Console">
    Vá para **Networking → Interfaces** e escolha **Create Interface**. Em **Interface**, escolha o **VPC** e **Subnet** e dê-lhe um **Name**. Deixe **IP Address** e **MAC Address** em **Addressing** em branco para que sejam atribuídos.

    Uma nova interface não pertence a nenhum grupo de segurança, o que significa que ela descarta tudo. Anexe um da própria página da interface antes de esperar tráfego — veja [security groups](/pt/networking/security-groups).
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST /v1/interfaces
    { "subnet": "7a1c9d3e-2f5b-4c8a-9e6d-3b2a1c4f5e8d", "name": "web-eth0" }
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic network interface create --subnet <subnet-id> --name web-eth0
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    ifc, err := network.New(cfg).CreateInterface(ctx, &network.InterfaceCreateRequest{
        Subnet: subnetID,
        Name:     "web-eth0",
    })
    ```
  </Tab>
</Tabs>

As respostas de interface incorporam `subnet`, incluindo sua VPC e o resumo da tabela de rotas nuláveis. Leia `subnet.id` e `subnet.name` para a sub-rede e `subnet.vpc.id` e `subnet.vpc.name` para sua VPC. Os antigos campos de resposta `subnet_id` e `vpc_id` não são mais retornados. No Go SDK estes são `ifc.Subnet` e `ifc.Subnet.VPC`.

A criação ainda leva uma referência de string `subnet`, não um objeto de sub-rede. Use o ID da sub-rede incorporada ao copiar o posicionamento em uma nova solicitação. Veja [subnet placement](/pt/networking/subnets#reading-placement) para lidar com um resumo de tabela de rotas nulo.

A plataforma atribui endereços e `mac` quando omitido. `name` é único por sub-rede; os endereços não podem sobrepor outra alocação na sub-rede. Subnet e MAC são imutáveis. Patch `description` e `tags` na interface, e gerenciar endereços através de sua coleção `/addresses`.

<a id="choosing-an-address-at-creation" />

## Escolhendo um endereço na criação

Deixe `ipv4` e `ipv6` desativados para alocação automática. Para escolher uma alocação IPv6, envie seu primeiro endereço em `ipv6`, sem comprimento de prefixo. Deve ser o primeiro `/128` em um `/96` dentro da sub-rede selecionada `/64`; seus últimos 32 bits devem ser zero. Por exemplo, `2001:db8:1234:1:abcd:1234::` seleciona `2001:db8:1234:1:abcd:1234::/96`. O primeiro e o último slots `/96` na sub-rede são reservados e uma alocação já em uso é rejeitada.

O mesmo campo `ipv6` está disponível em cada entrada `networks` quando [launching an instance](/pt/compute/instances). O console corrige o prefixo da sub-rede e permite que você escolha o slot `/96` restante. Deixar essa entrada em branco mantém a alocação automática. Alterar a sub-rede limpa uma seleção explícita.

<a id="reading-addresses" />

## Leitura de endereços

A tabela de interfaces mostra **IPv4 privado**, **IPv4 público** e **IPv6**, usando o endereço primário em cada família. Um IP flutuante IPv6 anexado tem precedência sobre o endereço IPv6 diretamente anexado. Abra a guia **Addresses** de uma interface para a tabela de endereços completa, incluindo prefixos, funções primárias ou secundárias e IPs flutuantes anexados.

Cada endereço diretamente anexado tem um array estável de `id`, `family`, `address`, `prefix`, `primary` e `floating_ips`. Os IDs de endereço identificam filhos da interface; eles não têm CRNs separados. Os resumos de IP flutuante incluem `id` e `crn` porque os IPs flutuantes são recursos gerenciados de forma independente.

```json theme={null}
{
  "addresses": [
    {
      "id": "b597657e-c9c2-49f4-bd8f-5d533d1093df",
      "family": "ipv4",
      "address": "10.0.1.10",
      "prefix": "10.0.1.10/32",
      "primary": true,
      "floating_ips": [
        {
          "id": "b2fabf44-11f0-44f7-bb0f-97b6c3744d64",
          "crn": "crn:network:sa-saopaulo-1:my-account:floating-ip/b2fabf44-11f0-44f7-bb0f-97b6c3744d64",
          "visibility": "public",
          "address": "198.51.100.10"
        }
      ]
    },
    {
      "id": "473a3497-9de6-4418-81bd-ad8d37f09f70",
      "family": "ipv6",
      "address": "2001:db8:1234:1:abcd:1234::",
      "prefix": "2001:db8:1234:1:abcd:1234::/96",
      "primary": true,
      "floating_ips": []
    }
  ]
}
```

O IPv4 `/32` identifica o endereço de propriedade; não é a máscara de sub-rede do convidado. O IPv6 reserva um `/96` para a NIC e fornece seu primeiro `/128` através do DHCPv6. O resto desse `/96` é roteado para a mesma NIC. A configuração de endereços extras dentro dele é de responsabilidade do convidado. O limite inicial é uma entrada de endereço IPv4 e uma entrada de endereço IPv6 por NIC; a matriz não implica suporte a endereços secundários.

Os IPs flutuantes traduzem para o endereço diretamente anexado correspondente. Eles não são configurados dentro do convidado. Cada família pode ter um FIP público e um privado anexado. Não existe um endereço IPv4 público comum separado.

As instâncias não retornam campos de resumo de IP. Leia a coleção de NICs e depois `addresses`, incluindo cada entrada de `floating_ips`.

<a id="adding-ipv6-later" />

## Adicionando IPv6 mais tarde

Habilite o IPv6 na VPC e, em seguida, na sub-rede. Cada interface existente nessa sub-rede recebe IPv6 automaticamente e cada nova interface herda todas as famílias habilitadas da sub-rede. Os endereços IPv4 e os IDs de endereço existentes permanecem inalterados. O console fornece **Enable IPv6** em páginas de detalhes de VPC e sub-rede.

Leia as alocações com `GET /v1/interfaces/{interface_id}/addresses`. A coleção de endereços também expõe operações de criação e exclusão, mas o limite atual é de um endereço primário por família habilitada. Adicionar outro endereço retorna um conflito de capacidade. Remover qualquer endereço primário necessário retorna `409`. Veja [ativando sub-rede IPv6](/pt/networking/subnets#enabling-ipv6-later) para opções de roteamento e grupo de segurança.

Não é necessário um agente convidado. O sistema operacional convidado deve executar o DHCPv6; um convidado existente pode precisar que sua configuração de rede seja renovada ou reiniciada após o IPv6 ser habilitado. O DHCPv6 não garante que todos os convidados reajam imediatamente a uma família recém-disponível.

Uma interface existe por si só. Não é um filho de uma instância, e mantém seu endereço, seu MAC e seus grupos de segurança, quer algo esteja ou não usando-o atualmente.

<a id="attaching-an-interface-to-an-instance" />

## Anexar uma interface a uma instância

O anexo acontece no lado [compute](/pt/compute), não aqui:

<Tabs>
  <Tab title="Console">
    Abra a instância em **Compute → Instances** e escolha **Attach NIC**. Selecione uma interface autônoma em **Interface**. Ele mantém seu endereço, MAC e grupos de segurança. Use a ação create do seletor para criar uma interface primeiro, se necessário, e depois retorne e selecione-a.

    Confirme com **Attach interface**. A guia **Networking** da instância lista o que está anexado.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST /v1/instances/{instance_id}/nics
    { "interface": "7a1c9d3e-2f5b-4c8a-9e6d-3b2a1c4f5e8d" }
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic compute instance attach-nic <instance-id> \
      --interface <interface-id>
    ```

    A interface já deve existir; o anexo não provisiona uma NIC.
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    nic, err := compute.New(cfg).AttachInstanceNIC(ctx, instanceID,
        &compute.AttachInstanceNICRequest{
            Interface: interfaceID,
        })
    ```

    O anexo reside no cliente de computação, não na rede — a vinculação pertence à instância.
  </Tab>
</Tabs>

Uma interface que você criou traz seu próprio endereço, MAC e grupos de segurança, então as substituições por NIC nessa chamada são rejeitadas em vez de silenciosamente ignoradas. O endpoint de anexo toma uma interface existente. Crie um primeiro quando necessário.

A diferença aparece ao desacoplar:

<Tabs>
  <Tab title="Interface que você criou">
    Separando-o retorna para standalone. A interface, seu endereço e sua associação ao grupo de segurança sobrevivem, prontos para serem anexados em outro lugar.
  </Tab>

  <Tab title="NIC compute provisioned">
    O desapego a despedaça. A computação destrói as placas de rede que criou; o endereço volta para a sub-rede.
  </Tab>
</Tabs>

<Warning>
  `DELETE /v1/interfaces/{interface_id}` recusa enquanto uma instância ou um IP flutuante mantém a interface. Desconecte-o da instância e desligue qualquer IP flutuante antes de excluí-lo. As instâncias interrompidas ainda mantêm suas interfaces.
</Warning>

<Note>
  O campo `attached_to` contém o UUID da instância proprietária, ou nulo quando nenhuma instância possui a interface. Ela reflete a vinculação de NIC da instância, inclusive enquanto a instância estiver parada. O anexo IP flutuante é separado.
</Note>


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