Qu'est-ce qu'un enregistrement SVCB
Découvrez comment les enregistrements SVCB permettent la liaison et la découverte de services pour tout protocole. Inclut des exemples pour le tableau de bord et l'API DNScale.
Un enregistrement SVCB (Service Binding) est un type d'enregistrement DNS polyvalent qui fournit des paramètres de connexion pour tout service. Il permet aux clients de découvrir les points de terminaison de service ainsi que leur configuration — versions de protocole, ports et indications IP — en une seule requête DNS.
Comment fonctionnent les enregistrements SVCB
Les enregistrements SVCB fournissent un cadre flexible pour la découverte de services :
_myservice._tcp.example.com. 3600 SVCB 1 . alpn="myproto" port=8080Cela indique aux clients : « Pour se connecter à myservice via TCP, utilisez le protocole 'myproto' sur le port 8080. »
SVCB vs enregistrements HTTPS
| Enregistrement | Objectif | Cas d'utilisation |
|---|---|---|
| HTTPS | Liaison de service pour HTTPS | Serveurs web, API |
| SVCB | Liaison de service pour tout protocole | Protocoles personnalisés, services non HTTP |
Les enregistrements HTTPS sont essentiellement des enregistrements SVCB avec un schéma prédéfini (https). Le format de l'enregistrement est identique.
Composants de l'enregistrement
Priorité
0= Mode alias (redirection vers un autre nom)1-65535= Mode service (fournit les paramètres de connexion)
Cible
.= Utiliser le nom de la requêtenom d'hôte= Utiliser un autre hôte
Paramètres de service (SvcParams)
| Paramètre | Description | Exemple |
|---|---|---|
alpn | Protocoles applicatifs | myproto |
port | Port du service | 8080 |
ipv4hint | Indications d'adresse IPv4 | 192.0.2.1 |
ipv6hint | Indications d'adresse IPv6 | 2001:db8::1 |
no-default-alpn | Pas de protocole par défaut | (drapeau) |
mandatory | Paramètres requis | (liste) |
Cas d'utilisation courants
Protocole d'application personnalisé
_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=853Service WebSocket
_websocket._tcp.example.com. 3600 SVCB 1 ws.example.com. alpn="h2,h3" port=443Service avec plusieurs points de terminaison
_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=8443Mode alias (CNAME de service)
_service._tcp.example.com. 3600 SVCB 0 _service._tcp.provider.com.Format de l'enregistrement
| Champ | Description | Exemple |
|---|---|---|
| Nom | Nom du service | _service._tcp.domaine |
| Type | Type d'enregistrement | SVCB |
| Priorité | Priorité du service | 1 |
| Cible | Nom d'hôte cible | . ou nom d'hôte |
| Paramètres | Paramètres de service | alpn="proto" port=8080 |
| TTL | Durée de vie (secondes) | 3600 |
Ajouter un enregistrement SVCB
Via le tableau de bord
- Accédez à votre zone dans le tableau de bord DNScale
- Cliquez sur Add Record
- Configurez l'enregistrement :
- Name : Saisissez le nom du service (ex.
_myservice._tcp) - Type : Sélectionnez
SVCB - Priority : Définissez la priorité (1 pour principal, 0 pour mode alias)
- Target : Utilisez
.pour le même nom ou saisissez le nom d'hôte cible - ALPN : Saisissez les protocoles (optionnel)
- Port : Saisissez le port du service (optionnel)
- IPv4 Hint : (Optionnel) Adresse IPv4
- IPv6 Hint : (Optionnel) Adresse IPv6
- TTL : Définissez la durée de cache (par défaut : 3600)
- Name : Saisissez le nom du service (ex.
- Cliquez sur Create Record
Via l'API
Créer un enregistrement SVCB basique :
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
}'Avec ALPN et indications 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és multiples pour le basculement :
# Point de terminaison principal
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
}'
# Point de terminaison de secours
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
}'Mode 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
}'Réponse de l'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é et basculement
Les enregistrements SVCB avec différentes priorités permettent le basculement :
_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- Les clients essaient la priorité 1 en premier
- Si indisponible, essaient la priorité 2
- La priorité 10 est le dernier recours
Même priorité = le client choisit aléatoirement (répartition de charge).
Conventions de nommage SVCB
Pour les services suivant les conventions RFC :
_service._protocole.domaine
Exemples :
_https._tcp.example.com. ; HTTPS (bien que l'enregistrement HTTPS soit préféré)
_imaps._tcp.example.com. ; IMAPS
_submissions._tcp.example.com. ; Soumission SMTP
_dns._udp.example.com. ; DNS over UDPMode alias vs mode service
Mode alias (Priorité 0)
Redirige vers un autre enregistrement SVCB/HTTPS :
_service._tcp.example.com. SVCB 0 _service._tcp.provider.com.- Comme CNAME, mais pour la liaison de service
- Aucun paramètre autorisé
- Doit avoir un nom d'hôte cible
Mode service (Priorité 1+)
Fournit les paramètres de service directement :
_service._tcp.example.com. SVCB 1 . port=8080- Contient les détails de connexion
- Peut utiliser
.pour le même nom - Supporte tous les paramètres
Bonnes pratiques
-
Utilisez l'enregistrement HTTPS pour le web - Pour les services HTTP/HTTPS, utilisez le type d'enregistrement HTTPS
-
Incluez les paramètres essentiels - Au minimum, spécifiez le port s'il est non standard
-
Planifiez le basculement - Utilisez plusieurs priorités pour la haute disponibilité
-
Conservez les enregistrements A/AAAA - SVCB complète mais ne remplace pas les enregistrements d'adresses
-
Utilisez les indications IP pour la performance - Réduisez les allers-retours DNS avec ipv4hint/ipv6hint
-
Suivez les conventions de nommage - Utilisez le format
_service._protocole.domaine
Tester les enregistrements SVCB
# Requête des enregistrements SVCB
dig SVCB _myservice._tcp.example.com
# Avec sortie détaillée
dig SVCB _myservice._tcp.example.com +short
# Vérifier un serveur de noms spécifique
dig SVCB _myservice._tcp.example.com @ns1.dnscale.euTypes d'enregistrements associés
- HTTPS - SVCB spécifiquement pour HTTPS
- SRV - Découverte de services classique
- A - Adresses IPv4
- AAAA - Adresses IPv6
Conclusion
Les enregistrements SVCB fournissent un cadre moderne et flexible pour la découverte de services qui va au-delà des enregistrements SRV traditionnels. Avec le support de la négociation de protocole, la spécification de port et les indications IP, SVCB permet des connexions de service efficaces avec un minimum d'allers-retours. Bien que les enregistrements HTTPS soient préférés pour les services web, SVCB est idéal pour les protocoles personnalisés et les services non HTTP. Le support complet SVCB de DNScale vous permet de configurer une découverte de services sophistiquée pour toute application.