Cos'è un record SVCB
Scopri come i record SVCB abilitano il service binding e la scoperta per qualsiasi protocollo. Include esempi per la dashboard e l'API di DNScale.
Un record SVCB (Service Binding) è un tipo di record DNS generico che fornisce parametri di connessione per qualsiasi servizio. Consente ai client di scoprire gli endpoint del servizio insieme alla loro configurazione — versioni del protocollo, porte e suggerimenti IP — in un'unica query DNS.
Come funzionano i record SVCB
I record SVCB forniscono un framework flessibile per la scoperta dei servizi:
_myservice._tcp.example.com. 3600 SVCB 1 . alpn="myproto" port=8080Questo dice ai client: "Per connettersi a myservice tramite TCP, usa il protocollo 'myproto' sulla porta 8080."
SVCB vs record HTTPS
| Record | Scopo | Caso d'uso |
|---|---|---|
| HTTPS | Service binding per HTTPS | Server web, API |
| SVCB | Service binding per qualsiasi protocollo | Protocolli personalizzati, servizi non-HTTP |
I record HTTPS sono essenzialmente record SVCB con uno schema predefinito (https). Il formato del record è identico.
Componenti del record
Priority
0= Modalità alias (reindirizza a un altro nome)1-65535= Modalità servizio (fornisce parametri di connessione)
Target
.= Usa il nome della queryhostname= Usa un host diverso
Parametri di servizio (SvcParams)
| Parametro | Descrizione | Esempio |
|---|---|---|
alpn | Protocolli applicativi | myproto |
port | Porta del servizio | 8080 |
ipv4hint | Suggerimenti indirizzo IPv4 | 192.0.2.1 |
ipv6hint | Suggerimenti indirizzo IPv6 | 2001:db8::1 |
no-default-alpn | Nessun protocollo predefinito | (flag) |
mandatory | Parametri obbligatori | (lista) |
Casi d'uso comuni
Protocollo applicativo personalizzato
_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=853Servizio WebSocket
_websocket._tcp.example.com. 3600 SVCB 1 ws.example.com. alpn="h2,h3" port=443Servizio con endpoint multipli
_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=8443Modalità alias (CNAME per servizi)
_service._tcp.example.com. 3600 SVCB 0 _service._tcp.provider.com.Formato del record
| Campo | Descrizione | Esempio |
|---|---|---|
| Nome | Nome del servizio | _service._tcp.domain |
| Tipo | Tipo di record | SVCB |
| Priority | Priorità del servizio | 1 |
| Target | Hostname di destinazione | . o hostname |
| Params | Parametri di servizio | alpn="proto" port=8080 |
| TTL | Time to live (secondi) | 3600 |
Aggiungere un record SVCB
Tramite la dashboard
- Naviga alla tua zona nella dashboard di DNScale
- Clicca su Add Record
- Configura il record:
- Name: Inserisci il nome del servizio (es.
_myservice._tcp) - Type: Seleziona
SVCB - Priority: Imposta la priorità (1 per primario, 0 per modalità alias)
- Target: Usa
.per lo stesso nome o inserisci l'hostname di destinazione - ALPN: Inserisci i protocolli (opzionale)
- Port: Inserisci la porta del servizio (opzionale)
- IPv4 Hint: (Opzionale) Indirizzo IPv4
- IPv6 Hint: (Opzionale) Indirizzo IPv6
- TTL: Imposta la durata della cache (predefinito: 3600)
- Name: Inserisci il nome del servizio (es.
- Clicca su Create Record
Tramite l'API
Creare un record SVCB base:
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 suggerimenti 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
}'Priorità multiple per il 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 di backup
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
}'Modalità 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
}'Risposta 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
}
}
}Priorità e failover
I record SVCB con priorità diverse abilitano il 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- I client provano prima la priorità 1
- Se non disponibile, provano la priorità 2
- La priorità 10 è l'ultima risorsa
Stessa priorità = il client sceglie casualmente (bilanciamento del carico).
Convenzioni di denominazione SVCB
Per i servizi che seguono le convenzioni RFC:
_servizio._protocollo.dominio
Esempi:
_https._tcp.example.com. ; HTTPS (sebbene il record HTTPS sia preferito)
_imaps._tcp.example.com. ; IMAPS
_submissions._tcp.example.com. ; Invio SMTP
_dns._udp.example.com. ; DNS su UDPModalità alias vs modalità servizio
Modalità alias (Priority 0)
Reindirizza a un altro record SVCB/HTTPS:
_service._tcp.example.com. SVCB 0 _service._tcp.provider.com.- Come CNAME, ma per il service binding
- Nessun parametro consentito
- Deve avere un hostname di destinazione
Modalità servizio (Priority 1+)
Fornisce parametri di servizio diretti:
_service._tcp.example.com. SVCB 1 . port=8080- Contiene i dettagli di connessione
- Può usare
.per lo stesso nome - Supporta tutti i parametri
Best practice
-
Usa il record HTTPS per il web - Per i servizi HTTP/HTTPS, usa il tipo di record HTTPS
-
Includi i parametri essenziali - Come minimo, specifica la porta se non standard
-
Pianifica il failover - Usa priorità multiple per l'alta disponibilità
-
Mantieni i record A/AAAA - SVCB integra ma non sostituisce i record di indirizzo
-
Usa suggerimenti IP per le prestazioni - Riduci i round trip DNS con ipv4hint/ipv6hint
-
Segui le convenzioni di denominazione - Usa il formato
_servizio._protocollo.dominio
Test dei record SVCB
# Query dei record SVCB
dig SVCB _myservice._tcp.example.com
# Con output dettagliato
dig SVCB _myservice._tcp.example.com +short
# Controlla un nameserver specifico
dig SVCB _myservice._tcp.example.com @ns1.dnscale.euTipi di record correlati
- HTTPS - SVCB specifico per HTTPS
- SRV - Scoperta servizi legacy
- A - Indirizzi IPv4
- AAAA - Indirizzi IPv6
Conclusione
I record SVCB forniscono un framework moderno e flessibile per la scoperta dei servizi che va oltre i tradizionali record SRV. Con il supporto per la negoziazione dei protocolli, la specifica delle porte e i suggerimenti IP, SVCB abilita connessioni efficienti ai servizi con round trip minimi. Mentre i record HTTPS sono preferiti per i servizi web, SVCB è ideale per protocolli personalizzati e servizi non-HTTP. Il supporto completo SVCB di DNScale ti permette di configurare una scoperta dei servizi sofisticata per qualsiasi applicazione.