Neu: PostScale -- E-Mail-API für transaktionale, eingehende und maskierte Adressen. PostScale

    Was ist ein SVCB-Eintrag

    Erfahren Sie, wie SVCB-Einträge Service Binding und Diensterkennung für beliebige Protokolle ermöglichen. Mit Beispielen für das DNScale-Dashboard und die API.

    Ein SVCB-Eintrag (Service Binding) ist ein universeller DNS-Eintragstyp, der Verbindungsparameter für beliebige Dienste bereitstellt. Er ermöglicht es Clients, Service-Endpunkte zusammen mit deren Konfiguration — Protokollversionen, Ports und IP-Hinweise — in einer einzigen DNS-Abfrage zu ermitteln.

    Wie SVCB-Einträge funktionieren

    SVCB-Einträge bieten ein flexibles Framework für die Diensterkennung:

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

    Dies teilt Clients mit: „Um myservice über TCP zu verbinden, verwenden Sie das Protokoll 'myproto' auf Port 8080."

    SVCB vs. HTTPS-Einträge

    EintragZweckAnwendungsfall
    HTTPSService Binding für HTTPSWebserver, APIs
    SVCBService Binding für beliebige ProtokolleBenutzerdefinierte Protokolle, Nicht-HTTP-Dienste

    HTTPS-Einträge sind im Wesentlichen SVCB-Einträge mit einem vordefinierten Schema (https). Das Eintragsformat ist identisch.

    Eintragskomponenten

    Priorität

    • 0 = Alias-Modus (Weiterleitung an einen anderen Namen)
    • 1-65535 = Service-Modus (Verbindungsparameter bereitstellen)

    Ziel

    • . = Abfragenamen verwenden
    • hostname = Anderen Host verwenden

    Service-Parameter (SvcParams)

    ParameterBeschreibungBeispiel
    alpnAnwendungsprotokollemyproto
    portService-Port8080
    ipv4hintIPv4-Adresshinweise192.0.2.1
    ipv6hintIPv6-Adresshinweise2001:db8::1
    no-default-alpnKein Standardprotokoll(Flag)
    mandatoryErforderliche Parameter(Liste)

    Häufige Anwendungsfälle

    Benutzerdefiniertes Anwendungsprotokoll

    _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 mit mehreren Endpunkten

    _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

    Alias-Modus (Service-CNAME)

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

    Eintragsformat

    FeldBeschreibungBeispiel
    NameDienstname_service._tcp.domain
    TypEintragstypSVCB
    PrioritätService-Priorität1
    ZielZiel-Hostname. oder Hostname
    ParameterService-Parameteralpn="proto" port=8080
    TTLGültigkeitsdauer (Sekunden)3600

    SVCB-Eintrag hinzufügen

    Über das Dashboard

    1. Navigieren Sie zu Ihrer Zone im DNScale-Dashboard
    2. Klicken Sie auf Add Record
    3. Konfigurieren Sie den Eintrag:
      • Name: Geben Sie den Dienstnamen ein (z. B. _myservice._tcp)
      • Type: Wählen Sie SVCB
      • Priority: Setzen Sie die Priorität (1 für primär, 0 für Alias-Modus)
      • Target: Verwenden Sie . für denselben Namen oder geben Sie den Ziel-Hostnamen ein
      • ALPN: Geben Sie Protokolle ein (optional)
      • Port: Geben Sie den Service-Port ein (optional)
      • IPv4 Hint: (Optional) IPv4-Adresse
      • IPv6 Hint: (Optional) IPv6-Adresse
      • TTL: Setzen Sie die Cache-Dauer (Standard: 3600)
    4. Klicken Sie auf Create Record

    Über die API

    Einfachen SVCB-Eintrag erstellen:

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

    Mit ALPN und IP-Hinweisen:

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

    Mehrere Prioritäten für Failover:

    # Primärer Endpunkt
    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
      }'
     
    # Backup-Endpunkt
    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
      }'

    Alias-Modus:

    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-Antwort:

    {
      "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ät und Failover

    SVCB-Einträge mit unterschiedlichen Prioritäten ermöglichen 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
    • Clients versuchen zuerst Priorität 1
    • Wenn nicht verfügbar, Priorität 2
    • Priorität 10 ist der letzte Ausweg

    Gleiche Priorität = Client wählt zufällig (Lastverteilung).

    SVCB-Namenskonventionen

    Für Dienste gemäß RFC-Konventionen:

    _service._protocol.domain
     
    Beispiele:
    _https._tcp.example.com.     ; HTTPS (obwohl HTTPS-Eintrag bevorzugt wird)
    _imaps._tcp.example.com.     ; IMAPS
    _submissions._tcp.example.com. ; SMTP-Submission
    _dns._udp.example.com.       ; DNS über UDP

    Alias-Modus vs. Service-Modus

    Alias-Modus (Priorität 0)

    Leitet an einen anderen SVCB/HTTPS-Eintrag weiter:

    _service._tcp.example.com.    SVCB    0 _service._tcp.provider.com.
    • Wie CNAME, aber für Service Binding
    • Keine Parameter erlaubt
    • Muss einen Ziel-Hostnamen haben

    Service-Modus (Priorität 1+)

    Stellt direkte Service-Parameter bereit:

    _service._tcp.example.com.    SVCB    1 . port=8080
    • Enthält Verbindungsdetails
    • Kann . für denselben Namen verwenden
    • Unterstützt alle Parameter

    Best Practices

    1. HTTPS-Eintrag für Web verwenden - Für HTTP/HTTPS-Dienste den HTTPS-Eintragstyp verwenden

    2. Wesentliche Parameter angeben - Mindestens den Port angeben, wenn er nicht standardmäßig ist

    3. Failover einplanen - Mehrere Prioritäten für Hochverfügbarkeit verwenden

    4. A/AAAA-Einträge beibehalten - SVCB ergänzt, ersetzt aber keine Adresseinträge

    5. IP-Hinweise für Performance verwenden - DNS-Roundtrips mit ipv4hint/ipv6hint reduzieren

    6. Namenskonventionen einhalten - Das Format _service._protocol.domain verwenden

    SVCB-Einträge testen

    # SVCB-Einträge abfragen
    dig SVCB _myservice._tcp.example.com
     
    # Mit detaillierter Ausgabe
    dig SVCB _myservice._tcp.example.com +short
     
    # Bestimmten Nameserver prüfen
    dig SVCB _myservice._tcp.example.com @ns1.dnscale.eu

    Verwandte Eintragstypen

    • HTTPS - SVCB speziell für HTTPS
    • SRV - Ältere Diensterkennung
    • A - IPv4-Adressen
    • AAAA - IPv6-Adressen

    Fazit

    SVCB-Einträge bieten ein modernes, flexibles Framework für die Diensterkennung, das über herkömmliche SRV-Einträge hinausgeht. Mit Unterstützung für Protokollaushandlung, Port-Spezifikation und IP-Hinweise ermöglichen SVCB-Einträge effiziente Service-Verbindungen mit minimalen Roundtrips. Während HTTPS-Einträge für Webdienste bevorzugt werden, ist SVCB ideal für benutzerdefinierte Protokolle und Nicht-HTTP-Dienste. DNScales umfassende SVCB-Unterstützung ermöglicht die Konfiguration ausgefeilter Diensterkennung für jede Anwendung.