Ondersteuning voor DNS SRV-records
Achtergrond - verbinding maken met een server of adresboek
De standaard UDP-poort waarop een Jamulus server of adresboek luistert, is 22124. Normaal gesproken, wanneer een client of server een eenvoudige hostnaam of een IP-adres krijgt om verbinding mee te maken, zoals 198.51.100.46 of jamulus.example.com, zal deze 22124 als bestemmingspoortnummer gebruiken.
Omdat een enkele Jamulus server slechts één “kamer” biedt en een enkele Jamulus adresboek slechts één “lijst”, is het vaak handig om meerdere Jamulus server- of adresboek-instanties op één host te draaien, die één IP-adres delen. Om dit te doen, moeten de instanties elk luisteren op een andere UDP-poort. Dit kan door het poortnummer op de commandoregel op te geven met -p NNNNN of --port NNNNN.
Als een dergelijke server is geregistreerd bij een adresboek, zoals de standaard Jamulus-adresboeken, bijvoorbeeld Ieder Genre 1, wordt het gebruikte poortnummer automatisch door de adresboek gedetecteerd tijdens de registratie en opgeslagen in de lijst die naar een client wordt verzonden. De Jamulus-client van de gebruiker kan vervolgens op de gebruikelijke manier verbinding maken met de server via de lijst in het verbindingsdialoogvenster.
Een Jamulus-instantie die rechtstreeks verbinding wil maken met een server of adresboek via IP-adres of hostnaam, moet echter het te gebruiken poortnummer kennen. Dit kan na het IP-adres of de hostnaam worden opgegeven, bijvoorbeeld 198.51.100.46:22123 of jamulus.example.com:22120. Dergelijke poortnummers zijn niet erg makkelijk te onthouden, dus het is vaak nodig om ze op te zoeken! De oplossing is dat de serverbeheerder het poortnummer publiceert met behulp van een SRV-record in DNS.
DNS SRV gebruiken om poortnummers te publiceren
Een DNS SRV-record (“service”-record) is een speciaal DNS-record dat kan worden gebruikt om het poortnummer en de hostnaam te publiceren waarmee verbinding moet worden gemaakt met een bepaalde service.
Recente versies van Jamulus Clients en Servers kunnen gebruikmaken van dergelijke records. Afhankelijk van de Jamulus-versie (zie hieronder), zal het, indien een DNS SRV-record wordt gevonden dat is gekoppeld aan de opgegeven domeinnaam, proberen verbinding te maken met de host en poort die in het SRV-record worden vermeld. De gebruiker hoeft het poortnummer niet expliciet op te geven.
Als er geen SRV-records worden gevonden op de DNS-server voor de opgegeven hostnaam, zal Jamulus proberen verbinding te maken met het adres van de adresboek of server op het standaardpoortnummer 22124.
Jamulus-versies die SRV ondersteunen
Clients met versie 3.10.0 of later ondersteunen SRV-records voor een hostnaam in de volgende contexten:
- In het dialoogvenster “Verbinden” kun je “Serveradres” invoeren.
- Gebruik op de opdrachtregel met de optie
-com een directe verbinding met een server te specificeren.
Naast het bovenstaande ondersteunen zowel clients als servers met versie 3.12.0 of later ook SRV-records voor een hostnaam die wordt gebruikt om een adresboek te specificeren, in de volgende contexten:
- Server: gebruik de optie
-eof--directoryaddressmet de opdrachtregel. - Server: (GUI) in de instelling “Eigen adresboek adres” onder “Opties”.
- Client: (GUI) in de lijst met eigen adresboeken onder “Geavanceerde instellingen” in “Instellingen”.
DNS SRV-records aanmaken
SRV-records worden aangemaakt door de beheerder van het DNS-domein dat wordt gebruikt om de Jamulus-server te hosten. De SRV-records worden toegevoegd via het beheerdersportaal (of de API, indien beschikbaar) van de DNS-hostingprovider van het domein. De opmaak van de SRV-recordvermelding kan variëren per DNS-hostingprovider, maar ziet er over het algemeen ongeveer zo uit:
_service._proto.name. ttl IN SRV priority weight port target.
Houd er rekening mee dat de hostnamen name en target hetzelfde of verschillend kunnen zijn. name is de hostnaam die de gebruiker zonder poortnummer gebruikt voor SRV-lookup, en target is de hostnaam die Jamulus samen met het gevonden poortnummer gebruikt om verbinding te maken met de Jamulus-server of -adresboek.
In het geval van Jamulus moet de servicejamulus zijn en de protoudp, dus het record zal er als volgt uitzien (voor poortnummer 12345):
_jamulus._udp.myserver.example.com. 60 IN SRV 0 5 12345 myhost.example.com.
Met deze techniek kun je meerdere Jamulus-servers of -adresboeken op verschillende poorten op één host hosten met verschillende hostnamen door elk een eigen SRV-record te geven. Dit voorkomt dat je de gebruikers het poortnummer hoeft te geven, wat mogelijk minder gemakkelijk te onthouden is dan een naam. In het bovenstaande voorbeeld geeft de gebruiker myserver.example.com op en Jamulus maakt vervolgens verbinding met myhost.example.com:12345.
Raadpleeg de documentatie van jouw DNS-provider voor instructies over het aanmaken van een SRV-record.
Voorbeeld - SRV-records voor de belangrijkste openbare Jamulus-adresboeken
In het domein jamulus.io zijn SRV-records aangemaakt om de juiste poort voor elk van de standaard openbare adresboeken te specificeren:
| DIRECTORY | DNS SRV RECORD | JAMULUS SERVER |
|---|---|---|
anygenre1.jamulus.io | _jamulus._udp.anygenre1.jamulus.io. 60 IN SRV 0 0 22124 anygenre1.jamulus.io. | anygenre1.jamulus.io:22124 |
anygenre2.jamulus.io | _jamulus._udp.anygenre2.jamulus.io. 60 IN SRV 0 0 22224 anygenre2.jamulus.io. | anygenre2.jamulus.io:22224 |
anygenre3.jamulus.io | _jamulus._udp.anygenre3.jamulus.io. 60 IN SRV 0 0 22624 anygenre3.jamulus.io. | anygenre3.jamulus.io:22624 |
rock.jamulus.io | _jamulus._udp.rock.jamulus.io. 60 IN SRV 0 0 22424 rock.jamulus.io. | rock.jamulus.io:22424 |
jazz.jamulus.io | _jamulus._udp.jazz.jamulus.io. 60 IN SRV 0 0 22324 jazz.jamulus.io. | jazz.jamulus.io:22324 |
classical.jamulus.io | _jamulus._udp.classical.jamulus.io. 60 IN SRV 0 0 22524 classical.jamulus.io. | classical.jamulus.io:22524 |
choral.jamulus.io | _jamulus._udp.choral.jamulus.io. 60 IN SRV 0 0 22724 choral.jamulus.io. | choral.jamulus.io:22724 |
Dit betekent dat een Jamulus Server van versie 3.12.0 of later de hostnaam van het adresboek kan doorgeven aan de optie -e of --directoryaddress, zonder dat het nodig is om het poortnummer te zoeken en te specificeren.
Een serverbeheerder kan dezelfde techniek gebruiken om een SRV-record voor zijn eigen server of adresboek te publiceren.