Die ServerQuery Whitelist

  • Hallo,


    ich möchte euch heute gerne erklären, wozu es die Datei "query_ip_whitelist.txt" im root Verzeichnis des TeamSpeak 3 Servers gibt.


    Wie bereits gesagt, findet ihr die Datei im root Verzeichnis eures TeamSpeak 3 Servers:


    Nun gut... Aber wozu dient diese Datei jetzt? Schauen wir doch mal rein, was drin steht:

    Code
    1. teamspeak@linux:~$ cat query_ip_whitelist.txt127.0.0.1


    Mhmm... Abgesehen von der lokalen Loopback IP-Adresse steht nicht viel drin. Aber warum steht die drin?


    Die Begründung ist eigentlich ganz einfach: Wenn ihr euch einen TeamSpeak 3 Server installiert, sollte der normalerweise die Rechte haben, sich über seinen eigenen physikalischen Server mit egal welcher Loopback IP-Adresse verwalten zu können. Da beim verwalten jedoch meistens mehrere Verbindungen mehrfach aufgebaut werden, kann es für den Server wie eine Art von DoS-Angriff erscheinen, welchen er als "Flood" bezeichnet. Wenn der Server dann meint, dass es zu viele Floods von der selben IP-Adresse sind, wird diese IP-Adresse ohne zu zögern für eine Weile gebannt/blockiert. Folge dessen ist, dass man sich eben nicht mehr zum verwalten mit dem Server verbinden kann. Daher steht dort standardmäßig die 127.0.0.1 drin.


    Einige werden sich jetzt jedoch fragen, was unter "verwalten" gemeint ist. Damit ist das Ändern oder Abrufen von Serverinformationen gemeint. Hierzu zählt zum Beispiel folgendes:

    • Serverinformationen / Hostinformationen
    • Clientliste / Channelliste
    • Servergruppeneinstellungen abrufen, ändern, hinzufügen, löschen,...
    • und vieles mehr...

    Dies wird normalerweise per Client über das Menü "Extras" -> "Server Gruppen" erledigt. Es gibt aber nicht nur "Clients", die normale Benutzer sehen. Es gibt auch sogenannte ServerQuery Clients, welche standardmäßig und somit auch meistens für andere Benutzer nicht sichtbar sind. Da sich diese Clients im Normalfall jedoch bedeutend mehrmals mit dem Server verbinden, ist es hierfür notwendig, die IP-Adresse des Clients dauerhaft zu erlauben, da der Client sonst bereits nach 1-5 Minuten vom Server gebannt ist.


    So ein Client ist zum Beispiel dieser von SteamPeak, den @Simplistic programmiert. Der schaut alle X Sekunden/Minuten auf dem Server nach, ob sich der Steam-Status von einem registrierten Client geändert hat oder nicht und weist dem Client dann entsprechend die richtigen ServerGruppen zu. Hierfür muss er jedoch mehrere Befehle ausführen, was schnell zu einem "Flood" führt. Damit der Flood aber einfach ignoriert wird, kann man die IP-Adresse des Bots/Clients einfach in die Whitelist eintragen und schon hat sich das Problem erledigt - dem Client wird sozusagen "vertraut". ;)


    Um einem solchen Client zu vertrauen, öffnet man einfach die Datei "query_ip_whitelist.txt" und schreibt in eine extra Zeile die IP-Adresse des Clients/Bots. Wenn der Client zum Beispiel die IP-Adresse "192.168.2.32" hat, dann muss die Datei wie folgt geändert werden:

    Zitat von Alt

    teamspeak@linux:~$ cat query_ip_whitelist.txt
    127.0.0.1


    Zitat von Neu

    teamspeak@linux:~$ cat query_ip_whitelist.txt
    127.0.0.1
    192.168.2.32


    Jede weitere IP-Adresse würde dann wieder in eine neue Zeile rutschen, sodass jede IP ihre eigene Zeile hat:

    Code
    1. teamspeak@linux:~$ cat query_ip_whitelist.txt127.0.0.1192.168.2.321.2.3.4192.168.2.224


    Damit die neue Whitelist aktiv wird, muss man den TeamSpeak 3 Server nicht einmal neustarten - der Server überprüft alle 5 Minuten die Datei und merkt, dass die Datei geändert wurde und liest sie dann automatisch neu ein. :)


    Ob die neue Whitelist aktiv ist oder nicht, kann man anhand der Instanz-Log nach voll ziehen. Hierzu kann man die Log-Datei einfach wie folgt durchsuchen:

    Code
    1. grep whitelist logs/$(ls -t logs/ | grep _0.log | head -1)


    Zur Erklärung des Codes: $() wird zu erst ausgeführt und sucht die aktuellste Log-Datei der Instanz. Als nächstes wird in der aktuellsten Log-Datei der Instanz nach "whitelist" gesucht bzw. gefiltert.


    Somit sieht man letztendlich eine Ausgabe wie diese hier:

    Zitat

    $ grep whitelist logs/$(ls -t logs/ | grep _0.log | head -1)
    2014-05-15 17:48:03.527822|INFO |CIDRManager | | updated query_ip_whitelist ips: 127.0.0.1, 85.214.147.196, 81.169.151.32, 85.131.163.20,
    2014-05-16 19:58:19.127943|INFO |CIDRManager | | updated query_ip_whitelist ips: 127.0.0.1, 85.214.147.196, 81.169.151.32, 85.131.163.20, 37.187.176.153, 37.187.176.148,


    Anhand dieser Ausgabe kann man dann an der Zeitangabe erkennen, ob die IPs geupdatet wurden oder nicht. :)


    Wenn ihr dann wieder eine IP-Adresse aus der Whitelist austragen möchtet, braucht ihr nur die IP wieder aus der Datei löschen und der Server liest sie wieder neu ein, wodurch die IP-Adresse entfernt wird. ;)


    Ich hoffe, ich konnte euch die Datei etwas näher erklären und euch somit die Frage "Muss ich nach dem Ändern der Datei den Server neustarten?" beantworten.

  • Halli-Hallo,
    seid tagen bin ich bereits dran meinen ts² Server die Whitelist zu ändern aber er übernimmt die ips ganz und garnicht :(
    Es Handelt sich hierbei um einen linux rootserver. ich will meinen BF4 Server (Procon) die rechte geben das die user die in einem team spielen in einen gemeinsamen channel im ts geswitcht werden.
    das funktioniert auch super, wenn aber dann 5 mann zusammen auf dem server sind wird der bf4 (procon) auf dem ts² server gebloggt

    • [22:02:02 19] Ts3 Sync: [Connection] Teamspeak 3 Sync started.
    • [22:02:08 87] Ts3 Sync: [Error] Fatal Error:
    • [22:02:08 87] Ts3 Sync: [Error] You were temporarily banned from the Teamspeak 3 Server for flooding.
    • [22:02:08 87] Ts3 Sync: [Error] Make sure your Procon's Ip is in your Teamspeak 3 Server's Whitelist.
    • [22:02:08 87] Ts3 Sync: [Error] 3331: flood ban ()


    Die IP vom Proconserver habe ich einmal per FTP neu im der.txt datei manuell eingefügt und erneut hoch geladen und einmal mit putty direkt in der shell bearbeitet und neu gespeichert.
    Die IP steht drinnen und sollte normalerweise auch funktionieren, aber irgendwie tuts das nicht :(


    kann mir da jemand helfen (ich sehe anscheinend den wald vor lauter bäumen nicht)

  • @Second Von wo hast du diese Meldungen? Wenn es eine Server/Client Log ist, solltest du das wohl besser direkt an TeamSpeak senden, da es sich bei "TS3 Sync" um ein Beta Feature von TeamSpeak handelt.


    Aufgrund dessen, dass du einen TS2 Server in Verwendung hast, würde ich dir raten, deine Logs von der Instanz zu überprüfen. Stehen da die IPs drin, die du gewhitelistet hast? Wenn nicht, kann es sein, dass das automatische Update Feature dieser Liste erst seit TS3 integriert ist und bei dir daher nicht wirkt. Starte deinen TS2 Server dann einfach mal kurz neu.

  • wie mache ich denn das wieder? ich bin nicht gerade ein ts freak und da recht unbeholfen, achsoooo es ist ein ts3 und kein ts2 server und die log ist aus dem tool von der bf4 server administration procon und nennt sich ts3 sync und daraus habe ich auch das log

  • Die Frage, die sich mir hier stellt ist eher, ob der TS3-Server nach ändern der Whitelist neu gestartet worden ist, bzw. ob die Änderungen der Whitelist korrekt erkannt worden sind.


    Ich empfehle daher, einfach mal das Log des TS3-Servers zu prüfen, ob die eingerichteten Whitelist-Einträge korrekt erkannt worden sind. Normalerweise wird die Whitelist in regelmäßigen Abständen neu eingelesen, aber nach einem Neustart kann man dies am einfachsten am Anfang der Log-Datei ablesen.

  • Zu 1. Ja der server wurde neu gestartet
    Zu 2 hier ist die log und da scheint er die liste ausgelesen zu haben, aber der server der auf den ts server zugreifen will, bekommt immernoch den flood ban


    2015-09-14 20:10:19.310440|INFO |CIDRManager | | updated query_ip_whitelist ips:
    127.0.0.1, 212.172.221.76, 5.101.165.31, 217.198.143.114,



    danach kommt auch kein error! der server läuft weiter

  • Hallo, ich bin's wieder.


    Ich benutze den Sinusbot für die Musik und für einen Welkommenstext auf dem TS. Seine IP habe ich in die whitelist eingetragen, diese wird auch eingelesen und der bot wird nicht gebannt aber als flood erkannt.
    Kann man den Anti-flood für bestimmte Server-Gruppen ausschalten?
    Botlog:

    Code
    1. 2017-06-23T12:19:13+02:00 client is flooding
    2. 2017-06-23T12:19:13+02:00 Sending private message failed
    3. 2017-06-23T12:19:13+02:00 client is flooding
    4. 2017-06-23T12:19:13+02:00 Sending private message failed
    5. 2017-06-23T12:19:13+02:00 client is flooding
    6. 2017-06-23T12:19:13+02:00 Sending private message failed
    7. 2017-06-23T12:19:13+02:00 client is flooding
    8. 2017-06-23T12:19:13+02:00 Sending private message failed
    9. 2017-06-23T12:19:13+02:00 PRIVATE-CHAT [Radio] Welcome Admin, you can enjoy some fresh beat in my channel ;)
  • @Sebbo Wo gebe ich das den ein? bzw. in welchen File kann ich das schreiben?


    edit: Nevermind, ich hab's. Mir hat die information gefehlt, dass es per telnet auf die serverquery zugriff ist.


    Vielen Dank :)

  • das ist ein Recht dass du dem Bot geben musst, deine Meldung hat überhaupt nichts mit der Server Query Whitelist zu tun
    Du musst erst unter "Extras > Optionen > Anwendung" einen Haken bei "Fortgeschrittenes Rechtesystem" setzen
    danach entweder auf die Gruppe setzen: "Rechte > Servergruppen" auf die jeweilige Servergruppe das Recht b_client_ignore_antiflood setzen
    oder direkt auf den Client: Client rechtsklicken "Rechte > Client Rechte" und dort das recht b_client_ignore_antiflood setzen