Es gibt Multiplayer-Spiele, die entfalten erst mit einer guten Kommunikation die volle Spieleerfahrung. Natural Selection 2 ist so ein Spiel. Dieser rundenbasierte Taktik-Shooter legt extrem viel Wert auf Teamplay, so dass die Kommunikation mit Headset hoch geschrieben wird.
Was aber tun, wenn in den Match’es immer mal wieder Russen, Japaner oder sogar Koreaner oder auf den Server joinen? Denen ist es nämlich egal, welche Sprache man spricht, denn hauptsächlich wird Ingame Englisch gesprochen (eben weil es nie Länderbasierte Server gab). Aber genau damit kommt nie eine dichte Atmosphäre auf, viele Deutsche sprechen weniger oder kaum Englisch.
Also habe ich überlegt, den Spiele-Port mit GeoIP in den IPTables für nicht DE, AT und CH für den UDP-Stream (nicht TCP!) zu sperren. Glücklicherweise belegt NS2 automatisch den nächst-höhreren Port für Serverstatistik-Query’s, den kann man getrost offen lassen damit auch z.B. NS2Stats.com weiterhin funktionieren.
Mein Ziel ist diese funktionstüchtige Zeile Drop-by-GeoIP für iptables:
iptables -A INPUT -p udp --dport 27010 -m geoip ! --source-country DE,CH,AT -j DROP
Damit wird alles was nicht DE,CH,AT ist (negativiert durch das Ausrufezeichen) auf Port 27010 mit Port UDP blockiert. Mit -D (delete) anstatt -A (add) kann eben dieser IPtables-Eintrag wieder gelöscht werden. Aber: Bis iptables diese GeoIP-Zeile schluckt, braucht es aber noch ein paar Schritte Vorbereitung.
Theoretisch braucht Debian Wheezy nur xtables-addons als Package, in der Praxis braucht es aber ein bisschen mehr. Besonders, wenn der Server wie meiner einen OVH-Kernel benutzte.. Jedenfalls war mir diese Anleitung mit dem Module-Assistant am genehmsten, nachdem ich den Server-Kernel auf einen offiziellen Stack geändert hatte:
apt-get update apt-get install iptables iptables-dev module-assistant xtables-addons-common libtext-csv-xs-perl unzip module-assistant --verbose --text-mode auto-install xtables-addons cd /usr/lib/xtables-addons/ ./xt_geoip_dl ./xt_geoip_build GeoIPCountryWhois.csv mkdir -p /usr/share/xt_geoip/ cp -r {BE,LE} /usr/share/xt_geoip/
- Die ersten 2 Zeilen installieren alle benötigten Pakete
- Zeile 3 überlässt dem Module-Assistenten das installieren von xtables-addons.
- Die restlichen Zeilen sind nötig, weil xtables-addons hardcodiert in /usr/share/xt_geoip/* die GeoIP-Datenbank erwartet, welche noch überhaupt nicht besteht. Die beiden Scripte laden die GeoIP DB herunter, und builden anschliessend den Inhalt. Zuletzt kopiert es die jetzt vorhandenen & benötigten Ordner BE,LE nach /usr/share/xt_geoip/.
Ab jetzt kann iptables mit -m geoip XYZ erweitert werden.
iptables -m geoip --help
That’s it. Enjoy the Power of IPTables 🙂
1 Kommentar
Tina · 5. Dezember 2015 um 09:42
Es sind aber gerade die Japaner oder sogar Koreaner die die besten Spieler auf dieser Welt sind. Sollte man nicht vergessen 🙂