Als ich heute etwas durch das Forum geblättert habe, ist mir aufgefallen, dass es - Jahre nach der Veröffentlichung von Half-Life - immer noch Probleme beim Aufsetzten eines Servers gibt. Dass das Einrichten und Betreiben eines richtigen Spielservers einiges an Erfahrung und Wissen benötigt, sollte jedem klar sein, aber für die kleine LAN-Party im Keller oder für das gelegentliche Zocken mit Freunden über das Internet muss der Server ja auch nicht den gehobenen Ansprüchen von kostenpflichtigen Hostern entsprechen.
Ich will hier also Schritt für Schritt erklären, wie schnell man einen kleinen Hobby-Server aufsetzen kann, welche Probleme dabei auftreten und wie man die größten Fehler vermeidet. Da ich selbst noch kaum Erfahrung in Sachen Serverbetrieb habe und ich mir die meisten Informationen im Zuge dieses Artikels selbst angeeignet habe, erhebe ich keinen Anspruch auf Vollständigkeit oder Richtigkeit. Für Verbesserungsvorschläge, Fragen und Tipps bin ich daher gerne zu sprechen.
Welcher Server soll es sein?
Generell gibt es zwei verschiedene Arten von Servern. Entweder man startet nur den Server (dedicated server) oder man lässt sowohl Client als auch Server laufen (listen server). Letzteres ist einfacher, man stößt allerdings bei wachsender Spielerzahl schnell an die Leistungsgrenze seines Computers. Um einen solchen listen server zu erstellen, muss man nur wie gewohnt das gewünschte Spiel starten, Server erstellen auswählen, die nötigen Einstellungen machen und auf OK klicken. Wie man einen dedicated server erstellt, könnt ihr weiter unten nachlesen.
Das Problem mit der Bandbreite
Auch wenn die Telekommunikationskonzerne mal wieder mit riesigen Zahlen für ihre Internetanschlüsse werben, solltet ihr nicht meinen, dass ihr damit genügend Bandbreite habt, um 32 Spieler zulassen zu können. Das Nadelöhr ist nämlich nicht die Geschwindigkeit, mit der ihr Daten herunterladen könnt (down-stream), sondern die Geschwindigkeit beim Senden (up-stream). Bei einem Source-Spiel sollte man zum Beispiel für zwei bis drei Leute schon einen DSL768/128-Anschluss sein Eigen nennen.
Im lokalen Netz spielt die Bandbreite nur indirekt eine Rolle. Das große Problem hier ist meist eine schlechte Netzwerk-Infrastruktur bedingt durch schlechte Hardware (Kabel, Repeater, Switches, Netzwerkkarten oder gar Probleme im Rechner selbst).
IP-Adressen
Vereinfacht gesagt gibt es für unseren Zweck eine Unterscheidung in zwei IP-Adresstypen. Die einen sind aus dem privaten Bereich, beispielsweise 192.168.1.147, die anderen aus dem öffentlichen, zum Beispiel 80.190.246.219. Erstere werden benutzt um im lokalen Netzwerk zu kommunizieren, letztere werden dagegen im Internet benutzt. Haben wir einen Server eingerichtet, so ist dieser nur aus dem lokalen Netzwerk erreichbar und lässt sich über eine IP-Adresse des ersten Typs ansprechen. Ist man aber auch mit dem Internet verbunden, so ist man auch über eine öffentliche IP erreichbar. Ein Spieler im LAN benötigt zum betreten des Servers also die lokale, einer aus dem Internet die globale Adresse, um ein und denselben Server zu erreichen. Um an seine öffentliche Adresse zu kommen, gibt es mehrere Möglichkeiten. Für den Durchschnittsspieler ist es wohl am einfachsten, wenn er einfach mit dem fraglichen Computer auf http://www.wieistmeineip.de/ vorbeisurft und sie sich notiert. Für weitere Informationen zu diesem Thema solltet ihr euch den dazugehörigen Artikel auf Wikipedia durchlesen oder einfach einmal Exalead bemühen.
Installation eines dedizierten Servers
Anmerkung:
Ich habe mich für einen dedizierten HL2-DM-Server entschieden, aber auch das Einrichten für CS:S oder DoD:S sollte kein Problem darstellen. Das Aufsetzen des alten HLDS ist eventuell geringfügig anders, aber im Großen und Ganzen sollte dies auch keine Schwierigkeiten machen. Außerdem sei erwähnt, dass ich hier von einem vorhandenen STEAM-Account ausgehe, es gibt jedoch - zumindest wenn ich den Link auf steampowered.com richtig deute - für Linux und Windows alleine lauffähige Versionen.
Zuerst muss man natürlich den Source Dedicated Server installieren. Dazu melden wir uns bei STEAM an, wählen den Reiter Tools. Aus dem Kontextmenü (rechte Maustaste) wählen wir dann Install game...
Danach klicken wir uns durch die folgenden Dialoge und warten bis dei benötigten Daten geladen sind.
Nun können wir mit einem Doppelklick auf den Eintrag des SRC-DS den Server starten und gelangen in ein Konfigurationsmenü. Dort legen wir die wichtigsten Eckdaten fest. Bei Game wählen wir aus, welches Spiel wir starten möchten. Wenn wir eine Modifikation verwenden wollen, für die kein eigener Eintrag existiert solltet ihr HL2-DM auswählen (weiteres dazu siehe unten). Bei Server Name könnt ihr euch einen Namen ausdenken. Über den Eintrag Network könnt ihr festlegen, ob der Server für das Internet gedacht ist oder für das lokale Netzwerk. Was Max. Players bewirkt, sollte jedem klar sein. Es setzt die Obergrenze für gleichzeitig verbundene Spieler fest. Hier solltet ihr lieber klein anfangen und austesten, wie viele Spieler euer Rechner verträgt. Bei UDP Port belassen wir es bei der Standardeinstellung. Ein wichtiger Eintrag ist noch das RCON Password, mit dem ihr Admin-Rechte auf dem Server erlangen könnt. Wenn alles eingestellt ist könnt ihr den Server starten. Beim ersten Start werden wahrscheinlich noch die eigentlichen Spieldaten nachgeladen, was um einiges länger dauert als die Installation der Serversoftware.
Wer die eingebaute Firewall von Windows oder eine so genannte personal firewall verwendet, wird jetzt vermutlich darüber informiert, dass unser Server sich mit dem angegebenen Netzwerk verbindet und man muss gegebenenfalls ihm dies erlauben. In den meisten Fällen genügt ein Klick auf Unblock, Allow oder wie auch immer die Option bei eurer Firewall beschriftet ist, die eigentlich Konfiguration wird dann meist automatisch vorgenommen. Wer jedoch selbst Hand anlegen muss, der findet die benötigten Portfreigaben weiter unten.
Der Server ist nun grundlegend konfiguriert und sobald man den Wartungsdialog sieht betriebsbereit. Hier kann man sich verschiedene Informationen anzeigen lassen oder über den Reiter Console direkt auf den Server zugreifen. Will man nur im LAN spielen, ist damit der größte Teil der Arbeit getan und man kann sich an die Feinabstimmung machen. Wer einen Internet-Server betreibt, sollte jedoch zur Kenntnis nehmen, dass die angezeigte IP-Adresse aus dem privaten Bereich stammt. Aus dem Internet ist der Server unter einer anderen Adresse zu erreichen (siehe oben).
Die Sache mit den Ports...
Da die meisten inzwischen einen Router verwenden, also nicht mehr direkt mit dem Internet verbunden sind, gibt es jedoch meist lange Gesichter, wenn man seinen Freunden die Adresse des eben eingerichteten Servers mitteilt und diese versuchen über das Internet einem Spiel beizutreten. Der Grund dafür liegt darin, dass auf diesen Routern meist eine (weitere) Firewall läuft und dass man die benötigten Ports hier ebenfalls freigeben muss und per NAT auf den eigentlichen Server weiterleiten - port forwarding genannt - muss. Was genau zu tun ist, hängt natürlich von dem jeweiligen Hersteller und den verwendeten Ports ab, doch mit etwas Suchen wird man ähnliche Einstellungen finden, wie die die ich verwende. Bei Name oder Application kann man einen Namen eintragen, der einen daran erinnert, für welches Programm diese Regel eigentlich gilt. In unserem Fall wäre zum Beispiel "srcds" ein passender Eintrag. Port from gibt an, auf welchem Port der Router aus dem Internet erreichbar sein soll, Port to bestimmt dagegen den Port, auf dem der eigentliche Server Daten entgegen nimmt. Am einfachsten ist es, wenn man einfach die benötigten Ports durchschleift, also bei beiden die gleichen Werte angibt. Bei Protocol steht meist UDP, TCP und both zur Auswahl. Da wir beide benötigen, neben wir letzteres. Unter IP-Address geben wir schließlich die private Adresse unsere Servers an.
Welche Ports man schlussendlich freigeben muss, hängt natürlich von den gewählten Einstellungen ab. Für die meisten Fälle sollte es jedoch folgende Ports tun:
- UDP 1200
- TCP 27015
- UDP 27015
- UDP 27000 bis 27015
- TCP 27030 bis 27039
Ich weise noch einmal darauf hin, dass ich selbst nicht der Fachmann für Server- und Netzwerkfragen bin. Ich habe hier vieles vereinfacht dargestellt und bewusst nicht jede noch so kleine Eventualität beschrieben. Wer Fragen, Probleme oder Anmerkungen hat, der darf sie gerne mir mitteilen.
Mein Server taucht nicht in der Serverliste auf...
Wenn ihr alles richtig gemacht habt könnt ihr euren Server - falls die Adresse bekannt ist - zu euren Favoriten hinzufügen und dort Spielen. Denkt aber daran, dass es eine Weile dauert, bis die Masterserver von STEAM euren Server ebenfalls erkennen und in ihre Listen aufnehmen. Falls dies nicht geschieht solltet ihr in der Konsole des Servers nachlesen, ob es gegebenenfalls Probleme mit der Authentisierung oder ähnliches gibt.
Fernwartung des Servers
RCON steht für remote console und ist ein Fernwartungstool für den Server, welches benutzt wird, wenn man nicht direkt über die Konsole des Wartungsdialogs die Einstellungen ändern kann. Die Handhabung ist extrem einfach: Ist man bereits auf dem zu wartenden Server so geht man einfach in die eigene Konsole und gibt dort rcon_password PASSWORT ein. Gibt man nun rcon BEFEHL ein, wird der BEFEHL nicht auf dem Client, sondern eben auf dem Server ausgeführt. Auch wenn man nicht auf dem Server ist, lässt sich rcon benutzen, zum Beispiel wenn man jemanden vom Server werfen muss, um selbst spielen zu können. Hierzu öffnet man auf dem Client die Konsole und gibt dort wie gewohnt sein RCON-Passwort ein. Man muss jetzt jedoch zusätzlich mit rcon_address IP die Adresse des Servers und mit rcon_port PORT den Serverport festlegen. Jetzt steht einem ebenfalls die remote console des Servers zur Verfügung.
Können auf meinen Server sowohl LAN- als auch Internet-Spieler verbinden?
Leider kann ich hier nichts genaueres sazu sagen. Früher war es beim HLDS über einen Umweg möglich. Wahrscheinlich funktioniert dies immer noch: Erst erstellt man einen lokalen Server und lässt alle Spieler aus dem Netzwerk beitreten, dann setzt man sv_lan auf 0 wodurch nun nur noch Clients aus dem Internet verbinden können. Die alten Teilnehmer aus dem LAN bleiben jedoch ebenfalls mit dem Server verbunden. Wenn jemand neure Informationen hat, bitte posten!
Wie kann ich einen Server für die Modifikation XYZ eröffnen?
Ich habe leider noch keine Erfahrung mit Modifikationen unter Source machen können, aber ich denke es sollte ähnlich wie bei Half-Life ablaufen. Wenn ein Mod keinen eigenen Installer mitliefert, dann kopiert das Modverzeichnis einfach nach X:\Pfad\Zu\Steam\SteamApps\account@name.de\source dedicated server\ und startet srcds.exe mit der Option -game "mod_dir_name"
Ich möchte einen Server ohne Steam-Account betreiben
Auch wer keinen Steam-Account besitzt, kann natürlich einen Server aufmachen. Hierzu ladet ihr euch das HLDS Update Tool von steampowered.com herunter, welches es übrigens auch in einer Linux-Version gibt. Dieses kopiert ihr dann in ein Verzeichnis eurer Wahl und wechselt in der Eingabeaufforderung in eben dieses Verzeichnis. Hier startet ihr das Tool mit folgenden Optionen: hldsupdatetool.exe -command update -game "NAME" -dir PFAD. Dabei ersetzt ihr NAME durch den Namen des zu startenden Spiels, beispielsweise Counter-Strike Source, oder durch das entsprechende Kürzel, zum Beispiel hl2dm. Bei PFAD gebt ihr den vollständigen Pfad zu eurem Verzeichnis an, etwa C:\srcds. Beim ersten Start wird Steam wahrscheinlich nur das Tool selbst aktualisieren, dann müsst ihr es einfach nochmals mit den Parametern starten bis eine Meldung erscheint, dass der Server aktualisiert wurde. Zum aktualisieren verwendet ihr weiterhin das Update tool, den eigentlichen Server startet ihr mit der srcds.exe.
Was hat es mit der "BAD-Challenge from IP:PORT"-Meldung auf sich?
Zitat: Die "Bad Challenge From IP:PORT"-Meldung ist glaub ich keien Fehlermeldung, sondern nur ne Statusmeldung, die besagt, dass ein Client eine veraltete Form der Anfrage benutzt hat. Der Server sollte den Client darauf hinweisen, der dann die Anfrage mit der neuen Methode neuformuliert. Wenn du die Meldung weg haben willstm kannst du einfach sv_enableoldqueries 1 in die Server-Konsole eingeben. Davon wird aber abgeraten, weil es wirklich nur noch für Legacy-Support verwendet werden sollte. (krt) |
Einstellungen für Fortgeschrittene
Wenn alles soweit geklappt hat, kann man sich auch etwas weitergehend mit dem Server beschäftigen. Hier einige interessante Sachen, über die man sich etwas Wissen aneignen sollet:
- In der server.cfg kann man Einstellungen hinterlegen, die ein dedicated server automatisch bei jedem Start setzen soll.
- In der listenserver.cfg kann man Einstellungen hinterlegen, die ein listen server automatisch bei jedem Start setzen soll.
- Um sich die meisten - wenn nciht sogar alle - Variablen anzeigen zu lassen, könnt ihr den Befehl cvarlist und setinfo nutzen.
- Um sich die meisten - wenn nciht sogar alle - Befehle anzeigen zu lassen, könnt ihr den Befehl cmdlist nutzen.
- Mit sv_lan legt ihr fest, ob es ein LAN-Server (1) oder ein Internet-Server (0) ist.
- Der eigentliche Server wird mit map KARTENNAME gestartet. Um lediglich die Karte zu ändern könnt sollte man changelevel KARTENNAME verwenden.
- Ihr könnt den SRCDS auch über die Kommandozeile oder per Stapelverarbeitung starten, zum Beispiel so: srcds.exe -console -secure -dev -autoupdate -game cstrike -ip xxx.xxx.xxx.xxx -port 27015 +maxplayers 16 +sv_lan 0 +map de_dust +developer 3
ch musste mich wie gesagt selbst erst in die Materie einarbeiten. Dabei bin ich über ein paar interessante Webseiten gestoßen, die euch vielleicht euch etwas helfen könnten:<br/>
- support.steampowered.com
- HL2 World Wiki - HL2 Dedicated Server
- HL2 World Wiki - Server Commands
- HL2 World Wiki - Perfect Listen Server
- SRCDS
(krt)