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

> Una NIC con su propia identidad: lo que mantiene a través de un desprendimiento y dónde ocurre realmente el apego.

Una interfaz es una NIC con un MAC, una matriz de `addresses`, y su propia [membresía de grupo de seguridad](/es/networking/security-groups).

<Tabs>
  <Tab title="Console">
    Vaya a **Networking → Interfaces** y elija **Create Interface**. En **Interface**, seleccione el **VPC** y **Subnet** y déle un **Name**. Deje **IP Address** y **MAC Address** en **Addressing** en blanco para que se les asigne.

    Una nueva interfaz no pertenece a ningún grupo de seguridad, lo que significa que se elimina todo. Adjunte uno desde la propia página de la interfaz antes de esperar tráfico — vea [security groups](/es/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>

Las respuestas de interfaz incrustan `subnet`, incluyendo su VPC y el resumen de tabla de rutas nullable. Lee `subnet.id` y `subnet.name` para la subred, y `subnet.vpc.id` y `subnet.vpc.name` para su VPC. Los antiguos campos de respuesta `subnet_id` y `vpc_id` ya no se devuelven. En el SDK de Go estos son `ifc.Subnet` y `ifc.Subnet.VPC`.

La creación todavía toma una referencia de cadena `subnet`, no un objeto de subred. Usa el ID de la subred incrustada al copiar la ubicación en una nueva solicitud. Vea [subnet placement](/es/networking/subnets#reading-placement) para manejar un resumen de tabla de rutas nulo.

La plataforma asigna direcciones y `mac` cuando se omite. `name` es único por subred; las direcciones no pueden superponerse a otra asignación en la subred. La subred y el MAC son inmutables. Parche `description` y `tags` en la interfaz, y gestionar las direcciones a través de su colección `/addresses`.

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

## Elegir una dirección en la creación

Deje `ipv4` y `ipv6` sin establecer para la asignación automática. Para elegir una asignación IPv6, envíe su primera dirección en `ipv6`, sin longitud de prefijo. Debe ser el primer `/128` en un `/96` dentro de la subred seleccionada `/64`; sus últimos 32 bits deben ser cero. Por ejemplo, `2001:db8:1234:1:abcd:1234::` selecciona `2001:db8:1234:1:abcd:1234::/96`. Se reservan la primera y la última ranura `/96` de la subred y se rechaza una asignación que ya está en uso.

El mismo `ipv6` El campo está disponible en cada `networks` entrada cuando
[Lanzamiento de una instancia](/es/compute/instances). La consola fija el prefijo de subred y le permite elegir el resto de `/96` Si deja esa entrada en blanco, la asignación se mantendrá automática. Cambiar la subred borrará una selección explícita.

<a id="reading-addresses" />

## Lectura de direcciones

La tabla de interfaces muestra **IPv4 privado**, **IPv4 público** y **IPv6**, utilizando la dirección principal de cada familia. Una IP flotante IPv6 adjunta tiene prioridad sobre la dirección IPv6 directamente adjunta. Abra la pestaña **Direcciones** de una interfaz para ver la tabla de direcciones completa, incluidos los prefijos, los roles primarios o secundarios y las IP flotantes adjuntas.

Cada dirección directamente adjunta tiene un array estable de `id`, `family`, `address`, `prefix`, `primary` y `floating_ips`. Los ID de dirección identifican a los hijos de la interfaz; no tienen CRN separados. Los resúmenes de IP flotantes incluyen tanto `id` como `crn` porque las IP flotantes son recursos administrados de forma independiente.

```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": []
    }
  ]
}
```

El IPv4 `/32` identifica la dirección de propiedad; no es la máscara de subred del invitado. IPv6 reserva un `/96` para la NIC y suministra su primer `/128` a través de DHCPv6. El resto de ese `/96` se enruta a la misma NIC. La configuración de direcciones adicionales dentro de él es responsabilidad del invitado. El límite inicial es una entrada de dirección IPv4 y una entrada de dirección IPv6 por NIC; la matriz no implica compatibilidad con direcciones secundarias.

Las IP flotantes se traducen a la dirección directamente adjunta correspondiente. No se configuran dentro del huésped. Cada familia puede tener un FIP público y uno privado adjunto. No existe una dirección IPv4 pública ordinaria separada.

Las instancias no devuelven campos de resumen de IP. Lee su colección de NIC y luego `addresses`, incluyendo `floating_ips` de cada entrada.

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

## Agregar IPv6 más tarde

Habilite IPv6 en la VPC y, a continuación, en la subred. Cada interfaz existente en esa subred recibe IPv6 automáticamente, y cada interfaz nueva hereda todas las familias habilitadas de la subred. Las direcciones IPv4 y los ID de dirección existentes no cambian. La consola proporciona **Enable IPv6** en las páginas de detalles de VPC y subred.

Lee las asignaciones con `GET /v1/interfaces/{interface_id}/addresses`. La colección de direcciones también expone las operaciones de creación y eliminación, pero el límite actual es una dirección principal por familia habilitada. Agregar otra dirección devuelve un conflicto de capacidad. Eliminar cualquiera de las direcciones primarias requeridas devuelve `409`. Consulte [habilitar subred IPv6](/es/networking/subnets#enabling-ipv6-later) para obtener más información sobre las opciones de enrutamiento y de grupo de seguridad.

No se requiere un agente invitado. El sistema operativo invitado debe ejecutar DHCPv6; un invitado existente puede necesitar que se renueve o reinicie su configuración de red después de habilitar IPv6. DHCPv6 no garantiza que todos los invitados reaccionen inmediatamente a una familia nuevamente disponible.

Una interfaz existe por sí misma. No es un hijo de una instancia, y mantiene su dirección, su MAC y sus grupos de seguridad, independientemente de si algo lo está usando actualmente.

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

## Adjuntar una interfaz a una instancia

El adjunto ocurre en el lado [compute](/es/compute), no aquí:

<Tabs>
  <Tab title="Console">
    Abra la instancia en **Compute → Instances** y elija **Attach NIC**. Seleccione una interfaz independiente en **Interface**. Mantiene su dirección, MAC y grupos de seguridad. Utilice la acción create del selector para crear una interfaz primero si es necesario, luego regrese y selecciónela.

    Confirme con **Attach interface**. La pestaña **Networking** de la instancia muestra lo que está conectado.
  </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>
    ```

    La interfaz ya debe existir; la conexión no aprovisiona una NIC.
  </Tab>

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

    El adjunto reside en el cliente de cómputo, no en la red: el enlace pertenece a la instancia.
  </Tab>
</Tabs>

Una interfaz que usted ha creado trae su propia dirección, MAC y grupos de seguridad, por lo que las anulaciones por NIC en esa llamada son rechazadas en lugar de ignorarse silenciosamente. El punto final de conexión toma una interfaz existente. Crea uno primero cuando sea necesario.

La diferencia se muestra al desacoplar:

<Tabs>
  <Tab title="Interfaz que creaste">
    Al desconectarlo vuelve a ser independiente. La interfaz, su dirección y su pertenencia a un grupo de seguridad sobreviven, listas para conectarse en otro lugar.
  </Tab>

  <Tab title="NIC compute provisional">
    El desprenderse lo desgarra. Compute destruye las NIC que creó; la dirección se devuelve a la subred.
  </Tab>
</Tabs>

<Warning>
  `DELETE /v1/interfaces/{interface_id}` se niega mientras una instancia o una IP flotante mantiene la interfaz. Desconecte la instancia y desconecte cualquier IP flotante antes de eliminarla. Las instancias detenidas aún conservan sus interfaces.
</Warning>

<Note>
  El campo `attached_to` contiene el UUID de la instancia propietaria, o nulo cuando ninguna instancia posee la interfaz. Refleja la vinculación de la NIC de la instancia, incluso cuando la instancia está detenida. El accesorio IP flotante está separado.
</Note>


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