Wat is een SRV-record
Leer hoe SRV-records servicedetectie mogelijk maken door host- en poortinformatie voor diensten te specificeren. Inclusief voorbeelden voor het DNScale-dashboard en de API.
Een SRV (Service) record specificeert de locatie van servers voor specifieke diensten. In tegenstelling tot A-records die simpelweg namen aan IP's koppelen, bieden SRV-records de hostnaam, poort, prioriteit en gewicht voor een dienst — waardoor geavanceerde servicedetectie en load balancing mogelijk zijn.
Hoe SRV-records werken
SRV-records gebruiken een speciale naamgevingsconventie:
_service._protocol.domein. TTL SRV prioriteit gewicht poort doelVoorbeeld:
_sip._tcp.example.com. 3600 SRV 10 60 5060 sipserver.example.com.Dit vertelt clients: "Om de SIP-dienst via TCP voor example.com te bereiken, maak verbinding met sipserver.example.com op poort 5060."
Recordcomponenten
| Component | Beschrijving | Voorbeeld |
|---|---|---|
| Service | Servicenaam (voorafgegaan door _) | _sip, _xmpp, _ldap |
| Protocol | Netwerkprotocol (voorafgegaan door _) | _tcp, _udp |
| Prioriteit | Lagere waarden = hogere prioriteit | 10 |
| Gewicht | Verdeling bij dezelfde prioriteit | 60 |
| Poort | TCP/UDP-poortnummer | 5060 |
| Doel | Hostnaam van de server | sipserver.example.com. |
Veelvoorkomende toepassingen
VoIP / SIP
_sip._tcp.example.com. 3600 SRV 10 100 5060 sip1.example.com.
_sip._tcp.example.com. 3600 SRV 20 100 5060 sip2.example.com.
_sip._udp.example.com. 3600 SRV 10 100 5060 sip1.example.com.XMPP (Jabber) berichten
_xmpp-client._tcp.example.com. 3600 SRV 5 0 5222 xmpp.example.com.
_xmpp-server._tcp.example.com. 3600 SRV 5 0 5269 xmpp.example.com.Microsoft 365 / Teams
_sipfederationtls._tcp.example.com. 3600 SRV 100 1 5061 sipfed.online.lync.com.
_sip._tls.example.com. 3600 SRV 100 1 443 sipdir.online.lync.com.LDAP Directory Services
_ldap._tcp.example.com. 3600 SRV 0 100 389 ldap.example.com.
_ldaps._tcp.example.com. 3600 SRV 0 100 636 ldap.example.com.
_ldap._tcp.dc._msdcs.example.com. 3600 SRV 0 100 389 dc1.example.com.CalDAV / CardDAV
_caldav._tcp.example.com. 3600 SRV 0 0 80 calendar.example.com.
_caldavs._tcp.example.com. 3600 SRV 0 0 443 calendar.example.com.
_carddav._tcp.example.com. 3600 SRV 0 0 80 contacts.example.com.
_carddavs._tcp.example.com. 3600 SRV 0 0 443 contacts.example.com.Minecraft-servers
_minecraft._tcp.example.com. 3600 SRV 0 5 25565 mc.example.com.Matrix/Element Chat
_matrix._tcp.example.com. 3600 SRV 10 0 8448 matrix.example.com.Prioriteit en gewicht uitgelegd
Prioriteit (voorkeur)
Lagere waarden worden eerst geprobeerd:
_sip._tcp.example.com. SRV 10 50 5060 primary.example.com.
_sip._tcp.example.com. SRV 20 50 5060 backup.example.com.Clients proberen eerst primary.example.com (prioriteit 10), dan backup.example.com (prioriteit 20) als de primaire niet beschikbaar is.
Gewicht (verkeersverdeling)
Tussen servers met dezelfde prioriteit bepaalt het gewicht de verdeling:
_sip._tcp.example.com. SRV 10 70 5060 server1.example.com.
_sip._tcp.example.com. SRV 10 30 5060 server2.example.com.Server1 ontvangt ~70% van het verkeer, server2 ontvangt ~30%.
Recordformaat
| Veld | Beschrijving | Voorbeeld |
|---|---|---|
| Naam | _service._protocol.domein | _sip._tcp.example.com |
| Type | Recordtype | SRV |
| Prioriteit | Servervoorkeur (lager = voorkeur) | 10 |
| Gewicht | Load balancing gewicht | 50 |
| Poort | Servicepoort | 5060 |
| Inhoud | Doelhostnaam | sipserver.example.com. |
| TTL | Time to live (seconden) | 3600 |
Een SRV-record toevoegen
Via het dashboard
- Navigeer naar je zone in het DNScale-dashboard
- Klik op Add Record
- Configureer het record:
- Name: Voer
_service._protocolin (bijv._sip._tcp) - Type: Selecteer
SRV - Priority: Stel de prioriteitswaarde in (bijv.
10) - Weight: Stel de gewichtswaarde in (bijv.
50) - Port: Stel de servicepoort in (bijv.
5060) - Value: Voer de doelhostnaam in
- TTL: Stel de cacheduur in (standaard: 3600)
- Name: Voer
- Klik op Create Record
Via de API
Een SRV-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": "_sip._tcp",
"type": "SRV",
"content": "sipserver.example.com",
"ttl": 3600,
"priority": 10,
"weight": 50,
"port": 5060
}'XMPP-records instellen:
# Client-verbindingen
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": "_xmpp-client._tcp",
"type": "SRV",
"content": "xmpp.example.com",
"ttl": 3600,
"priority": 5,
"weight": 0,
"port": 5222
}'
# Server-naar-server federatie
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": "_xmpp-server._tcp",
"type": "SRV",
"content": "xmpp.example.com",
"ttl": 3600,
"priority": 5,
"weight": 0,
"port": 5269
}'API-respons:
{
"status": "success",
"data": {
"message": "Record created successfully",
"record": {
"id": "encoded-record-id",
"name": "_sip._tcp.example.com.",
"type": "SRV",
"content": "10 50 5060 sipserver.example.com.",
"ttl": 3600,
"disabled": false
}
}
}Best practices
-
Gebruik zinvolle prioriteiten - Houd gaten tussen prioriteitswaarden (10, 20, 30) voor toekomstige flexibiliteit
-
Doel moet A/AAAA-records hebben - SRV-doelen moeten resolven naar IP-adressen, niet naar CNAME's
-
Gebruik gewicht voor load balancing - Verdeel verkeer over servers met dezelfde prioriteit met behulp van gewicht
-
Gebruik geen poort 0 - Een gewicht van 0 betekent dat de server als laatste optie moet worden gebruikt
-
Test met applicaties - Niet alle applicaties respecteren SRV-records; verifieer met je specifieke software
Een dienst uitschakelen
Om aan te geven dat een dienst niet beschikbaar is, gebruik een doel van .:
_sip._tcp.example.com. 3600 SRV 0 0 0 .SRV-records testen
Verifieer je SRV-records met dig:
dig SRV _sip._tcp.example.com
# Met volledige output
dig SRV _xmpp-client._tcp.example.com +shortGerelateerde recordtypen
- A - IPv4-adres voor de doelserver
- AAAA - IPv6-adres voor de doelserver
- HTTPS - Moderne service binding voor HTTPS
- SVCB - Algemene service binding
Conclusie
SRV-records zijn essentieel voor servicedetectie en stellen applicaties in staat om automatisch de juiste servers, poorten en failover-opties te vinden. Ze zijn cruciaal voor VoIP, instant messaging en veel bedrijfsprotocollen. DNScale's ondersteuning voor SRV-records laat je geavanceerde service-architecturen configureren met op prioriteit gebaseerde failover en gewogen load balancing.