Découvrez PostScale -- API e-mail pour l'envoi transactionnel, la réception et les adresses masquées. PostScale

    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=8080

    Cela indique aux clients : « Pour se connecter à myservice via TCP, utilisez le protocole 'myproto' sur le port 8080. »

    SVCB vs enregistrements HTTPS

    EnregistrementObjectifCas d'utilisation
    HTTPSLiaison de service pour HTTPSServeurs web, API
    SVCBLiaison de service pour tout protocoleProtocoles 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ête
    • nom d'hôte = Utiliser un autre hôte

    Paramètres de service (SvcParams)

    ParamètreDescriptionExemple
    alpnProtocoles applicatifsmyproto
    portPort du service8080
    ipv4hintIndications d'adresse IPv4192.0.2.1
    ipv6hintIndications d'adresse IPv62001:db8::1
    no-default-alpnPas de protocole par défaut(drapeau)
    mandatoryParamètres requis(liste)

    Cas d'utilisation courants

    Protocole d'application personnalisé

    _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

    Service WebSocket

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

    Service 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=8443

    Mode alias (CNAME de service)

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

    Format de l'enregistrement

    ChampDescriptionExemple
    NomNom du service_service._tcp.domaine
    TypeType d'enregistrementSVCB
    PrioritéPriorité du service1
    CibleNom d'hôte cible. ou nom d'hôte
    ParamètresParamètres de servicealpn="proto" port=8080
    TTLDurée de vie (secondes)3600

    Ajouter un enregistrement SVCB

    Via le tableau de bord

    1. Accédez à votre zone dans le tableau de bord DNScale
    2. Cliquez sur Add Record
    3. 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)
    4. 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 UDP

    Mode 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

    1. Utilisez l'enregistrement HTTPS pour le web - Pour les services HTTP/HTTPS, utilisez le type d'enregistrement HTTPS

    2. Incluez les paramètres essentiels - Au minimum, spécifiez le port s'il est non standard

    3. Planifiez le basculement - Utilisez plusieurs priorités pour la haute disponibilité

    4. Conservez les enregistrements A/AAAA - SVCB complète mais ne remplace pas les enregistrements d'adresses

    5. Utilisez les indications IP pour la performance - Réduisez les allers-retours DNS avec ipv4hint/ipv6hint

    6. 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.eu

    Types 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.