Beiträge von rittmeister

    Im Open Game Panel gibt es zwar die Möglichkeit einen Teamspeak 3 Server via "Rsync Install" zu installieren bzw. zu aktualisieren. Da die Quellserver aber leider in der Regel nicht auf dem aktuellsten Stand sind rate ich grundsätzlich davon ab bzw. empfehle bei einer so durchgeführten Neuinstallation danach noch die aktuellste Version via "Install/Update manually" zu installieren.


    File URL: Link unter welchem das Installationsfile heruntergeladen werden kann. Falls es sich hierbei um einen IIS Webserver handelt muss tar.bz2 als MIME-Type hinterlegt sein
    Destination Filename: Hier kann z.B einfach der Dateiname inkl. Dateiformat der aktuellsten Version übernommen werden


    ACHTUNG: Falls es sich um eine Aktualisierung handelt müssen via "File Manager" die gesperrten Dateien im Hauptinstallationsverzeichnis mittels "Unlock File" zuerst freigegeben werden da die Aktualisierung ansonsten, leider ohne entsprechende Fehlermeldung, fehlschlägt.

    Wenn Applikations- und Datenbankserver auf dem gleichen Host laufen (was grundsätzlich nicht zu empfehlen ist, ausser es wird auf einem Windows Host shared-memory eingesetzt) ist MariaDB in der Regel so konfiguriert dass nur lokale Verbindungen, z.B von einer Webseite im IIS zugelassen sind. Soll nun ein weiterer Host den zentralen Datenbankserver mitbenutzen können müssen folgende Einstellungen angepasst werden:


    MariaDB Server
    Suchen der MariaDB Konfigurationsdatei my.ini, diese liegt in der Regel unter C:\Program Files\MariaDB "Version"\data


    Hier nun den Folgenden Eintrag anpassen:

    Code
    bind-address = 127.0.0.1

    (localhost)
    zu

    Code
    bind-address = 0.0.0.0

    (Alle Interfaces)


    Danach muss der mySQL-Dienst neu gestartet werden. Der MariaDB Server hört nun den ebenfalls in der my.ini hinterlegten Serverport (Standard = 3306) auf allen verfügbaren IP Adressen ab.


    Um dies zu kontrollieren kann das Server Logfile angeschaut werden:

    Code
    2019-06-16 16:21:26, 0, Note, Server socket created on IP: '127.0.0.1'.


    Code
    2019-06-16 16:22:06, 0, Note, Server socket created on IP: '0.0.0.0'.



    Windows Firewall
    Damit ein Remotehost effektiven Zugriff auf den Datenbankserver erhält muss noch der entsprechende Port in der Windows Firewall geöffnet werden (dies gilt natürlich auch für ggf. andere eingesetzte Firewalls zwischen den beiden Hosts).


    - Neue Eingehende Regel erstellen
    - Verbindung zulassen
    - Protokolltyp = TCP
    - Lokaler Port = 3306



    Hier können je nachdem auch noch weitere Einschränkungen/Zulassungen eingetragen werden. Wie sinnvoll dies ist hängt aber stark von der entsprechenden Umgebung ab.



    Trotzdem noch keine Verbindung möglich?
    Auch wenn die beiden Hosts nun untereinander kommunizieren können heisst dies noch nicht das ein Benutzer vom Applikations- auf dem Datenbankserver einloggen kann. Der Datebank User muss entweder den entsprechenden Applikationsserver oder % als Wildcard eingetragen haben damit er auch berechtigt ist sich von einem Remotehost einzuloggen. Hier hilft ebenfalls ein Blick ins Logfile.

    Wie die Meldung schon sagt muss ein entsprechendes Kennwort in der config.inc.php zur Cookie basierten Authentifizierung gesetzt werden. Diese sollte im Hauptverzeichnis der phpMyAdmin Files/Webseite zu finden sein. Falls nicht könnt ihr die config.sample.inc.php als Basis nehmen, entsprechend anpassen und dann als config.inc.php speichern (Berechtigungen beachten - Sicherheitsrisiko!).


    Nun folgende Zeile suchen:

    Code
    $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH!


    Hier nun ein beliebiges Kennwort mit mindestens 32 Zeichen eintragen. Am besten verwendet ihr dazu einen Passwort Generator (z.B in KeePass oder in einer Suchmaschine einfach nach Passwort Generator suchen)


    Code
    $cfg['blowfish_secret'] = 'GJ8r8CnH4wKP4Zi2d9PsU2zLv5t5kzHjtyZ3k53D532y4MYtU8'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH!


    Falls ihr ein zu kurzes Kennwort verwendet habt werdet ihr folgende Fehlermeldung erhalten:

    Code
    Die geheime Passphrase in der Konfiguration (blowfish_secret) ist zu kurz.

    Der Teamspeak 3 Server wurde nun ebenfalls wie angekündigt auf die neue Infrakstruktur migriert. Bis Ende August werden User welche auf die alte IP connecten automatisch auf die neue verbunden. Danach wird der alte Server abgestellt und der TS3 Server ist nur noch via die neue IP 77.109.133.22 oder via DNS ts.skv-net.ch erreichbar. Bitte in den Teamspeak Server Favoriten entsprechend aktualisieren.


    Auf den Servern selber wird in der Übergangsphase eine entsprechende Meldung angzeigt.

    Trotz guter Planung und der Verwendung von DNS Einträgen statt IP Adressen lässt es sich bei einem Serverumzug oder einer Migration bei der die IP des neuen Host ändert fast nicht vermeiden dass ein Teil des Traffics vorübergehend noch auf dem alten Server landet. Um die Folgen davon zu eliminieren bzw. abzuschwächen kann dieser Traffic mittels iptables weitergeleitet werden.


    Den Ausschlag diese kleine Anleitung zu schreiben hat der Umzug unseres Teamspeak 3 Servers auf einen neuen Host gegeben. Da der TS3 Server mit einer NPL Lizenz zwar grundsätzlich auf mehreren authorisierten IP Adressen läuft, aber jeweils nur auf einer gleichzeitig konnte der präferenzierte Plan mit einem Parallelbetrieb in einer Übergangsphase nicht umgesetzt werden. Deshalb soll der TS3 Server nur noch auf der neuen Infrastruktur laufen und für Clients welche auf die alte IP verbinden wird der Traffic automatisch vom alten Host zwischen TS3 Client und neuem TS3 Server "durchgeschleust".

    Was dabei beachtet werden muss:

    - Der User bemerkt nicht dass er weitergeleitet wurde, ihm wird im Teamspeak 3 Server immer noch die alte IP auf welche er connected hat angezeigt
    - Für den neuen Host haben alle weitergeleiteten Pakete den alten Host als Absender und nicht die des Endusers


    Code
    echo "1" > /proc/sys/net/ipv4/ip_forward


    oder

    Code
    sysctl net.ipv4.ip_forward=1


    Code
    iptables -A PREROUTING -t nat -i eth0 -p udp --dport 9987 -j DNAT --to-destination 10.10.100.100:9987
    iptables -A FORWARD -p udp -d 10.10.100.100 --dport 9987 -j ACCEPT
    iptables -A POSTROUTING -t nat -j MASQUERADE


    Bei mehreren Ports einfach Zeilen 1+2 ensprechend angepasst erneut ausführen.


    Für andere Dienste/Anwendungszwecke müssen In- und Output Adressen ggf. angepasst werden. Statt eth0 als Input kann z.B auch eine IP verwendet werden oder der Traffic auch auf einen Zielport welcher ungleich dem Quellport ist weitergeleitet werden. Das Protokoll, in diesem Fall UDP muss natürlich auch stimmen. Es kann auch komplett aller Traffic portunabhängig weitergeleitet werden, aber aufpassen dass ihr euch nicht selber aussperrt dadurch 8)



    Falls Kernel Module fehlen:

    Code
    Networking Support -> Networking Options -> Network packet filtering framework (Netfilter) -> Core Netfilter Configuration ->  -*- Netfilter Xtables support (required for ip_tables)


    und

    Code
    Networking Support -> Networking Options -> Network packet filtering framework (Netfilter) -> IP: Netfilter Configuration -> <*> IP tables support (required for filtering/masq/NAT)


    Dies äussert sich durch Fehlermeldungen wie

    Code
    iptables v1.6.1: can't initialize iptables table `nat': Table does not exist (do you need to insmod?) Perhaps iptables or your kernel needs to be upgraded.


    beim anlegen der Rules.

    Manchmal ist es am effizientesten bestehendes abzuräumen und auf grüner Wiese frisch anzufangen. Um alle iptables Regeln zu löschen bzw. um den ursprünglichen Zustand wiederherzustellen geht man am besten wie folgt vor:


    Policy Accept setzen um sich nicht verstehentlich auszusperren:

    Code
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT



    Regeln löschen:

    Code
    iptables -t nat -F
    iptables -t mangle -F
    iptables -F
    iptables -X



    Kontrolle:

    Code
    iptables -S


    bzw.

    Code
    iptables -L


    bzw.

    Code
    iptables -t nat -L -n -v


    bzw.

    Code
    iptables -t mangle -L -n -v

    Hilft auch bei folgender Meldung unter Windows 10: Ein Update wird für Ihr Gerät vorbereitet, ist aber noch nicht ganz fertig


    Folgende Punkte können erfahrungsgemäss zusätzlich helfen:
    - Reboot nach dem Umbenennen des Ordners (ohne den Windows-Update Dienst vorgängig wieder zu starten)
    - Neustart des Dienstes "Intelligenter Hintergrundübertragungsdienst" (BITS)
    - Neustart des Dienstes "Kryptografiedienste"


    Anstatt die Dienste neu zu starten können diese auch beendet und ein Reboot durchgeführt werden. Die entsprechenden Dienste sollten danach automatisch wieder starten.

    Mittlerweile ist man sich gewohnt die Zwischenablage zwischen verschiedenen System fast beliebig benutzen zu können (Remtoedesktop, Teamviewer, PuTTY etc.).


    Standardmässig ist diese Funktion für die VMware Remote Console allerdings deaktiviert. Um sie zu aktivieren muss die VM ausgeschaltet sein.


    Danach auf der entsprechenden VM zu Einstellungen bearbeiten -> VM Optionen -> Erweitert -> Konfigurationsparameter navigieren und dort auf Konfiguration bearbeiten klicken.


    Hier fügen wir nun folgende zwei Werte neu hinzu:


    Code
    isolation.tools.copy.disable = false
    isolation.tools.paste.disable = false


    Mit OK bestätigen und die VM starten. Nun steht euch die Copy/Pase funktion wie gewohnt auch in der VMware Remote Console zur Verfügung.


    Um die Einstellung auf dem Host für alle VM's festzulegen müssen folgende Zeilen auf dem ESXi Host in /etc/vmware/config eingefügt werden und die VM's neu gestartet werden:


    Code
    vmx.fullpath = "/bin/vmx"
    isolation.tools.copy.disable="FALSE"
    isolation.tools.paste.disable="FALSE"


    ACHTUNG: Bei einem Hostupgrade des ESXi gehen die Einstellungen verloren und müssen nach dem Upgrade erneut vorgenommen werden.

    Ohne weiteres zutun spuckt in der Regel auch ein korrekt installierter und funktionierender CS:GO Server einiges an "Fehlermeldungen" beim starten. Dies ist vor allem für Neulinge etwas irritierend da einige davon mehr informativen Charakter haben bzw. auf einer Serverinstallation ungenutze Funktionen verweisen und für einen korrekt funktionierenden Server irrelevant sind. Um aber relevante Fehler einfacher zu erkennen, empfiehlt es sich diese Meldungen so gut wie möglich mit ein paar kleinen Handgriffen trotzdem zu eliminieren.


    Fehlermeldung
    Error parsing BotProfile.db - unknown attribute 'Rank'


    Lösung
    Server stoppen und im Verzeichnis /csgo die Datei botprofile.db mit einem Texteditor öffnen. Nun sämtliche Zeilen welche "Rank" enthalten mit "//" auskommentieren.


    Code
    Rank = 1800
    zu
    //Rank = 1800


    Nach dem speichern erscheint die entsprechende Meldung beim nächsten Start des Servers nun nicht mehr.

    Falls beim Start eines Counter-Strike: Global Offensive Servers unter Linux die Meldung WARNING: setlocale('en_US.UTF-8') failed, using locale: 'C'. International characters may not work. erscheint, fehlen die entsprechenden locales auf dem Server.


    Unter Debian einfach zusätzlich die locale "en_US.UTF-8" mittels

    Code
    dpkg-reconfigure locales

    hinzufügen. Danach erscheint die entsprechende Meldung nicht mehr.

    Der Webserver von Windows (IIS) muss die Dateiendungen von Dateien welche er zum herunterladen zur Verfügung stellen soll kennen. Viele Formate sind bereits standardmässig hinterlegt. Gerade aber bei z.B Maps für Gameserver oder Formate die primär in der Unix/Linux Welt verwendet werden, muss die Dateiendung evtl. zuerst hinterlegt werden.


    Die Einstellung kann entweder Global für den ganzen Webserver oder nur für eine bestimmte Webseite vorgenommen werden.
    Und zwar jeweils unter dem Menüpunkt IIS - MIME Typ.


    Im aktuellen Beispiel ist für tar.xz Files folgender neuer Eintrag anzulegen:


    Code
    Dateinamenerweiterung: .xz
    MIME-Typ: application/x-xz


    Nun können .xz Dateien direkt via HTTP/HTTPS verlinkt und heruntergeladen werden.

    Ich habe es durch einfügen der folgenden Zeile in /etc/sysctl.conf gelöst:


    Code
    net.ipv6.conf.all.disable_ipv6 = 1


    Statt "all" für alle Netzwerkadapter kann auch ein spezifischer Netzwerkadapter verwendet werden, also z.B


    Code
    net.ipv6.conf.ens4.disable_ipv6 = 1




    Um die Änderung ohne einen Neustart zu laden:

    Code
    sysctl -p

    Immer wieder schön zu lesen deine Berichte, danke Gurit. :thumbup:


    Den Satz "aber man ist ja vernünftig" lass ich mit einem Schmunzeln mal so stehen. Wenn es um Hardware geht ist bei einigen von uns der Begriff "Vernunft" definitiv eine Frage der Begriffsdefinition welche wohl von der üblichen etwas abweicht ^^