TeamSpeak: Namen statt Nummern

Anküpfend an meinen Post (Link), 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.

1&1 A-Record

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?
(was eigentlich gesendet wird: „ohne-name.de“)

TSDNS -> Client

Hallo Client. IP und Port, zu denen du dich verbinden sollst, sind: „5.9.150.77:9987″
(eigentlich: „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:

  1. _ts3 SRV-Record
  2. _tsdns SRV-Record
  3. TSDNS
  4. 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 Artikel 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.

Olympiadorf – Sprungturm

Im Zuge des Projektes Olympiadorf auf UFEN habe ich als erste Disziplin einen Sprungturm gebaut, den man vielleicht noch von UGCraft kennt. Das Prinzip ist nämlich das selbe: Man springt oben runter und muss ein Loch treffen.

Diese Slideshow erfordert aktiviertes JavaScript.

Die Löcher können einzeln „angeschaltet“ werden. Ist ein Loch eingeschaltet, leuchtet es. Außerdem ertönt dann ein schöner Ton, wenn man das Loch trifft. Und ein Licht geht an. Aber das tut nichts zur Sache. Außer, dass es lange gebraucht hat, das zu bauen.

Diese Slideshow erfordert aktiviertes JavaScript.

BF3-BF4

Battlefield 3 vs. Battlefield 4

Ich mag Battlefield 3 richtig gerne. Es ist für mich der beste Shooter, den ich je gespielt habe. Nunja, so viele habe ich jetzt nicht gespielt. Aber ich liebe diese großen Schlachtfelder, auf denen man sich vor allem bei kleineren Servergrößen schön im Schatten bewegen kann; die Fahrzeugkämpfe, in denen nicht immer der gewinnt, von dem man es gedacht hätte; das Verhalten der Waffen in den Kämpfen der Infanterie. Ich spiele wirklich alle Klassen gerne und auch alle Spielmodi.

Dementsprechend hatte ich eine ziemlich große Vorfreude auf Battlefield 4. Das Spiel wurde ja auch gehypet wie kein zweites. Dennoch habe ich mich großer Vorfreude darauf gewartet, endlich meine Finger an die neuen Waffen, Fahrzeuge und Karten zu bekommen. Immerhin versprach man noch größere und rasantere Schlachten mit dem neuen Element Wasser. Und die Levolution sah auch richtig nett aus. So dachte ich zu Anfang …

Weiterlesen