TeamSpeak 3 - TSDNS


TSDNS ist ein System, dass es TeamSpeak-Benutzern erlaubt, sich mit Servern zu verbinden, die beliebige Ports verwenden können, ohne dabei den jeweiligen Port angeben zu müssen. Der "TSDNS-Name" wird vom System benutzt, um die IP und den Port des Servers zu bestimmen. Es kann in gewisser Weise mit dem System der Virtuellen Hosts bei Apache verglichen werden, obwohl sich die technischen Aspekte doch sehr unterscheiden.


Motivation

Nehmen wir an, Ihr habt einen TeamSpeak-3-Server mit der IP 1.2.3.4 und dem Port 4321. Ihr könntet nun Euren Freunden mitteilen, dass die komplette Adresse des Servers "1.2.3.4:4321" bzw. (als DNS-Name) "myclanrocks.net:4321" lautet, jedoch kann die extra Angabe des Ports für unerfahrene Benutzer zu kompliziert wirken. Es wäre also gut, wenn Ihr Euren Freunden die Adresse Eures TS3-Server z.B. einfach als "myclanrocks.net" mitteilen könntet (d.h. genau wie wenn Euer Server den Standardport verwendet, was ja aber hier nicht der Fall ist).


Wie es funktioniert

Ein TSDNS-Server ist ein sehr einfacher Netzwerk-Service, welcher TCP/IP verwendet, um auf dem Port 41144 (Standard) zu horchen und eine Liste von "Anfrage-Ergebnis"-Paaren kennt. Beim Verbinden mit dem TSDNS-Server müsst Ihr eine Anfrage (Query) übermitteln und der TSDNS-Server antwortet mit einem Ergebnis, jedoch nur, wenn diese Anfrage in seiner Liste existiert, ansonsten gibt er eine 404-Fehlermeldung aus. Als Ergebnis gibt es entweder eine IP-Adresse (was automatisch den Port 9987 voraussetzt) oder ein Paar in der Form "IP:Port". Anstelle einer Nummer als Port kann auch der String "$PORT" verwendet werden, was dazu führt, dass der Port verwendet wird, den der Client angegeben hat.

Immer, wenn sich ein TeamSpeak-Client mit einem Server verbinden möchte und dabei einen Hostnamen angibt, versucht er, sich mit bis zu vier möglichen TSDNS-Servern zu verbinden, um zu versuchen, ein "IP:Port"-Paar zu erhalten, indem er den Hostnamen als String verwendet, der beim TSDNS-Server als Query mitgegeben wurde.


Zur Veranschaulichung:

hostname=voice.teamspeak.com

Querys an den TSDNS-Server:

- voice.teamspeak.com (mit der Query = voice.teamspeak.com)
- teamspeak.com (mit der Query = voice.teamspeak.com)
- com (mit der Query = voice.teamspeak.com)

Zweites Beispiel (mit längerem Hostnamen)

hostname=i.will.roxx.your.soxs.myclan.com

- your.soxs.myclan.com (mit der Query = i.will.roxx.your.soxs.myclan.com)
- soxs.myclan.com (mit der Query = i.will.roxx.your.soxs.myclan.com)
- myclan.com (mit der Query = i.will.roxx.your.soxs.myclan.com)
- com (mit der Query = i.will.roxx.your.soxs.myclan.com)

Drittes Beispiel (mit kurzem Hostnamen)

hostname=myclanrocks.net

- myclanrocks.net (mit der Query = myclanrocks.net)
- net (mit der Query = myclanrocks.net)

Sollte eine dieser Anfragen erfolgreich sein, verbindet sich der TS3-Client mit dem TSDNS-Server, dessen Antwort zuerst kam. Sollten alle TSDNS-Serveranfragen scheitern, wird der TeamSpeak-Client auf herkömmliche Weise versuchen, die DNS des Hostnamens aufzulösen.


SRV-Einträge

