Difference between revisions of "Linux dedicated server/de"

From Team Fortress Wiki
Jump to: navigation, search
m
(Die SteamCMD Version übersetzt und an einigen Orten angepasst)
Line 1: Line 1:
{{DISPLAYTITLE:Linux dedizierte Server}}
+
{{ambox | type = notice | image = Ambox_notice.png | contents = '''Diese Anleitung''' setzt Grundwissen im Umgang mit einer '''Unix Shell (Konsole)''' voraus..}}
{{ambox | type = notice | contents = Diese Anleitung setzt Grundwissen im Umgang mit einer Unix Shell (Konsole) voraus.}}
 
  
Linux ist eine der zwei Plattformen, die zum aktuellen Zeitpunkt von Valves dediziertem Servertool (HLDS) unterstützt wird. Das andere unterstützte Betriebssystem ist [[Windows dedicated server|Microsoft Windows]]. Trotz der unterschiedlichen Plattform ist die Einrichtung und Konfiguration für Beide nahezu identisch. Ausnahmen stellen jeglich die benutzten Libaries, Package-Namen und Pfade da. Diese könnten sich auch bei verschiedenen Linux-Distributionen unterscheiden. Daher wird empfohlen, die entsprechenden Repositories vor der Serverinstallation nach den verwendeten Packages zu durchsuchen.
+
Dies ist eine Anleitung, die erklärt, wie man einen ''[[Team_Fortress_2/de|Team Fortress 2]]'' '''Linux dedizierten Servers''' erstellt. Im folgenden Beispiel wird der [[Servers/de|Server]] im Heimatsverzeichnis des Users, in einem Ordner namens 'hlserver' erstellt.
 +
 
 +
Die Installation und Konfiguration des '''Linux dedizierten Servers''' ist für alle Distributionen gleich, jedoch gibt es kleine Unterschiede von Distribution zu Distribution, z.B. die Paket-Namen, Verzeichnisse o.ä. Es wird empfohlen, dass die benötigten Pakete vor der Installation des Servers überprüft werden.
  
 
== Artikelnotation ==
 
== Artikelnotation ==
 
 
Dieser Artikel wurde gemäß dem dokumentierten Linux Standard-Syntax geschrieben. Dies schließt ein:
 
Dieser Artikel wurde gemäß dem dokumentierten Linux Standard-Syntax geschrieben. Dies schließt ein:
  
Line 13: Line 13:
  
 
== Voraussetzungen ==
 
== Voraussetzungen ==
 
 
Es gibt eine Reihe von Voraussetzungen um einen Team Fortress 2 Server unter Linux zu betreiben, diese sind:
 
Es gibt eine Reihe von Voraussetzungen um einen Team Fortress 2 Server unter Linux zu betreiben, diese sind:
  
 
* Schreibzugriff auf das aktuelle Arbeitsverzeichnis
 
* Schreibzugriff auf das aktuelle Arbeitsverzeichnis
 
* <code>glibc >= 2.3.6</code>
 
* <code>glibc >= 2.3.6</code>
* Mindestens 5 GB freien Speicherplatz (für einen Standardserver ohne Customcontent wie zusätzliche Maps, Sounds, etc.)
+
* Ungefähr 4.49 GB freien Speicherplatz (für einen Standardserver ohne Customcontent wie zusätzliche Maps, Sounds, etc.)
* Im Falle einer 64-bit Distribution wird das Package '''lib32gcc1''' benötigt.
+
* Im Falle einer 64-bit Distribution wird das Package '''lib32gcc1''' oder '''ia32-libs''' benötigt:
 +
 
 +
Auf 64-bit CentOS:
 +
 
 +
<code># yum install libgcc.i686 glibc.i686</code>
 +
 
 +
Auf 64-bit Debian/Ubuntu/Linux Mint:
 +
 
 +
<code>$ sudo apt-get install lib32gcc1 ia32-libs</code>
 +
 
 +
