Ah hoi hoi zusammen und seid gegrüßt zu meinem neuen Blogpost!

Wer sich öfter mal auf Teamspeak- oder Minecraft-Servern rumtreibt, wird sicher schon gemerkt haben, dass für diese Dienste öfter extra eigene Subdomains angelegt werden. Beispielsweise erreicht man den Minecraft-Server über play.example.com und den Teamspeak-Server über ts.example.com.

Dieser Weg wird häufig gewählt, weil der Web-, Minecraft- und Teamspeak-Server jeweils auf einem eigenen Rechner mit eigener IP-Adresse läuft. Um also die Webseite, den Teamspeak- und Minecraftserver über example.com erreichen zu können, müssen alle drei Dienste über dieselbe IP-Adresse erreichbar sein. Falsch!

Zum Glück gibt es SRV-Records!

Anstatt für den Minecraft- und Teamspeak-Server jeweils einen eigenen CNAME- oder A-Record anzulegen, ist es viel eleganter jeweils einen SRV-Record anzulegen. Denn sowohl der Minecraft-, als auch der Teamspeak-Client überprüft zunächst bei jedem Versuch sich mit einen Server zu verbinden, ob ein SRV-Record existiert, der ihm die benötigten Informationen mitteilt.

Für Minecraft sieht der SRV-Record folgendermaßen aus:
_minecraft._tcp.example.com

Und für Teamspeak so:
_ts3._udp.example.com

Nach genau diesen Einträgen sucht der Minecraft- bzw. Teamspeak-Client, wenn dieser sich mit example.com verbinden soll. Der erste Teil _minecraft bzw. _ts3 steht für die Identifikation des Dienstes. Anschließend trennt ein Punkt diesen mit dem nächsten Teil, der das Protokoll angibt. Also _tcp oder _udp. Der letzte Teil ist die Domain. Hier kann auch problemlos eine Subdomain angegeben werden z.B. _minecraft._tcp.sub.example.com

Woher weiß denn nun der Client, mit welcher IP-Adresse (und über welchen Port) er sich verbinden soll?

Der SRV-Record besteht natürlich noch aus einem zweiten Teil. In diesem Teil können vier Parameter gesetzt werden: Priorität, Gewicht, Port und Server. Priorität und Gewicht sind nur von Interesse, wenn mehrere Dienste mit mehreren Servern für Redundanz verwendet werden. Aber im Normalfall können beide Werte getrost auf null gesetzt werden.

Der Port muss natürlich dem jeweiligen Dienst entsprechend gesetzt werden. Standardmäßig hört der Minecraft-Server auf den Port 25565 und der Teamspeak-Server auf den Port 9987.

Funfact: Will man auf einem Rechner mit nur einer IP-Adresse mehrere Serverdienste betreiben, so muss man vom Standardport abweichen. Es ist aber extrem unschön, wenn man beim Verbinden auf einen Server zusätzlich noch den Port angeben muss wie z.B. play.example.com:25566. Mit einem SRV-Record ist das nicht mehr nötig, da man über diesen dem Client sagen kann, über welchen Port er sich verbinden soll.

Beim Server-Parameter kann man sich aussuchen, ob man eine Domain oder direkt eine IP-Adresse einträgt. Das kann jeder so machen, wie er will.

Hier seht ihr zum Abschluss noch, wie die SRV-Records bei meinem Nameserveranbieter Cloudflare aussehen. Ich hoffe ich konnte euch weiterhelfen! Bei Fragen einfach einen Kommentar schreiben. 🙂

srv_minecraft
srv_ts3