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=8080Dit vertelt clients: "Om verbinding te maken met myservice via TCP, gebruik protocol 'myproto' op poort 8080."
SVCB vs HTTPS-records
| Record | Doel | Toepassing |
|---|---|---|
| HTTPS | Service binding voor HTTPS | Webservers, API's |
| SVCB | Service binding voor elk protocol | Aangepaste 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 querynaamhostnaam= Gebruik een andere host
Serviceparameters (SvcParams)
| Parameter | Beschrijving | Voorbeeld |
|---|---|---|
alpn | Applicatieprotocollen | myproto |
port | Servicepoort | 8080 |
ipv4hint | IPv4-adreshints | 192.0.2.1 |
ipv6hint | IPv6-adreshints | 2001:db8::1 |
no-default-alpn | Geen standaardprotocol | (vlag) |
mandatory | Vereiste parameters | (lijst) |
Veelvoorkomende toepassingen
Aangepast applicatieprotocol
_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 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=8443Aliasmodus (service CNAME)
_service._tcp.example.com. 3600 SVCB 0 _service._tcp.provider.com.Recordformaat
| Veld | Beschrijving | Voorbeeld |
|---|---|---|
| Naam | Servicenaam | _service._tcp.domein |
| Type | Recordtype | SVCB |
| Prioriteit | Serviceprioriteit | 1 |
| Doel | Doelhostnaam | . of hostnaam |
| Params | Serviceparameters | alpn="proto" port=8080 |
| TTL | Time to live (seconden) | 3600 |
Een SVCB-record toevoegen
Via het dashboard
- Navigeer naar je zone in het DNScale-dashboard
- Klik op Add Record
- 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)
- Name: Voer de servicenaam in (bijv.
- 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 UDPAliasmodus 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
-
Gebruik HTTPS-record voor web - Gebruik voor HTTP/HTTPS-diensten het HTTPS-recordtype
-
Neem essentiële parameters op - Specificeer minimaal de poort als deze niet standaard is
-
Plan voor failover - Gebruik meerdere prioriteiten voor hoge beschikbaarheid
-
Behoud A/AAAA-records - SVCB vult aan maar vervangt geen adresrecords
-
Gebruik IP-hints voor prestaties - Verminder DNS round trips met ipv4hint/ipv6hint
-
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.euGerelateerde 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.