Für x86_64 Arch Linux siehe [https://developer.valvesoftware.com/wiki/SteamCMD#Arch_Linux hier]{{lang icon|en}}
 +
 
 +
* Wenn der Server auf CentOS installiert wird, muss dieses Kommando vorher benutzt werden: <code>yum install ncompress</code>
 +
* Wenn der Server auf FreeBSD (das nicht Linux ist) installiert wird, muss die Linux-Kompatibilität im Kernel eingeschaltet werden, sowie ein Basis-System via der Portsammlung installiert werden. Genauere Anweisungen sind [http://www.ian-justman.com/wiki/index.php?title=HowTos:SRCDS_under_FreeBSD hier]{{lang icon|en}} zu finden.
 +
 
 +
==Download und Installation des SteamCMD Tools==
 +
 
 +
'''Es wird empfohlen, dass ein separater User (z.B. "Gameserver") angelegt wird, um den Server zu installieren und zu betreiben.'''
 +
 
 +
*Zuerst wird die SteamCMD-Datei runtergeladen:[http://media.steampowered.com/client/steamcmd_linux.tar.gz steamcmd_linux.tar.gz] oder
 +
wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
 +
*Verwenden SIe tar um die Datei in einen Ordner zu entkomprimieren, z.B. './hlserver' :
 +
tar zxf steamcmd_linux.tar.gz
 +
 
 +
==Ein SteamCMD Startscript erstellen==
 +
*Erstellen Sie eine Datei namens tf2_ds.txt im Ordner wo SteamCMD installiert wird, z.B. './hlserver'
 +
*Bearbeiten Sie die Datei mit einem Texteditor und fügen Sie diesen Text ein:
 +
@ShutdownOnFailedCommand 1
 +
@NoPromptForPassword 1
 +
login anonymous
 +
force_install_dir ./tf2
 +
app_update 232250
 +
quit
 +
 
 +
Wenn Sie die Beta Version von Team Fortress 2 auf dem Server spielen wollen, fügen Sie dies vor die app_update Zeile:
 +
beta prerelease
 +
 
 +
==Ein Updatescript erstellen==
 +
*Erstellen Sie eine Datei namens update.sh im Ordner wo SteamCDM installiert wird, z.B. './hlserver'
 +
*Bearbeiten Sie die Datei mit einem Texteditor und fügen Sie diesen Text ein:
 +
#!/bin/sh
 +
./steamcmd.sh +runscript tf2_ds.txt
 +
 
 +
==Den Download starten==
 +
*Führen Sie ./update.sh aus, um den Download zu starten. Dies kann mehrere Minuten bis zu Stunden dauern, je nach Geschwindigkeit der Internetverbindung, da der Inhalt des Servers 4.4 GB beträgt.
 +
*Wenn unerwarteterweise der Zugriff nicht gewährt wird, müssen Sie dieses Kommando ausführen:
 +
chmod +x update.sh
 +
*Unter Umständen müssen Sie die Datei mehrmals ausführen, bis die Nachricht "Success! App '232250' fully installed." erscheint.
 +
 
 +
==Serverdateien erstellen/anpassen==
 +
*Erstellen Sie eine Datei namens server.cfg im Verzeichnis '~/hlserver/tf2/tf/cfg'
 +
*Bearbeiten Sie die Datei mit einem Texteditor und fügen Sie diesen Text ein:
 +
hostname "Ihr_Server_Name"
 +
rcon_password "Ihr_RCON_Passwort"
 +
sv_contact "name@ihredomain.tdl"
 +
mp_timelimit "30"
 +
* Die Dateien motd.txt, maplist.txt and mapcycle.txt befinden sich alle im Verzeichnis '~/hlserver/tf2/tf'. modt.txt ist die Datei, deren Inhalt als MODT ("Message of the Day", Nachricht des Tages) beim Betreten des Servers angezeigt wird. maplist.txt ist eine Liste aller Maps, mapcycle.txt bestimmt die Maprotation.
 +
 
 +
==Ein Shellscript erstellen==
 +
*Erstellen Sie eine Datei namens tf.sh im Verzeichnis './hlserver/'
 +
*Bearbeiten Sie die Datei mit einem Texteditor und fügen Sie diesen Text ein:
 +
#!/bin/sh
 +
tf2/srcds_run -game tf +sv_pure 1 +map ctf_2fort.bsp +maxplayers 24
 +
Die Werte +map und +maxplayers können angepasst werden. +map ist der Name der Map, mit der der Server startet, +maxplayers ist die Anzahl verfügbarer Slots.
 +
*Führen Sie die Datei tf.sh aus, um den Server zu starten.
 +
 
 +
=== Andere Kommandos ===
 +
 
 +
Hier einige andere, häufig benutzte Kommandos für den Team Fortress Linux dedizierter Server:
 +
 
 +
* <code>+ip 1.2.3.4</code> - Den Server an eine spezifische IP binden. Normalerweise hört er auf alle Netzwerkschnittstellen.
 +
* <code>-port 27015</code> - Den Server an einen spezifischen Port binden, standartmässig wird der Port 27015 verwendet.
 +
* <code>-strictportbind</code> - Wenn der Server schon auf einem spezifischen Port läuft, kann damit der Server angehalten werden.
 +
* <code>+randommap</code> - Verwenden Sie dieses Kommando anstelle von +map, um eine zufällige Map auszuwählen.
 +
* <code>+serverconfigfile</code> - Hier können Sie ändern, welche Konfigurationsdatei innerhalb von tf/cfg/ bei einem Mapwechsel ausgeführt werden soll, standartmässig st dies die Datei server.cfg
 +
* <code>+mapcyclefile</code> - Hier können Sie ändern, welche Konfigurationsdatei innerhalb von tf/cfg/ den Mapcycle enthält, standartmässig ist dies die Datei mapcycle.txt. Kann auch gebraucht werden, um Dateien innerhalb von tf/ auszuwählen.
 +
* <code>-replay</code> - Führt replay.cfg aus und fügt einen zusätlichen Bot als Replay-Bot hinzu, aber es verringert die Slotanzahl um 1.
 +
* <code>-autoupdate</code> - Versucht den Server automatisch zu updaten, sollte ein Update erscheinen. Sie MÜSSEN -steam_dir und -steamcmd_script dafür benutzen.
 +
* <code>-steam_dir ~/hl1server/</code> - Ort der SteamCMD Datei. Wird von <code>-autoupdate</code> benötigt.
 +
* <code>-steamcmd_script ~/hl1server/tf2_ds.txt</code> - Das SteamCMD Script, um den Server zu updaten. Wird von <code>-autoupdate</code> benötigt.
 +
* <code>+sv_shutdown_timeout_minutes 360</code> - Wenn der Server automatisch geupdatet wurde, nach wie vielen Minuten soll der Server neu gestartet werden. Standartmässig sind es 360 Minuten (6 Stunden).
 +
 
 +
=== Screen ===
 +
Viele Server Administratoren betreiben ihren Server mit [http://www.gnu.org/software/screen/ <code>Screen</code>] {{lang icon|en}}, da damit einfach zwischen der Server-Konsole und der Shell hin- und hergewechselt werden kann. Des weiteren kann man damit die SSH Session beenden, ohne den Server zu stoppen. Screen kann via des Paketmanagers Ihrer Distribution installiert werden, z.B. auf Debian:
 +
 +
#apt-get install screen
 +
 
 +
Nach der Installation von Screen kann mit folgendem Kommando der Server gestartet werden:
 +
 
 +
$ screen -m -S {{botignore|tf2}} ./srcds_run ''Parameter''
 +
 
 +
wobei ''Parameter'' die normalen <code>srcds_run</code> Parameter sind. Sie können {{key|Ctrl}}+{{key|A}}+{{key|D}} verwenden, um die Konsole zu minimieren, und <code>screen -r tf2</code> um die Konsole wieder zu öffnen. {{key|Ctrl}}+{{key|D}} beendet die Session und stoppt den Server, jedoch sollte zuerst das <code>killserver</code> Kommando verwenden, um den Server zu beenden. Mit {{key|Ctrl}}+{{key|A}}+{{key|[}} können Sie durch die Konsole scrollen. Lesen Sie die [http://www.gnu.org/software/screen/manual/screen.html Anleitung] {{lang icon|en}} zu Screen durch, um mehr Informationen zu erhalten.
 +
 
 +
=== Automatischer Serverstart nach Servercrash ===
 +
Nach einem unerwarteten Crash des ganzen Servers, z.B. nach einem Stromausfall, kann es nützlich sein, den Team Fortress Linux Desizierten Server automatisch aufstarten zu lassen. Das folgende Debian LSB init Script kann verwendet weden, um den Server automatisch starten zu lassen. Hierbei wird <code>Screen</code> verwendet. Das Script wird tf2-server genannt und in den Ordner /etc/init.d gelegt. Nachdem dies geschehen ist, sollte folgendes Kommando ausgeführt werden:
 +
 
 +
$ update-rc.d tf2-server defaults
 +
 
 +
Dies sollte einen reibungslosen Start des Servers nach jedem Neustart ermöglichen. Folgend, der Inhalt des Scripts:
 +
 
 +
<pre>
 +
#!/bin/sh
 +
 
 +
### BEGIN INIT INFO
 +
# Provides:          tf2server
 +
# Required-Start:    $remote_fs
 +
# Required-Stop:    $remote_fs
 +
# Default-Start:    2 3 4 5
 +
# Default-Stop:      0 1 6
 +
# Short-Description: Team Fortress 2 server
 +
# Description:      Starts a Team Fortress 2 server
 +
### END INIT INFO
 +
 
 +
NAME="Team Fortress 2"
 +
USER="tf2server"
 +
SCREENREF="tf2"
 +
BINARYPATH="/home/tf2server/hlserver/tf2"
 +
BINARYNAME="srcds_run"
 +
PIDFILE="tf2server.pid"
 +
 
 +
OPTS="-game tf +sv_pure 1 +maxplayers 32 +ip 0.0.0.0 +map mvm_decoy -autoupdate -steam_dir /home/tf2server/hlserver/ -steamcmd_script /home/tf2server/hlserver/tf2_ds.txt +sv_shutdown_timeout_minutes 5"
 +
 
 +
cd "$BINARYPATH"
 +
 
 +
running() {
 +
    if [ -n "`pgrep -f $BINARYNAME`" ]; then
 +
        return 0
 +
    else
 +
        return 1
 +
    fi
 +
}
 +
 
 +
start() {
 +
    if ! running; then
 +
        echo -n "Starting the $NAME server... "
 +
        start-stop-daemon --start --chuid $USER --user $USER --chdir $BINARYPATH --exec "/usr/bin/screen" -- -dmS $SCREENREF $BINARYPATH/$BINARYNAME $OPTS
 +
        pgrep -f $BINARYNAME > $PIDFILE
 +
        if [ -s $PIDFILE ]; then
 +
            echo "Done"
 +
        else
 +
            echo "Failed"
 +
            rm $PIDFILE
 +
        fi
 +
    else
 +
        echo "The $NAME server is already started."
 +
    fi
 +
}
 +
 
 +
stop() {
 +
    if running; then
 +
        echo -n "Stopping the $NAME server... "
 +
        kill `cat $PIDFILE`
 +
        while running; do
 +
            sleep 1
 +
        done
 +
        rm $PIDFILE
 +
        echo "Done"
 +
    else
 +
        echo "The $NAME server is already stopped."
 +
    fi
 +
}
 +
 
 +
case "$1" in
 +
    start)
 +
        start
 +
    ;;
 +
    stop)
 +
        stop
 +
    ;;
 +
    restart)
 +
stop
 +
        start
 +
    ;;
 +
    status)
 +
        if running; then
 +
            echo "The $NAME server is started."
 +
        else
 +
            echo "The $NAME server is stopped."
 +
        fi
 +
    ;;
 +
    *)
 +
        echo "Usage: $0 (start|stop|restart|status)"
 +
        exit 1
 +
esac
 +
exit 0
 +
</pre>
  
== Installation ==
+
== iptables Regeln ==
 +
<pre>
 +
-A INPUT -i venet0 -p tcp -m tcp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p tcp -m tcp --dport 27005 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p udp -m udp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p udp -m udp --dport 27005 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p tcp -m tcp --dport 27016 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p tcp -m tcp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p tcp -m tcp --dport 27018 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p tcp -m tcp --dport 27019 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p tcp -m tcp --dport 27020 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p udp -m udp --dport 27016 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p udp -m udp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p udp -m udp --dport 27018 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p udp -m udp --dport 27019 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
-A INPUT -i venet0 -p udp -m udp --dport 27020 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
</pre>
  
Es gibt verschiedene Wege einen dedizierten Server zu betreiben. In diesem Artikel werden wir von einem bestimmten Benutzernamen (''tf2server'') ausgehen, der ausschließlich dazu dient, den Team Fortress 2 Server zu betreiben. Um einen neuen User anzulegen, gibt es dieses Kommando:
+
*Hinweis: Kann gekürzt werden, sofern die multiports Erweiterung installiert sein sollte.
  
# adduser tf2server
+
===CentOS 6.4 (Minimal Installation)===
 +
Bei CentOS 6.4 beinhaltet die standartmässige iptables Regel eine Abweis-Linie, die den gesamten Traffic abweist, wenn die oben genannten Regeln angewendet werden. Um dies zu beheben, sollten Sie zuerst herausfinden, welche Ports benutzt werden:
  
Das Kommando wird nach einem Usernamen, Passwort sowie einiger zusätzlicher Informationen fragen. Bis auf Nutzernamen und Passwort müssen die Felder nicht vollständig ausgefüllt werden. Im Anschluss muss man sich in den neuen Account einloggen, in unserem Beispiel als ''tf2server''.
+
<pre>
 +
netstat -lnptu
 +
</pre>
  
Als nächstes wird ein neues Verzeichnis erstellt, in diesem Falle "hlds" und direkt danach in das neu erstellte Verzeichnis gewechselt.
+
Danach sollte etwas wie folgendes stehen:
 +
<pre>
 +
(Not all processes could be identified, non-owned process info
 +
will not be shown, you would have to be root to see it all.)
 +
Active Internet connections (only servers)
 +
Proto Recv-Q Send-Q Local Address              Foreign Address            State      PID/Program name 
 +
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                  LISTEN      -                 
 +
tcp        0      0 127.0.0.1:25                0.0.0.0:*                  LISTEN      -                 
 +
tcp        0      0 0.0.0.0:27015              0.0.0.0:*                  LISTEN      1393/./srcds_linux 
 +
tcp        0      0 :::22                      :::*                        LISTEN      -                 
 +
tcp        0      0 ::1:25                      :::*                        LISTEN      -                 
 +
udp        0      0 0.0.0.0:27020              0.0.0.0:*                              1393/./srcds_linux 
 +
udp        0      0 0.0.0.0:26901              0.0.0.0:*                              1393/./srcds_linux 
 +
udp        0      0 0.0.0.0:68                  0.0.0.0:*                              -                 
 +
udp        0      0 0.0.0.0:27005              0.0.0.0:*                              1393/./srcds_linux 
 +
udp        0      0 0.0.0.0:27015              0.0.0.0:*                              1393/./srcds_linux
 +
</pre>
  
$ mkdir hlds && cd hlds
+
Die Ports die mit der Beschreibung ./srcds_linux gelistet werden, werden vom Team Fortress 2 Server benutzt. In diesem Fall, Port 27015 benutzt TCP, und die Ports 26901, 27005, 27015 und 27020 benutzen UDP. Diese Ports müssen zu den iptables Regeln hinzugefügt werden, so dass die Firewall diese Ports nicht gegen eingehenden Traffic abblockt.
 +
Um diese Ports zu den Regeln hinzuzufügen, sollten Sie zuerst rausfinden, was im Moment in der iptables Konfigurationsdatei ist. Die beste Idee ist, Ihren Account zur Sudo Gruppe hinzuzufügen, so dass sie zeitbeschränkten Zugriff auf die Datei haben. Sie können aber auch su verwenden, um sich als root Benutzer einzuloggen.
  
Nun müssen wir das Server Updatetool (hldsupdatetool.bin) herunterladen, dessen Ausführungsberechtigungen ändern und es im zweiten Kommando starten.
+
<pre>
 +
sudo iptables -nL --line-numbers
 +
</pre>
  
$ wget http://storefront.steampowered.com/download/hldsupdatetool.bin && chmod +x hldsupdatetool.bin
+
Danach sollte etwas ähnliches wie folgendes erscheinen:
$ ./hldsupdatetool.bin
 
  
Beim Ausführen der Datei werden wir aufgefordert, den Nutzungsbestimmungen von Valve zuzustimmen. Nachdem wir diese durchgelesen haben, bestätigen wir mit "yes" und der Entertaste. Dadurch wird eine neue Binary-Datei im selben Verzeichnis extrahiert, welche ''steam'' heißt. Diese muss ausgeführt werden, um sich auf die aktuellste Version zu updaten:
+
<pre>
 +
Chain INPUT (policy ACCEPT)
 +
num  target    prot opt source              destination       
 +
1    ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED
 +
2    ACCEPT    icmp --  0.0.0.0/0            0.0.0.0/0         
 +
3    ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0         
 +
4    ACCEPT    tcp  -- 0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:22
 +
5    REJECT    all  --  0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited
  
$ ./steam
+
Chain FORWARD (policy ACCEPT)
  Checking bootstrapper version ...
+
num target    prot opt source              destination       
  Getting version 40 of Steam HLDS Update Tool
+
1    REJECT    all -- 0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited
  Downloading. . . . . . . . . . . .
 
Steam Linux Client updated, please retry the command
 
  
Wie gefordert führen wir das Kommando erneut aus damit wir im Anschluss die Gameserver Dateien runterladen können.
+
Chain OUTPUT (policy ACCEPT)
 +
num  target    prot opt source              destination 
 +
</pre>
  
Vorher werden wir ein neues Verzeichnis erstellen, wo die eigentlichen Gameserverdateien gespeichert werden (innerhalb /home/tf2server/hlds). Diesem geben wir den Namen ''gameserver''.
+
Hier werden Sie bemerken, dass in Linie 5 "REJECT all..." steht, d.h. dass Ihr Server jegliche Kommunikation abblockt. Wenn Sie sich dafür entscheiden, die neuen Regeln zu der iptables Konfigurationsdatein hinzuzufügen, wird dies immer noch nicht funktionieren, da die Regeln in der Reihenfolge, in der sie gelistet sind, ausgeführt werden. Um dies zu beheben, müssen Sie folgende Kommandos, als root Benutzer oder mit sudo, ausführen:
  
$ mkdir gameserver
+
<pre>
 +
sudo iptables -I INPUT 5 -p tcp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
sudo iptables -I INPUT 6 -p udp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
sudo iptables -I INPUT 7 -p udp --dport 27005 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
sudo iptables -I INPUT 8 -p udp --dport 27020 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
sudo iptables -I INPUT 9 -p udp --dport 26901 -m state --state NEW,ESTABLISHED -j ACCEPT
 +
sudo service iptables save
 +
sudo service iptables restart
 +
</pre>
  
Durch Eingabe des folgenden Kommandos weisen wir Steam an, die Team Fortress 2 Spieldateien in das angegebene Verzeichnis herunterzuladen:
+
Dies wird die neuen Regeln über die abweisende Regel hinzufügen. Wenn Sie sich die Kommandos anschauen, werden Sie bemerken, dass es eine Sektion gibt, in der "-I INPUT 5,6,7,8,9." steht. Dies bestimmt, welche Regelnummer für diesen Eintrag verwendet wird. Jedes Mal, wenn Sie eine neue Regel hinzufügen, wird die ablehnende Regel um eins nach untern versetzt, so müssen Sie jedes Mal die Regelnummer um eins erhöhen. Wenn Sie trotzdem immer nur  "-I INPUT 5" eingeben, wird dies auch funktionieren, doch die Konfigurationsdatei wird unübersichtlicher. Am Ende sollte die iptables Konfigurationsdatei wie folgend aussehen:
  
  $ ./steam -command update -game tf -dir gameserver/
+
<pre>
 +
Chain INPUT (policy ACCEPT)
 +
num target    prot opt source              destination       
 +
1    ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED
 +
2    ACCEPT    icmp --  0.0.0.0/0            0.0.0.0/0         
 +
3    ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0         
 +
4    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:22
 +
5    ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:27015 state NEW,ESTABLISHED
 +
6    ACCEPT    udp  --  0.0.0.0/0            0.0.0.0/0          udp dpt:27015 state NEW,ESTABLISHED
 +
7    ACCEPT    udp  --  0.0.0.0/0            0.0.0.0/0          udp dpt:27005 state NEW,ESTABLISHED
 +
8    ACCEPT    udp  --  0.0.0.0/0            0.0.0.0/0          udp dpt:27020 state NEW,ESTABLISHED
 +
9    ACCEPT    udp  -- 0.0.0.0/0            0.0.0.0/0          udp dpt:26901 state NEW,ESTABLISHED
 +
10  REJECT    all  -- 0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited
  
Dies führt das Kommando ''update'' für das Spiel ''tf'' (Team Fortress 2) mit dem Zielverzeichnis ''gameserver/'' aus. Der Prozess kann eine ganze Weile dauern.
+
Chain FORWARD (policy ACCEPT)
 +
num  target    prot opt source              destination       
 +
1    REJECT    all  --  0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited
  
== Starten des Servers ==
+
Chain OUTPUT (policy ACCEPT)
 +
num  target    prot opt source              destination
 +
</pre>
 +
This should fix your firewall issues.
  
Wir sind fast fertig. Der Server ist installiert und wartet darauf, mit den richtigen Parametern gestartet zu werden. Wir wechseln ins Verzeichnis ''gameserver/orangebox/'', wo sich das Script <code>srcds_run</code> befindet. Dieses startet den eigentlichen Gameserver. Ein ''beispielhafter'' Aufruf wäre zum Beispiel folgender:
 
  
$ ./srcds_run -game tf -autoupdate -tickrate 66 -maxplayers 24 +map cp_badlands
 
  
Dies würde einen Team Fortress 2 Server mit Tickrate 66, einer maximalen Spieleranzahl von 24 Spielern auf [[Badlands]] starten. Es gibt unzählige Wege einen Server zu konfigurieren und zu starten, für den Anfang sollte dies aber als Basis ausreichen.
+
== Fehlerbeseitigung ==
 +
; Mein Server erscheint nicht im LAN Tab des Server Browsers meines Clients.
 +
; Ich kann mein Ausrüstungsmenü nicht erreichen wenn ich auf diesem Server spiele.
 +
: Sind Sie immer noch in der Lage, den Server mittels <code>[https://developer.valvesoftware.com/wiki/List_of_TF2_console_commands_and_variables#C connect <ip-address>]</code>{{lang icon|en}} in der [https://developer.valvesoftware.com/wiki/Console Entwicklerkonsole]{{lang icon|en}} zu betreten?
 +
: Wird während dem Start des Servers folgendes in der Server Konsole angezeigt?
 +
* Unable to load Steam support library.*
 +
* This server will operate in LAN mode only.*
 +
: Wenn Sie sich mit dem Server verbinden, wird da folgendes angezeigt?
 +
NULL ISteamGameServer in ConnectClient. Steam authentication may fail.
 +
 +
Cannot verify load for invalid steam ID […]
 +
: Wenn dies der Fall ist so müssen Sie sicherstellen, dass sich eine Datei namens <code>steam_app.txt</code>, die die Nummer 440 enthält, in Ihrem <code>orange box</code> Ordner befindet.
  
== Tipps ==
+
; Mein Server wird nicht automatisch geupdatet beim Start.
 +
: Wird folgendes angezeigt, wenn der Server gestartet wird?
 +
ERROR: -autoupdate requires -steam_dir and -steamcmd_script.
 +
WARNING: Failed to locate steam binary.
 +
WARNING: Could not locate steam binary:, ignoring.
 +
: Wenn dies der Fall ist, müssen Sie <code>srcds_run</code> mittels <code>-steam_dir</code> und <code>-steamcmd_script</code> mitteilen, wo Ihr SteamCMD Ordner und Script liegt.
  
# Die <tt>server.cfg</tt> gehört ins Verzeichnis <tt>orangebox/tf/cfg</tt>. Für eine detailiertere Anleitung zur Konfigurierung eines dedizierten Servers findest du unter [[Dedicated server configuration/de|dedizierte Server Konfiguration]].
+
; Mein Server bleibt bei 0/0 während eines Updates stehen.
# Vergiss nicht die Ports 27000 - 27015 in deiner Firewall zu öffnen, falls du eine besitzt.
+
: Wird folgendes während eines Updates angezeigt?
 +
force_install_dir /home/ihr/server/verzeichnis
 +
app_update 232250 validate
 +
Initial App state (0x4) installed
 +
App state (0x4) installed, progress: 0.00 (0 / 0)
 +
Success! App '232250' already up to date.
 +
: Wenn dies der Fall ist, entfernen Sie den "validate" Parameter aus dem Updatekommando.
  
== Weiterführende Links ==
+
== Siehe auch ==
 +
* [[Windows_dedicated_server|Windows dedizierte Server]]
 +
* [[Dedicated_server_configuration/de|Dedizierte Server Konfiguration]]
  
* [[Windows dedicated server/de|Windows dedizierte Server]]
+
[[Category: Servers/de]
* [[Dedicated server configuration/de|Dedizierte Server Konfiguration]]
 
[[Category: Servers/de]]
 

Revision as of 17:33, 19 August 2013

Dies ist eine Anleitung, die erklärt, wie man einen Team Fortress 2 Linux dedizierten Servers erstellt. Im folgenden Beispiel wird der Server im Heimatsverzeichnis des Users, in einem Ordner namens 'hlserver' erstellt.

Die Installation und Konfiguration des Linux dedizierten Servers ist für alle Distributionen gleich, jedoch gibt es kleine Unterschiede von Distribution zu Distribution, z.B. die Paket-Namen, Verzeichnisse o.ä. Es wird empfohlen, dass die benötigten Pakete vor der Installation des Servers überprüft werden.

Artikelnotation

Dieser Artikel wurde gemäß dem dokumentierten Linux Standard-Syntax geschrieben. Dies schließt ein:

  • Der Kommandopräfix # (Raute) weist darauf hin, dass dieses Kommando als Root ausgeführt werden muss. Fast alle Distributionen haben einen separaten Root-Account; für andere Distributionen wie z.B. Ubuntu, Linux Mint, Crunchbang, etc., stellt das Kommandopräfix sudo das Funktionsäquivalent dar, durch welches der folgende Befehl mit Root-Rechten ausgeführt wird.
  • Der Kommandopräfix $ (Dollarzeichen) weist darauf hin, dass dieses Kommando als normaler user ausgeführt werden muss.
  • ./ bedeutet "Aktuelles Arbeitsverzeichnis".

Voraussetzungen

Es gibt eine Reihe von Voraussetzungen um einen Team Fortress 2 Server unter Linux zu betreiben, diese sind:

  • Schreibzugriff auf das aktuelle Arbeitsverzeichnis
  • glibc >= 2.3.6
  • Ungefähr 4.49 GB freien Speicherplatz (für einen Standardserver ohne Customcontent wie zusätzliche Maps, Sounds, etc.)
  • Im Falle einer 64-bit Distribution wird das Package lib32gcc1 oder ia32-libs benötigt:

Auf 64-bit CentOS:

# yum install libgcc.i686 glibc.i686

Auf 64-bit Debian/Ubuntu/Linux Mint:

$ sudo apt-get install lib32gcc1 ia32-libs

Für x86_64 Arch Linux siehe hier(Englisch)

  • Wenn der Server auf CentOS installiert wird, muss dieses Kommando vorher benutzt werden: yum install ncompress
  • Wenn der Server auf FreeBSD (das nicht Linux ist) installiert wird, muss die Linux-Kompatibilität im Kernel eingeschaltet werden, sowie ein Basis-System via der Portsammlung installiert werden. Genauere Anweisungen sind hier(Englisch) zu finden.

Download und Installation des SteamCMD Tools

Es wird empfohlen, dass ein separater User (z.B. "Gameserver") angelegt wird, um den Server zu installieren und zu betreiben.

wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
  • Verwenden SIe tar um die Datei in einen Ordner zu entkomprimieren, z.B. './hlserver' :
tar zxf steamcmd_linux.tar.gz

Ein SteamCMD Startscript erstellen

  • Erstellen Sie eine Datei namens tf2_ds.txt im Ordner wo SteamCMD installiert wird, z.B. './hlserver'
  • Bearbeiten Sie die Datei mit einem Texteditor und fügen Sie diesen Text ein:
@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
login anonymous
force_install_dir ./tf2
app_update 232250
quit

Wenn Sie die Beta Version von Team Fortress 2 auf dem Server spielen wollen, fügen Sie dies vor die app_update Zeile:

beta prerelease

Ein Updatescript erstellen

  • Erstellen Sie eine Datei namens update.sh im Ordner wo SteamCDM installiert wird, z.B. './hlserver'
  • Bearbeiten Sie die Datei mit einem Texteditor und fügen Sie diesen Text ein:
#!/bin/sh
./steamcmd.sh +runscript tf2_ds.txt

Den Download starten

  • Führen Sie ./update.sh aus, um den Download zu starten. Dies kann mehrere Minuten bis zu Stunden dauern, je nach Geschwindigkeit der Internetverbindung, da der Inhalt des Servers 4.4 GB beträgt.
  • Wenn unerwarteterweise der Zugriff nicht gewährt wird, müssen Sie dieses Kommando ausführen:
chmod +x update.sh
  • Unter Umständen müssen Sie die Datei mehrmals ausführen, bis die Nachricht "Success! App '232250' fully installed." erscheint.

Serverdateien erstellen/anpassen

  • Erstellen Sie eine Datei namens server.cfg im Verzeichnis '~/hlserver/tf2/tf/cfg'
  • Bearbeiten Sie die Datei mit einem Texteditor und fügen Sie diesen Text ein:
hostname "Ihr_Server_Name"
rcon_password "Ihr_RCON_Passwort"
sv_contact "name@ihredomain.tdl"
mp_timelimit "30" 
  • Die Dateien motd.txt, maplist.txt and mapcycle.txt befinden sich alle im Verzeichnis '~/hlserver/tf2/tf'. modt.txt ist die Datei, deren Inhalt als MODT ("Message of the Day", Nachricht des Tages) beim Betreten des Servers angezeigt wird. maplist.txt ist eine Liste aller Maps, mapcycle.txt bestimmt die Maprotation.

Ein Shellscript erstellen

  • Erstellen Sie eine Datei namens tf.sh im Verzeichnis './hlserver/'
  • Bearbeiten Sie die Datei mit einem Texteditor und fügen Sie diesen Text ein:
#!/bin/sh
tf2/srcds_run -game tf +sv_pure 1 +map ctf_2fort.bsp +maxplayers 24

Die Werte +map und +maxplayers können angepasst werden. +map ist der Name der Map, mit der der Server startet, +maxplayers ist die Anzahl verfügbarer Slots.

  • Führen Sie die Datei tf.sh aus, um den Server zu starten.

Andere Kommandos

Hier einige andere, häufig benutzte Kommandos für den Team Fortress Linux dedizierter Server:

  • +ip 1.2.3.4 - Den Server an eine spezifische IP binden. Normalerweise hört er auf alle Netzwerkschnittstellen.
  • -port 27015 - Den Server an einen spezifischen Port binden, standartmässig wird der Port 27015 verwendet.
  • -strictportbind - Wenn der Server schon auf einem spezifischen Port läuft, kann damit der Server angehalten werden.
  • +randommap - Verwenden Sie dieses Kommando anstelle von +map, um eine zufällige Map auszuwählen.
  • +serverconfigfile - Hier können Sie ändern, welche Konfigurationsdatei innerhalb von tf/cfg/ bei einem Mapwechsel ausgeführt werden soll, standartmässig st dies die Datei server.cfg
  • +mapcyclefile - Hier können Sie ändern, welche Konfigurationsdatei innerhalb von tf/cfg/ den Mapcycle enthält, standartmässig ist dies die Datei mapcycle.txt. Kann auch gebraucht werden, um Dateien innerhalb von tf/ auszuwählen.
  • -replay - Führt replay.cfg aus und fügt einen zusätlichen Bot als Replay-Bot hinzu, aber es verringert die Slotanzahl um 1.
  • -autoupdate - Versucht den Server automatisch zu updaten, sollte ein Update erscheinen. Sie MÜSSEN -steam_dir und -steamcmd_script dafür benutzen.
  • -steam_dir ~/hl1server/ - Ort der SteamCMD Datei. Wird von -autoupdate benötigt.
  • -steamcmd_script ~/hl1server/tf2_ds.txt - Das SteamCMD Script, um den Server zu updaten. Wird von -autoupdate benötigt.
  • +sv_shutdown_timeout_minutes 360 - Wenn der Server automatisch geupdatet wurde, nach wie vielen Minuten soll der Server neu gestartet werden. Standartmässig sind es 360 Minuten (6 Stunden).

Screen

Viele Server Administratoren betreiben ihren Server mit Screen (Englisch), da damit einfach zwischen der Server-Konsole und der Shell hin- und hergewechselt werden kann. Des weiteren kann man damit die SSH Session beenden, ohne den Server zu stoppen. Screen kann via des Paketmanagers Ihrer Distribution installiert werden, z.B. auf Debian:

#apt-get install screen

Nach der Installation von Screen kann mit folgendem Kommando der Server gestartet werden:

$ screen -m -S tf2 ./srcds_run Parameter

wobei Parameter die normalen srcds_run Parameter sind. Sie können Ctrl+A+D verwenden, um die Konsole zu minimieren, und screen -r tf2 um die Konsole wieder zu öffnen. Ctrl+D beendet die Session und stoppt den Server, jedoch sollte zuerst das killserver Kommando verwenden, um den Server zu beenden. Mit Ctrl+A+[ können Sie durch die Konsole scrollen. Lesen Sie die Anleitung (Englisch) zu Screen durch, um mehr Informationen zu erhalten.

Automatischer Serverstart nach Servercrash

Nach einem unerwarteten Crash des ganzen Servers, z.B. nach einem Stromausfall, kann es nützlich sein, den Team Fortress Linux Desizierten Server automatisch aufstarten zu lassen. Das folgende Debian LSB init Script kann verwendet weden, um den Server automatisch starten zu lassen. Hierbei wird Screen verwendet. Das Script wird tf2-server genannt und in den Ordner /etc/init.d gelegt. Nachdem dies geschehen ist, sollte folgendes Kommando ausgeführt werden:

$ update-rc.d tf2-server defaults

Dies sollte einen reibungslosen Start des Servers nach jedem Neustart ermöglichen. Folgend, der Inhalt des Scripts:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          tf2server
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Team Fortress 2 server
# Description:       Starts a Team Fortress 2 server
### END INIT INFO

NAME="Team Fortress 2"
USER="tf2server"
SCREENREF="tf2"
BINARYPATH="/home/tf2server/hlserver/tf2"
BINARYNAME="srcds_run"
PIDFILE="tf2server.pid"

OPTS="-game tf +sv_pure 1 +maxplayers 32 +ip 0.0.0.0 +map mvm_decoy -autoupdate -steam_dir /home/tf2server/hlserver/ -steamcmd_script /home/tf2server/hlserver/tf2_ds.txt +sv_shutdown_timeout_minutes 5"

cd "$BINARYPATH"

running() {
    if [ -n "`pgrep -f $BINARYNAME`" ]; then
        return 0
    else
        return 1
    fi
}

start() {
    if ! running; then
        echo -n "Starting the $NAME server... "
        start-stop-daemon --start --chuid $USER --user $USER --chdir $BINARYPATH --exec "/usr/bin/screen" -- -dmS $SCREENREF $BINARYPATH/$BINARYNAME $OPTS
        pgrep -f $BINARYNAME > $PIDFILE
        if [ -s $PIDFILE ]; then
            echo "Done"
        else
            echo "Failed"
            rm $PIDFILE
        fi
    else
        echo "The $NAME server is already started."
    fi
}

stop() {
    if running; then
        echo -n "Stopping the $NAME server... "
        kill `cat $PIDFILE`
        while running; do
            sleep 1
        done
        rm $PIDFILE
        echo "Done"
    else
        echo "The $NAME server is already stopped."
    fi
}

case "$1" in
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
	stop
        start
    ;;
    status)
        if running; then
            echo "The $NAME server is started."
        else
            echo "The $NAME server is stopped."
        fi
    ;;
    *)
        echo "Usage: $0 (start|stop|restart|status)"
        exit 1
esac
exit 0

iptables Regeln

-A INPUT -i venet0 -p tcp -m tcp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p tcp -m tcp --dport 27005 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p udp -m udp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p udp -m udp --dport 27005 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p tcp -m tcp --dport 27016 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p tcp -m tcp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p tcp -m tcp --dport 27018 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p tcp -m tcp --dport 27019 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p tcp -m tcp --dport 27020 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p udp -m udp --dport 27016 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p udp -m udp --dport 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p udp -m udp --dport 27018 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p udp -m udp --dport 27019 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i venet0 -p udp -m udp --dport 27020 -m state --state NEW,ESTABLISHED -j ACCEPT
  • Hinweis: Kann gekürzt werden, sofern die multiports Erweiterung installiert sein sollte.

CentOS 6.4 (Minimal Installation)

Bei CentOS 6.4 beinhaltet die standartmässige iptables Regel eine Abweis-Linie, die den gesamten Traffic abweist, wenn die oben genannten Regeln angewendet werden. Um dies zu beheben, sollten Sie zuerst herausfinden, welche Ports benutzt werden:

netstat -lnptu

Danach sollte etwas wie folgendes stehen:

(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:27015               0.0.0.0:*                   LISTEN      1393/./srcds_linux  
tcp        0      0 :::22                       :::*                        LISTEN      -                   
tcp        0      0 ::1:25                      :::*                        LISTEN      -                   
udp        0      0 0.0.0.0:27020               0.0.0.0:*                               1393/./srcds_linux  
udp        0      0 0.0.0.0:26901               0.0.0.0:*                               1393/./srcds_linux  
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               -                   
udp        0      0 0.0.0.0:27005               0.0.0.0:*                               1393/./srcds_linux  
udp        0      0 0.0.0.0:27015               0.0.0.0:*                               1393/./srcds_linux

Die Ports die mit der Beschreibung ./srcds_linux gelistet werden, werden vom Team Fortress 2 Server benutzt. In diesem Fall, Port 27015 benutzt TCP, und die Ports 26901, 27005, 27015 und 27020 benutzen UDP. Diese Ports müssen zu den iptables Regeln hinzugefügt werden, so dass die Firewall diese Ports nicht gegen eingehenden Traffic abblockt. Um diese Ports zu den Regeln hinzuzufügen, sollten Sie zuerst rausfinden, was im Moment in der iptables Konfigurationsdatei ist. Die beste Idee ist, Ihren Account zur Sudo Gruppe hinzuzufügen, so dass sie zeitbeschränkten Zugriff auf die Datei haben. Sie können aber auch su verwenden, um sich als root Benutzer einzuloggen.

sudo iptables -nL --line-numbers

Danach sollte etwas ähnliches wie folgendes erscheinen:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination  

Hier werden Sie bemerken, dass in Linie 5 "REJECT all..." steht, d.h. dass Ihr Server jegliche Kommunikation abblockt. Wenn Sie sich dafür entscheiden, die neuen Regeln zu der iptables Konfigurationsdatein hinzuzufügen, wird dies immer noch nicht funktionieren, da die Regeln in der Reihenfolge, in der sie gelistet sind, ausgeführt werden. Um dies zu beheben, müssen Sie folgende Kommandos, als root Benutzer oder mit sudo, ausführen:

sudo iptables -I INPUT 5 -p tcp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT 6 -p udp --dport 27015 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT 7 -p udp --dport 27005 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT 8 -p udp --dport 27020 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -I INPUT 9 -p udp --dport 26901 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo service iptables save
sudo service iptables restart

Dies wird die neuen Regeln über die abweisende Regel hinzufügen. Wenn Sie sich die Kommandos anschauen, werden Sie bemerken, dass es eine Sektion gibt, in der "-I INPUT 5,6,7,8,9." steht. Dies bestimmt, welche Regelnummer für diesen Eintrag verwendet wird. Jedes Mal, wenn Sie eine neue Regel hinzufügen, wird die ablehnende Regel um eins nach untern versetzt, so müssen Sie jedes Mal die Regelnummer um eins erhöhen. Wenn Sie trotzdem immer nur "-I INPUT 5" eingeben, wird dies auch funktionieren, doch die Konfigurationsdatei wird unübersichtlicher. Am Ende sollte die iptables Konfigurationsdatei wie folgend aussehen:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:27015 state NEW,ESTABLISHED 
6    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:27015 state NEW,ESTABLISHED 
7    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:27005 state NEW,ESTABLISHED 
8    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:27020 state NEW,ESTABLISHED 
9    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:26901 state NEW,ESTABLISHED 
10   REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination 

This should fix your firewall issues.


Fehlerbeseitigung

Mein Server erscheint nicht im LAN Tab des Server Browsers meines Clients.
Ich kann mein Ausrüstungsmenü nicht erreichen wenn ich auf diesem Server spiele.
Sind Sie immer noch in der Lage, den Server mittels connect <ip-address>(Englisch) in der Entwicklerkonsole(Englisch) zu betreten?
Wird während dem Start des Servers folgendes in der Server Konsole angezeigt?
*	Unable to load Steam support library.*
*	This server will operate in LAN mode only.*
Wenn Sie sich mit dem Server verbinden, wird da folgendes angezeigt?
NULL ISteamGameServer in ConnectClient. Steam authentication may fail.
…
Cannot verify load for invalid steam ID […]
Wenn dies der Fall ist so müssen Sie sicherstellen, dass sich eine Datei namens steam_app.txt, die die Nummer 440 enthält, in Ihrem orange box Ordner befindet.
Mein Server wird nicht automatisch geupdatet beim Start.
Wird folgendes angezeigt, wenn der Server gestartet wird?
ERROR: -autoupdate requires -steam_dir and -steamcmd_script.
WARNING: Failed to locate steam binary.
WARNING: Could not locate steam binary:, ignoring.
Wenn dies der Fall ist, müssen Sie srcds_run mittels -steam_dir und -steamcmd_script mitteilen, wo Ihr SteamCMD Ordner und Script liegt.
Mein Server bleibt bei 0/0 während eines Updates stehen.
Wird folgendes während eines Updates angezeigt?
force_install_dir /home/ihr/server/verzeichnis
app_update 232250 validate
Initial App state (0x4) installed
App state (0x4) installed, progress: 0.00 (0 / 0)
Success! App '232250' already up to date.
Wenn dies der Fall ist, entfernen Sie den "validate" Parameter aus dem Updatekommando.

Siehe auch

[[Category: Servers/de]