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.
Ready to manage your DNS with confidence?
DNScale provides anycast DNS hosting with a global network, real-time analytics, and an easy-to-use API.
Start free