Maak kennis met PostScale -- e-mail-API voor transactionele, inkomende en gemaskeerde adressen. PostScale

    Wat is een SVCB-record

    Leer hoe SVCB-records service binding en detectie mogelijk maken voor elk protocol. Inclusief voorbeelden voor het DNScale-dashboard en de API.

    Een SVCB (Service Binding) record is een algemeen DNS-recordtype dat verbindingsparameters biedt voor elke dienst. Het stelt clients in staat om service-endpoints te ontdekken samen met hun configuratie — protocolversies, poorten en IP-hints — in een enkele DNS-query.

    Hoe SVCB-records werken

    SVCB-records bieden een flexibel raamwerk voor servicedetectie:

    _myservice._tcp.example.com.    3600    SVCB    1 . alpn="myproto" port=8080

    Dit vertelt clients: "Om verbinding te maken met myservice via TCP, gebruik protocol 'myproto' op poort 8080."

    SVCB vs HTTPS-records

    RecordDoelToepassing
    HTTPSService binding voor HTTPSWebservers, API's
    SVCBService binding voor elk protocolAangepaste protocollen, niet-HTTP-diensten

    HTTPS-records zijn in wezen SVCB-records met een vooraf gedefinieerd schema (https). Het recordformaat is identiek.

    Recordcomponenten

    Prioriteit

    • 0 = Aliasmodus (doorverwijzing naar andere naam)
    • 1-65535 = Servicemodus (verbindingsparameters bieden)

    Doel

    • . = Gebruik de querynaam
    • hostnaam = Gebruik een andere host

    Serviceparameters (SvcParams)

    ParameterBeschrijvingVoorbeeld
    alpnApplicatieprotocollenmyproto
    portServicepoort8080
    ipv4hintIPv4-adreshints192.0.2.1
    ipv6hintIPv6-adreshints2001:db8::1
    no-default-alpnGeen standaardprotocol(vlag)
    mandatoryVereiste parameters(lijst)

    Veelvoorkomende toepassingen

    Aangepast applicatieprotocol

    _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

    WebSocket-dienst

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

    Dienst met meerdere 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=8443

    Aliasmodus (service CNAME)

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

    Recordformaat

    VeldBeschrijvingVoorbeeld
    NaamServicenaam_service._tcp.domein
    TypeRecordtypeSVCB
    PrioriteitServiceprioriteit1
    DoelDoelhostnaam. of hostnaam
    ParamsServiceparametersalpn="proto" port=8080
    TTLTime to live (seconden)3600

    Een SVCB-record toevoegen

    Via het dashboard

    1. Navigeer naar je zone in het DNScale-dashboard
    2. Klik op Add Record
    3. Configureer het record:
      • Name: Voer de servicenaam in (bijv. _myservice._tcp)
      • Type: Selecteer SVCB
      • Priority: Stel de prioriteit in (1 voor primair, 0 voor aliasmodus)
      • Target: Gebruik . voor dezelfde naam of voer de doelhostnaam in
      • ALPN: Voer protocollen in (optioneel)
      • Port: Voer de servicepoort in (optioneel)
      • IPv4 Hint: (Optioneel) IPv4-adres
      • IPv6 Hint: (Optioneel) IPv6-adres
      • TTL: Stel de cacheduur in (standaard: 3600)
    4. Klik op Create Record

    Via de API

    Een basis SVCB-record aanmaken:

    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
      }'

    Met ALPN en IP-hints:

    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
      }'

    Meerdere prioriteiten voor failover:

    # Primair endpoint
    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
      }'
     
    # Back-up endpoint
    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
      }'

    Aliasmodus:

    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
      }'

    API-respons:

    {
      "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
        }
      }
    }

    Prioriteit en failover

    SVCB-records met verschillende prioriteiten maken failover mogelijk:

    _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
    • Clients proberen eerst prioriteit 1
    • Als die niet beschikbaar is, prioriteit 2
    • Prioriteit 10 is de laatste optie

    Dezelfde prioriteit = client kiest willekeurig (load balancing).

    SVCB-naamgevingsconventies

    Voor diensten die RFC-conventies volgen:

    _service._protocol.domein
     
    Voorbeelden:
    _https._tcp.example.com.     ; HTTPS (hoewel HTTPS-record de voorkeur heeft)
    _imaps._tcp.example.com.     ; IMAPS
    _submissions._tcp.example.com. ; SMTP-submission
    _dns._udp.example.com.       ; DNS over UDP

    Aliasmodus vs servicemodus

    Aliasmodus (prioriteit 0)

    Verwijst door naar een ander SVCB/HTTPS-record:

    _service._tcp.example.com.    SVCB    0 _service._tcp.provider.com.
    • Zoals CNAME, maar voor service binding
    • Geen parameters toegestaan
    • Moet een doelhostnaam hebben

    Servicemodus (prioriteit 1+)

    Biedt directe serviceparameters:

    _service._tcp.example.com.    SVCB    1 . port=8080
    • Bevat verbindingsdetails
    • Kan . gebruiken voor dezelfde naam
    • Ondersteunt alle parameters

    Best practices

    1. Gebruik HTTPS-record voor web - Gebruik voor HTTP/HTTPS-diensten het HTTPS-recordtype

    2. Neem essentiële parameters op - Specificeer minimaal de poort als deze niet standaard is

    3. Plan voor failover - Gebruik meerdere prioriteiten voor hoge beschikbaarheid

    4. Behoud A/AAAA-records - SVCB vult aan maar vervangt geen adresrecords

    5. Gebruik IP-hints voor prestaties - Verminder DNS round trips met ipv4hint/ipv6hint

    6. Volg naamgevingsconventies - Gebruik het _service._protocol.domein-formaat

    SVCB-records testen

    # Query SVCB-records
    dig SVCB _myservice._tcp.example.com
     
    # Met gedetailleerde output
    dig SVCB _myservice._tcp.example.com +short
     
    # Controleer specifieke nameserver
    dig SVCB _myservice._tcp.example.com @ns1.dnscale.eu

    Gerelateerde recordtypen

    • HTTPS - SVCB specifiek voor HTTPS
    • SRV - Verouderde servicedetectie
    • A - IPv4-adressen
    • AAAA - IPv6-adressen

    Conclusie

    SVCB-records bieden een modern, flexibel raamwerk voor servicedetectie dat verder gaat dan traditionele SRV-records. Met ondersteuning voor protocolonderhandeling, poortspecificatie en IP-hints maakt SVCB efficiënte serviceverbindingen met minimale round trips mogelijk. Terwijl HTTPS-records de voorkeur hebben voor webdiensten, is SVCB ideaal voor aangepaste protocollen en niet-HTTP-diensten. DNScale's uitgebreide SVCB-ondersteuning laat je geavanceerde servicedetectie configureren voor elke applicatie.