TeamSpeak: Namen statt Nummern
Anküpfend an meinen Post, in dem ich die Frage aufgestellt habe, warum man eigentlich noch so viele IP-Adressen für TeamSpeak-Server oder ähnliches sieht, kommt hier ein einigermaßen ausführliches Tutorial zum TSDNS. Ich reiße dabei auch noch einmal das Thema SRV-Record im DNS an.
Wieso und weshalb das Ganze habe ich ausfühlich beschrieben, nur waren die Beispiele etwas meh.
A-Records: Die einfachste Variante
Voraussetzung dafür, dass diese Variante ganz ohne Zahlen auskommt, ist, dass der TeamSpeak-Server auf Port 9987 läuft.
Solange das aber gegeben ist, funktioniert die Einrichtung sehr schnell. Wie genau das bei jedem jetzt aussieht, kann ich leider nicht sagen. Die Web-Konsolen sehen da sehr unterschiedlich aus und nennen den A-Record auch teilweise nicht beim richtigen Namen. Wir brauchen aber eine Möglichkeit, DNS-Namen direkt auf IP-Adressen aufzulösen. In unserem Beispiel also so:
voice.ohne-name.de => 5.9.150.77
Bei 1&1 im Domain Center sieht das Ganze zum Beispiel so aus.
Sobald das gespeichert und einige Zeit gewartet wurde, kann man seinen TeamSpeak-Server dann auch über die angegebene Domain bzw. Subdomain aufrufen. Im Beispiel über „voice.ohne-name.de“.
SRV-Records: Dienste im DNS (sehr technisch)
SRV Resource Records im DNS sorgen dafür, dass man über einen Domain-Namen mehrere Dienste ansprechen kann. Ein solcher Record sieht wie folgt aus:
; Domainname TTL Record-Typ Priorität Gewicht Port Host
_ts3._udp.ohne-name.de. 86400 IN SRV 0 5 9987 voice.skyirc.net
Auseinandergedröselt macht das mehr Sinn. TTL und den Record-Typ lassen wir weg, die sind in DNS-Records immer da.
_ts3.
Der erste Teil steht für den Dienst, in diesem Fall TeamSpeak3._udp.
Der zweite Teil gibt das Protokoll an, über das gearbeitet wird. Im Falle von TS3 UDP. Der Unterstrich „_
“ zeigt an, dass es sich nicht um eine gewöhnliche Subdomain handelt.ohne-name.de.
Der Rest des Domainnamens ist der Teil, der später im TS3-Client eingegeben wird. Zum verbinden auf unseren TS-Server gibt man also später „ohne-name.de
“ ein.- Priorität und Gewicht
Diese beiden werden gebraucht, wenn man für einen Dienst mehrere Server hat (z.B. zur Lastenverteilung), normalerweise also uninteressant. Mit der Priorität wird die Stellung der Server in einer Hierarchie festgelegt, wenn es Ausfälle gibt. Zuerst wird der Server mit der kleinsten Priorität ausgewählt, dann der mit der nächst höheren und so weiter. Die Gewichtung gibt an, wie viele Anfragen auf einen bestimmten Server kommen. Je höher die Zahl, desto mehr Anfragen. - Port
9987
Hier wird der Port festgelegt, auf welchen sich der Client verbinden soll. Damit kann man also das lästige:portnummer
loswerden, wenn man nicht auf Port 9987 arbeitet. - Host
voice.skyirc.net
Als letztes setzt man fest, auf welchen Server oder Host man sich überhaupt verbinden soll. Ich könnte hier also auch auf etwas ganz anderes verweisen, z.B. den Public TeamSpeak 3-Server und nicht unseren.
Mehr soll dazu auch nicht gesagt werden, weil das schon ziemlich ans Eingemachte geht. Interessanter ist da nämlicher der …
TSDNS - TeamSpeaks eigener "DNS"-Server
Der TSDNS bedient sich eines sehr einfachen Protokolls. Er läuft auf Port 41144, nimmt Anfragen entgegen, die ausschließlich das enthalten, was man im Client als Server eingibt (also z.B. ohne-name.de) und antwortet dann mit IP und Port des TeamSpeak-Servers. Also z.B.:
Client -> TSDNS
Hallo TSDNS! Mein Benutzer will sich zu „ohne-name.de“ verbinden. Wie sind IP und Port dazu?
TSDNS -> Client
Hallo Client. IP und Port, zu denen du dich verbinden sollst, sind: „5.9.150.77:9987“
Das Nützliche daran ist, dass der TSDNS schon in jeder TeamSpeak-Server Installation drin ist.
Einfach mal in den Unterordner tsdns
gucken.
Anzupassen ist nur die tsdns_settings.ini
, zum Beispiel so (#
heißt Kommentar):
# UFEN -> SkySpeak
voice.ohne-name.de=5.9.150.77:9987
ohne-name.de=5.9.150.77:9987
skid-church.org=5.9.150.77:9987
skid.church=5.9.150.77:9987
# Fallback
*=5.9.150.77:$PORT
Den Server muss man dann nur noch starten, meinetwegen so:
cd /home/teamspeak/server/tsdns/
screen -dmS tsdns ./tsdnsserver_linux_amd64
Wenn man Updates an der .ini gemacht hat, reicht folgender Befehl, um diese zu übernehmen:
./tsdnsserver_linux_amd64 --update
Sobald man sich also zu „ohne-name.de“ verbinden will, antwortet der TSDNS „5.9.150.77:9987“, und der Client gehorcht und verbindet. Dabei ist es egal, ob man einen Port im Client eingegeben hat. Das ist dem TSDNS egal, denn wir übergehen das einfach. Damit hat man auch hier das Problem beseitigt, dass man sich IP und Port merken muss.
Auf den Eintrag ganz unten wird zurückgefallen (deshalb Fallback), wenn der TSDNS die Anfrage nicht kennt. Wenn man ihn also nach „voice.skyirc.net“ fragt, antwortet er „5.9.150.77“ und als Port das, was man im Client eingegeben hat.
Priorisierung - wie entscheidet der Client
Aber wie entscheidet der Client jetzt, welche von den vielen Informationen er jetzt benutzen soll, um eine IP für seinen Domain-Namen zu bekommen. Da gibt es eine ganz einfach Reihenfolge:
- _ts3 SRV-Record
- _tsdns SRV-Record
- TSDNS
- DNS
Zuerst guckt der Client, ob es einen DNS-Record namens „_ts3._udp.ohne-name.de“ gibt. Wenn ja, wird der benutzt.
Wenn nicht, guckt der Client, ob im DNS ein TSDNS-Server eingetragen ist. Also: „_tsdns._tcp.ohne-name.de“.
Wenn nicht, benutzt der Client den TSDNS, den er auf Port 41144 findet.
Wenn da keiner ist, benutzt der Client die IP aus dem DNS - entweder einen A-Record (nur IP) oder CNAME (Alias). Wenn es auch da keinen gibt: Ende.
Fazit
Wie schon im letzten Post beschrieben, finde ich den geringen Mehraufwand mehr als gerechtfertigt. Erst recht, wenn man wie viele Clans auf der Suche nach aktiven Mitspielern ist. Viel zu oft kommt sonst die Frage „Die IP war doch irgendwie 5.7.123.irgendwas, oder? Und wie war der Port?“. „ohne-name.de“ hingegen kann man sich gut merken.
Alles hier zielt jetzt natürlich alles auf jemanden ab, der seinen Server selber hostet. Bei TeamSpeak-Hostern wird das alles etwas anders aussehen. Die SRV-Records funktionieren aber genau so, nur der TSDNS könnte schwierig werden. Da ich mich mit TeamSpeak-Hostern aber genau gar nicht auskenne, kann ich dazu nichts sagen.
Also Leute, Domains für 6€ im Jahr kaufen und eure Spieler glücklicher machen. Bei den Preisen für Battlefield Server gibt man gut und gerne schon 200€ im Jahr dafür aus, da machen 6€ den Kohl auch nicht mehr fett. Und wenigstens eine kleine Website dann auch noch.