Presentamos PostScale -- API de correo para envíos transaccionales, recepción y direcciones enmascaradas. PostScale

    Qué es un registro SVCB

    Aprende cómo los registros SVCB permiten el service binding y descubrimiento para cualquier protocolo. Incluye ejemplos para el panel de DNScale y la API.

    Un registro SVCB (Service Binding) es un tipo de registro DNS de propósito general que proporciona parámetros de conexión para cualquier servicio. Permite a los clientes descubrir endpoints de servicio junto con su configuración — versiones de protocolo, puertos e indicaciones de IP — en una sola consulta DNS.

    Cómo funcionan los registros SVCB

    Los registros SVCB proporcionan un marco flexible para el descubrimiento de servicios:

    _myservice._tcp.example.com.    3600    SVCB    1 . alpn="myproto" port=8080

    Esto indica a los clientes: "Para conectar con myservice sobre TCP, usa el protocolo 'myproto' en el puerto 8080."

    SVCB vs registros HTTPS

    RegistroPropósitoCaso de uso
    HTTPSService binding para HTTPSServidores web, APIs
    SVCBService binding para cualquier protocoloProtocolos personalizados, servicios no HTTP

    Los registros HTTPS son esencialmente registros SVCB con un esquema predefinido (https). El formato del registro es idéntico.

    Componentes del registro

    Prioridad

    • 0 = Modo alias (redirigir a otro nombre)
    • 1-65535 = Modo servicio (proporcionar parámetros de conexión)

    Destino

    • . = Usar el nombre de la consulta
    • nombre de host = Usar un host diferente

    Parámetros de servicio (SvcParams)

    ParámetroDescripciónEjemplo
    alpnProtocolos de aplicaciónmyproto
    portPuerto del servicio8080
    ipv4hintIndicaciones de dirección IPv4192.0.2.1
    ipv6hintIndicaciones de dirección IPv62001:db8::1
    no-default-alpnSin protocolo por defecto(indicador)
    mandatoryParámetros requeridos(lista)

    Casos de uso comunes

    Protocolo de aplicación personalizado

    _myapp._tcp.example.com.    3600    SVCB    1 . alpn="myproto/1.0" port=9000

    DoH (DNS over HTTPS)

    _dns.example.com.    3600    SVCB    1 . alpn="h2" port=443 dohpath="/dns-query"

    DoT (DNS over TLS)

    _dns.example.com.    3600    SVCB    1 . alpn="dot" port=853

    Servicio WebSocket

    _websocket._tcp.example.com.    3600    SVCB    1 ws.example.com. alpn="h2,h3" port=443

    Servicio con múltiples endpoints

    _api._tcp.example.com.    3600    SVCB    1 api1.example.com. port=443
    _api._tcp.example.com.    3600    SVCB    2 api2.example.com. port=443
    _api._tcp.example.com.    3600    SVCB    3 backup.example.com. port=8443

    Modo alias (CNAME de servicio)

    _service._tcp.example.com.    3600    SVCB    0 _service._tcp.provider.com.

    Formato del registro

    CampoDescripciónEjemplo
    NombreNombre del servicio_service._tcp.domain
    TipoTipo de registroSVCB
    PrioridadPrioridad del servicio1
    DestinoNombre de host destino. o nombre de host
    ParámetrosParámetros de servicioalpn="proto" port=8080
    TTLTiempo de vida (segundos)3600

    Añadir un registro SVCB

    Usando el panel de control

    1. Navega a tu zona en el panel de DNScale
    2. Haz clic en Add Record
    3. Configura el registro:
      • Name: Introduce el nombre del servicio (ej., _myservice._tcp)
      • Type: Selecciona SVCB
      • Priority: Establece la prioridad (1 para primario, 0 para modo alias)
      • Target: Usa . para el mismo nombre o introduce el nombre de host destino
      • ALPN: Introduce los protocolos (opcional)
      • Port: Introduce el puerto del servicio (opcional)
      • IPv4 Hint: (Opcional) Dirección IPv4
      • IPv6 Hint: (Opcional) Dirección IPv6
      • TTL: Establece la duración de caché (por defecto: 3600)
    4. Haz clic en Create Record

    Usando la API

    Crear un registro SVCB básico:

    curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "_myservice._tcp",
        "type": "SVCB",
        "content": "1 . port=9000",
        "ttl": 3600
      }'

    Con ALPN e indicaciones de IP:

    curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "_api._tcp",
        "type": "SVCB",
        "content": "1 . alpn=\"myproto\" port=8443 ipv4hint=192.0.2.1",
        "ttl": 3600
      }'

    Múltiples prioridades para failover:

    # Endpoint primario
    curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "_service._tcp",
        "type": "SVCB",
        "content": "1 primary.example.com. port=443",
        "ttl": 3600
      }'
     
    # Endpoint de respaldo
    curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "_service._tcp",
        "type": "SVCB",
        "content": "2 backup.example.com. port=443",
        "ttl": 3600
      }'

    Modo alias:

    curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "name": "_myservice._tcp",
        "type": "SVCB",
        "content": "0 _myservice._tcp.provider.com",
        "ttl": 3600
      }'

    Respuesta de la API:

    {
      "status": "success",
      "data": {
        "message": "Record created successfully",
        "record": {
          "id": "encoded-record-id",
          "name": "_myservice._tcp.example.com.",
          "type": "SVCB",
          "content": "1 . alpn=\"myproto\" port=8443",
          "ttl": 3600,
          "disabled": false
        }
      }
    }

    Prioridad y failover

    Los registros SVCB con diferentes prioridades permiten failover:

    _service._tcp.example.com.    SVCB    1 primary.example.com. port=443
    _service._tcp.example.com.    SVCB    2 secondary.example.com. port=443
    _service._tcp.example.com.    SVCB    10 backup.example.com. port=8443
    • Los clientes intentan prioridad 1 primero
    • Si no está disponible, intentan prioridad 2
    • La prioridad 10 es el último recurso

    Misma prioridad = el cliente elige aleatoriamente (balanceo de carga).

    Convenciones de nombres SVCB

    Para servicios que siguen las convenciones RFC:

    _servicio._protocolo.dominio
     
    Ejemplos:
    _https._tcp.example.com.     ; HTTPS (aunque se prefiere el registro HTTPS)
    _imaps._tcp.example.com.     ; IMAPS
    _submissions._tcp.example.com. ; Envío SMTP
    _dns._udp.example.com.       ; DNS sobre UDP

    Modo alias vs modo servicio

    Modo alias (Prioridad 0)

    Redirige a otro registro SVCB/HTTPS:

    _service._tcp.example.com.    SVCB    0 _service._tcp.provider.com.
    • Como CNAME, pero para service binding
    • No se permiten parámetros
    • Debe tener un nombre de host destino

    Modo servicio (Prioridad 1+)

    Proporciona parámetros de servicio directos:

    _service._tcp.example.com.    SVCB    1 . port=8080
    • Contiene detalles de conexión
    • Puede usar . para el mismo nombre
    • Soporta todos los parámetros

    Mejores prácticas

    1. Usar registro HTTPS para web - Para servicios HTTP/HTTPS, usa el tipo de registro HTTPS

    2. Incluir parámetros esenciales - Como mínimo, especifica el puerto si no es estándar

    3. Planificar para failover - Usa múltiples prioridades para alta disponibilidad

    4. Mantener registros A/AAAA - SVCB complementa pero no reemplaza los registros de dirección

    5. Usar indicaciones de IP para rendimiento - Reduce los viajes DNS con ipv4hint/ipv6hint

    6. Seguir convenciones de nombres - Usa el formato _servicio._protocolo.dominio

    Probar registros SVCB

    # Consultar registros SVCB
    dig SVCB _myservice._tcp.example.com
     
    # Con salida detallada
    dig SVCB _myservice._tcp.example.com +short
     
    # Verificar servidor de nombres específico
    dig SVCB _myservice._tcp.example.com @ns1.dnscale.eu

    Tipos de registro relacionados

    • HTTPS - SVCB específicamente para HTTPS
    • SRV - Descubrimiento de servicios heredado
    • A - Direcciones IPv4
    • AAAA - Direcciones IPv6

    Conclusión

    Los registros SVCB proporcionan un marco moderno y flexible para el descubrimiento de servicios que va más allá de los registros SRV tradicionales. Con soporte para negociación de protocolo, especificación de puerto e indicaciones de IP, SVCB permite conexiones de servicio eficientes con mínimos viajes de ida y vuelta. Mientras que los registros HTTPS son preferidos para servicios web, SVCB es ideal para protocolos personalizados y servicios no HTTP. El soporte completo de SVCB de DNScale te permite configurar un descubrimiento de servicios sofisticado para cualquier aplicación.