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:
QuoteDisplay Moreteamspeak@linux:~$ ls -lh
insgesamt 12M
-rw-r--r-- 1 teamspeak teamspeak 41K Jan 6 20:11 CHANGELOG
drwxr-xr-x 2 teamspeak teamspeak 4,0K Dez 8 12:12 doc
drwx------ 15 teamspeak teamspeak 4,0K Mär 13 11:22 files
-rwxr-xr-x 1 teamspeak teamspeak 730K Jan 6 20:11 libts3db_mysql.so
-rwxr-xr-x 1 teamspeak teamspeak 1,5M Jan 6 20:11 libts3db_sqlite3.so
-rw-r--r-- 1 teamspeak teamspeak 24K Jan 6 20:11 LICENSE
-rw-r--r-- 1 teamspeak teamspeak 905 Nov 1 21:50 licensekey.dat
drwx---r-x 2 teamspeak teamspeak 12K Apr 25 22:27 logs
-rw-r--r-- 1 teamspeak teamspeak 1 Jan 6 20:11 query_ip_blacklist.txt
-rw-r--r-- 1 teamspeak teamspeak 22 Jan 6 20:11 query_ip_whitelist.txt
drwxr-xr-x 2 teamspeak teamspeak 4,0K Aug 5 2013 redistributables
-rw-r--r-- 1 teamspeak teamspeak 112 Aug 22 2013 serverkey.dat
drwxr-xr-x 2 teamspeak teamspeak 4,0K Aug 5 2013 serverquerydocs
drwxr-xr-x 4 teamspeak teamspeak 4,0K Mär 5 21:35 sql
-rwxr-xr-x 1 teamspeak teamspeak 5,5M Jan 6 20:11 ts3server_linux_amd64
-rwxr-xr-x 1 teamspeak teamspeak 1,2K Jan 6 20:11 ts3server_minimal_runscript.sh
-rw-r--r-- 1 teamspeak teamspeak 5 Apr 25 22:27 ts3server.pid
-rw-r--r-- 1 teamspeak teamspeak 3,7M Apr 26 13:16 ts3server.sqlitedb
-rwxr-xr-x 1 teamspeak teamspeak 3,7K Jan 6 20:11 ts3server_startscript.sh
drwxr-xr-x 2 teamspeak teamspeak 4,0K Mär 15 02:37 tsdns
Nun gut... Aber wozu dient diese Datei jetzt? Schauen wir doch mal rein, was drin steht:
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:
Quote from Altteamspeak@linux:~$ cat query_ip_whitelist.txt
127.0.0.1
Quote from Neuteamspeak@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:
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:
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:
Quote$ 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.