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=8080Dies teilt Clients mit: „Um myservice über TCP zu verbinden, verwenden Sie das Protokoll 'myproto' auf Port 8080."
SVCB vs. HTTPS-Einträge
| Eintrag | Zweck | Anwendungsfall |
|---|---|---|
| HTTPS | Service Binding für HTTPS | Webserver, APIs |
| SVCB | Service Binding für beliebige Protokolle | Benutzerdefinierte 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 verwendenhostname= Anderen Host verwenden
Service-Parameter (SvcParams)
| Parameter | Beschreibung | Beispiel |
|---|---|---|
alpn | Anwendungsprotokolle | myproto |
port | Service-Port | 8080 |
ipv4hint | IPv4-Adresshinweise | 192.0.2.1 |
ipv6hint | IPv6-Adresshinweise | 2001:db8::1 |
no-default-alpn | Kein Standardprotokoll | (Flag) |
mandatory | Erforderliche Parameter | (Liste) |
Häufige Anwendungsfälle
Benutzerdefiniertes Anwendungsprotokoll
_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=853WebSocket-Dienst
_websocket._tcp.example.com. 3600 SVCB 1 ws.example.com. alpn="h2,h3" port=443Dienst 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=8443Alias-Modus (Service-CNAME)
_service._tcp.example.com. 3600 SVCB 0 _service._tcp.provider.com.Eintragsformat
| Feld | Beschreibung | Beispiel |
|---|---|---|
| Name | Dienstname | _service._tcp.domain |
| Typ | Eintragstyp | SVCB |
| Priorität | Service-Priorität | 1 |
| Ziel | Ziel-Hostname | . oder Hostname |
| Parameter | Service-Parameter | alpn="proto" port=8080 |
| TTL | Gültigkeitsdauer (Sekunden) | 3600 |
SVCB-Eintrag hinzufügen
Über das Dashboard
- Navigieren Sie zu Ihrer Zone im DNScale-Dashboard
- Klicken Sie auf Add Record
- 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)
- Name: Geben Sie den Dienstnamen ein (z. B.
- 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 UDPAlias-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
-
HTTPS-Eintrag für Web verwenden - Für HTTP/HTTPS-Dienste den HTTPS-Eintragstyp verwenden
-
Wesentliche Parameter angeben - Mindestens den Port angeben, wenn er nicht standardmäßig ist
-
Failover einplanen - Mehrere Prioritäten für Hochverfügbarkeit verwenden
-
A/AAAA-Einträge beibehalten - SVCB ergänzt, ersetzt aber keine Adresseinträge
-
IP-Hinweise für Performance verwenden - DNS-Roundtrips mit ipv4hint/ipv6hint reduzieren
-
Namenskonventionen einhalten - Das Format
_service._protocol.domainverwenden
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.euVerwandte Eintragstypen
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.