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=8080Esto indica a los clientes: "Para conectar con myservice sobre TCP, usa el protocolo 'myproto' en el puerto 8080."
SVCB vs registros HTTPS
| Registro | Propósito | Caso de uso |
|---|---|---|
| HTTPS | Service binding para HTTPS | Servidores web, APIs |
| SVCB | Service binding para cualquier protocolo | Protocolos 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 consultanombre de host= Usar un host diferente
Parámetros de servicio (SvcParams)
| Parámetro | Descripción | Ejemplo |
|---|---|---|
alpn | Protocolos de aplicación | myproto |
port | Puerto del servicio | 8080 |
ipv4hint | Indicaciones de dirección IPv4 | 192.0.2.1 |
ipv6hint | Indicaciones de dirección IPv6 | 2001:db8::1 |
no-default-alpn | Sin protocolo por defecto | (indicador) |
mandatory | Parámetros requeridos | (lista) |
Casos de uso comunes
Protocolo de aplicación personalizado
_myapp._tcp.example.com. 3600 SVCB 1 . alpn="myproto/1.0" port=9000DoH (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=853Servicio WebSocket
_websocket._tcp.example.com. 3600 SVCB 1 ws.example.com. alpn="h2,h3" port=443Servicio 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=8443Modo alias (CNAME de servicio)
_service._tcp.example.com. 3600 SVCB 0 _service._tcp.provider.com.Formato del registro
| Campo | Descripción | Ejemplo |
|---|---|---|
| Nombre | Nombre del servicio | _service._tcp.domain |
| Tipo | Tipo de registro | SVCB |
| Prioridad | Prioridad del servicio | 1 |
| Destino | Nombre de host destino | . o nombre de host |
| Parámetros | Parámetros de servicio | alpn="proto" port=8080 |
| TTL | Tiempo de vida (segundos) | 3600 |
Añadir un registro SVCB
Usando el panel de control
- Navega a tu zona en el panel de DNScale
- Haz clic en Add Record
- 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)
- Name: Introduce el nombre del servicio (ej.,
- 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 UDPModo 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
-
Usar registro HTTPS para web - Para servicios HTTP/HTTPS, usa el tipo de registro HTTPS
-
Incluir parámetros esenciales - Como mínimo, especifica el puerto si no es estándar
-
Planificar para failover - Usa múltiples prioridades para alta disponibilidad
-
Mantener registros A/AAAA - SVCB complementa pero no reemplaza los registros de dirección
-
Usar indicaciones de IP para rendimiento - Reduce los viajes DNS con ipv4hint/ipv6hint
-
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.euTipos 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.