Ab der Client-Version 3.0.8 unterstützt der TS3-Client das Nachschlagen von sog. SRV-Einträgen (SRV records) zusätzlich zu den normalen Hostnamenauflösungen, die er auch weiterhin durchführt. Indem Ihr SRV-Einträge zu Eurer Nameserver-Konfiguration hinzufügt, könnt Ihr damit den TSDNS-Server ersetzen; z.B. könntet Ihr einen Eintrag hinzufügen wie: "_ts3._udp.myclanrocks.net. 86400 IN SRV 10 5 4321 myclanrocks.net."

Dies würde auch das oben genannte Problem lösen, da es Clients ermöglicht, sich mit Eurem TS3-Server auf einem nicht-standardmäßigen Port, wie 4321, zu verbinden, indem diese einfach "myclanrocks.net" als Serveradresse angeben.

SRV-Einträge werden nicht nur unterstützt, um auf einen TS3-Server zu verweisen, sondern auch, um auf einen TSDNS-Server zu verweisen. Dadurch könnt Ihr den TSDNS-Server auf beliebigen Maschinen und Hosts laufen lassen und bietet trotzdem weiterhin Eurer gewünschten Domain den entsprechenden Service. Um einen SRV-Eintrag hinzuzufügen, der zu Eurem TSDNS-Server verweist, müsst Ihr folgendes Format anwenden:

"_tsdns._tcp.teamspeak.com. 86400 IN SRV 0 0 41144 voice.teamspeak.com."


Die Frage, die sich stellt, ist, welche Reihenfolge bei diesen verschiedenen Auflösungsmethoden verwendet werden soll:

#1 _ts3 SRV record
#2 _tsdns SRV record
#3 TSDNS
#4 DNS


Anwendung

1.) Editiert die Konfigurationsdatei "tsdns_settings.ini" im Verzeichnis "tsdns" Eures TeamSpeak-3-Servers.

2.) Fügt beliebige "Anfrage=Ergebnis"-Paare in die neue Datei ein, wie z.B.

foo.bar.host.com=123.34.45.132:5437
baz.host.com=44.23.55.109.245:11555
qux.host.com=111.222.33.44:5556
myotherhostname.com=1.2.3.4
*=14.5.11.66:$PORT

In dem oben genannten Beispiel ist der TSDNS-Server aktiv und sollte per "host.com" und "myotherhostname.com" erreichbar sein; die Zusätze "foo.bar", "baz" und "qux" müssen nicht Teil eines registrierten Dommainnamens sein, sondern können beliebig gewählt werden.
Wenn Ihr den Port auf der rechten Seite weglasst, dann wird der Standardport für TS3 (9987) vorausgesetzt. Wenn Ihr anstelle eines tatsächlichen Ports den String "$PORT" einfügt, wird der Client bei Verbindung den von ihm aus festgelegten Port verwenden.
Ein Stern "*" auf der linken Seite des Paares bewirkt, dass eine Standard-Antwort gegeben wird, falls die anderen Antworten nicht zutreffen. Wenn sich also jemand, wie im Beispiel, mit "host.com:4500" verbindet, wird der TSDNS-Server die Clients nach "14.5.11.66:4500" verweisen, da es "host.com" auf der linken Seite nicht finden kann und somit den Standardeintrag verwendet.
Eine Zeile wie "*=1.2.3.4:$PORT" ist immer gut als Absicherung, falls Ihr eine "Domain:Port"-Änderung durchführen wollt.

3.) Startet die ausführbare Datei "tsdnsserver" (sieht je nach Betriebssystem anders aus). Das Programm wird Euch jegliche Fehler in der ini-Datei auf der Konsole mitteilen bzw. wird Euch bei Erfolg anzeigen, wieviele Einträge überprüft wurden.


Die Datei "tsdns_settings.ini" aktualisieren, während der TSDNS-Server läuft

Editiert einfach die Datei "tsdns_settings.ini" und startet dann einen zweiten TSDNS-Server, diesmal jedoch mit dem Parameter "--update", den Ihr in der Kommandozeile dem eigentlichen Befehl hinzufügt. Der neugestartete Prozess wird sich sofort beenden und der alte Prozess wird etwas ausgeben, wie:

"Scanned tsdns_settings.ini, number of entries: 56"



Zurück zur Kategorie: TeamSpeak 3 Server

Zurück zur Hauptseite








Kommentare
blog comments powered by Disqus