Velocity + DDoS-Schutz: Komplettanleitung für ein sicheres Minecraft-Netzwerk

Velocity + DDoS-Schutz: Komplettanleitung für ein sicheres Minecraft-Netzwerk

Warum Velocity statt BungeeCord

Wer ein Minecraft-Netzwerk mit mehreren Servern betreibt, braucht einen Proxy. BungeeCord war jahrelang der Standard, aber 2024-2026 ist die Wahl eindeutig: Velocity von PaperMC.

Kurz gesagt, warum BungeeCord ausgedient hat:

  • Performance. Velocity wurde von Grund auf mit einem modernen Java-Stack geschrieben. Es verbraucht weniger Speicher und verarbeitet mehr Verbindungen auf der gleichen Hardware.
  • Sicherheit. BungeeCord nutzt immer noch veraltetes IP-Forwarding. Velocity bietet Modern Forwarding mit HMAC-Signaturen, was UUID-Spoofing komplett verhindert.
  • API. Velocity hat eine saubere, event-basierte API ohne Legacy-Altlasten. Plugins laufen stabiler.
  • Wartung. PaperMC entwickelt Velocity aktiv weiter. BungeeCord bekommt nur noch selten Updates.

Das einzige Argument für BungeeCord ist die Kompatibilität mit uralten Plugins. Aber die meisten aktiv gepflegten Plugins sind bereits auf Velocity portiert.

Architektur: Wie alles zusammenhängt

Eine korrekt aufgebaute Minecraft-Netzwerk-Architektur mit DDoS-Schutz sieht so aus:

Spieler → MineGuard (Filterung) → Velocity (Proxy) → Paper Server (Lobby, Survival, Minigames)

Schauen wir uns jede Ebene an:

MineGuard nimmt den gesamten eingehenden Traffic an. Spieler verbinden sich mit der IP-Adresse von MineGuard, nicht mit eurem echten Server. Die gesamte Filterung passiert, bevor Pakete Velocity erreichen. Bots, Floods, fehlerhafte Pakete - alles wird auf dieser Stufe aussortiert.

Velocity empfängt sauberen Traffic und verteilt Spieler auf die Server. Es übernimmt das Routing, den Serverwechsel (Hub → Survival → Minigames) und die Weiterleitung von Spielerdaten.

Paper Server sind die Endpunkte, auf denen das eigentliche Gameplay läuft. Jeder Server kennt nur Velocity und hat keinen direkten Kontakt zur Außenwelt.

Der entscheidende Punkt: Die echte IP eures Servers mit Velocity muss verborgen bleiben. Wenn ein Angreifer die direkte Adresse herausfindet, umgeht er MineGuard und greift direkt an.

Installation und Konfiguration von Velocity

Voraussetzungen

  • Java 17+ (Java 21 empfohlen)
  • Mindestens 512 MB RAM für den Proxy (bei 100-200 Spielern)
  • Linux-Server (Ubuntu 22.04 / Debian 12)

Installation

mkdir -p /opt/velocity && cd /opt/velocity
wget https://api.papermc.io/v2/projects/velocity/versions/3.4.0-SNAPSHOT/builds/latest/downloads/velocity-3.4.0-SNAPSHOT-latest.jar -O velocity.jar
java -Xms512M -Xmx512M -jar velocity.jar

Nach dem ersten Start erstellt Velocity seine Konfigurationsdateien. Stoppt den Server und geht zur Konfiguration über.

velocity.toml - Wichtige Einstellungen

bind = "0.0.0.0:25577"

# Auf modern umstellen - das ist entscheidend
player-info-forwarding-mode = "modern"

show-max-ping = 1000
online-mode = true

[servers]
lobby = "127.0.0.1:25565"
survival = "127.0.0.1:25566"
minigames = "127.0.0.1:25567"

try = ["lobby"]

[forced-hosts]
"survival.example.com" = ["survival"]

[advanced]
connection-timeout = 5000
read-timeout = 30000
haproxy-protocol = false

Der Parameter bind legt Adresse und Port fest, auf denen Velocity lauscht. Wenn MineGuard und Velocity auf derselben Maschine laufen, nehmt 127.0.0.1:25577. Auf verschiedenen Maschinen 0.0.0.0:25577, aber sperrt den Port per Firewall für alles außer MineGuard.

Modern Forwarding

Nach Aktivierung von player-info-forwarding-mode = "modern" generiert Velocity die Datei forwarding.secret. Dieses Secret muss auf jeden Paper-Server kopiert werden.

Auf den Paper-Servern öffnet config/paper-global.yml:

proxies:
  velocity:
    enabled: true
    online-mode: true
    secret: "hier_das_secret_aus_forwarding.secret_einfügen"

Modern Forwarding signiert Spielerdaten (UUID, Skin, IP) mit einem HMAC-Schlüssel. Wenn jemand versucht, sich direkt mit einem Paper-Server zu verbinden und Velocity zu umgehen, lehnt der Server die Verbindung ab. Das schließt eine ganze Klasse von UUID-Spoofing-Angriffen aus.

Firewall: Alles Unnötige sperren

Eine Firewall ist keine Option, sondern Pflicht. Ohne sie sind eure Paper-Server von außen erreichbar und akzeptieren direkte Verbindungen.

# SSH erlauben
sudo ufw allow 22/tcp

# Velocity NUR von MineGuard-IP erlauben
sudo ufw allow from MINEGUARD_IP to any port 25577 proto tcp

# Direkten Zugriff auf Paper-Server von außen sperren
# (sie laufen auf 127.0.0.1, also ohnehin nicht erreichbar, aber sicher ist sicher)
sudo ufw deny 25565:25570/tcp

# Firewall aktivieren
sudo ufw enable

Ersetzt MINEGUARD_IP durch die IP-Adresse eures MineGuard-Filters. Bei mehreren IPs fügt für jede eine Regel hinzu.

Prüft, dass die Ports der Paper-Server an 127.0.0.1 gebunden sind, nicht an 0.0.0.0. In der server.properties jedes Servers:

server-ip=127.0.0.1
server-port=25565

MineGuard DDoS-Schutz einbinden

Wie MineGuard Traffic filtert

MineGuard arbeitet als Reverse Proxy vor Velocity. Der gesamte eingehende Traffic durchläuft den Filter, der Pakete auf mehreren Ebenen analysiert:

  1. XDP-Ebene - die schnellste. Verwirft Junk-Traffic, bevor er überhaupt den Netzwerk-Stack des Betriebssystems erreicht.
  2. TCP-Ebene - prüft die Korrektheit von Verbindungen, blockiert SYN-Floods und anomale Pakete.
  3. Minecraft-Protokoll-Ebene - untersucht Paketinhalte. Unterscheidet Bots von echten Spielern anhand ihres Verbindungsverhaltens.

Für Spieler ist das transparent: Sie verbinden sich mit einer Adresse, sehen die MOTD, betreten den Server. Der Unterschied ist, dass zwischen Spieler und Velocity ein Filter steht, der Angriffe blockiert.

Einrichtung im MineGuard-Panel

  1. Fügt ein Netzwerk im MineGuard-Panel hinzu
  2. Gebt die Backend-Adresse ein - IP und Port eures Velocity (euer_server:25577)
  3. Wählt den Schutzmodus ("Smart" wird zum Start empfohlen)
  4. MineGuard weist euch eine geschützte IP zu - das ist die Adresse, die ihr den Spielern gebt

Proxy Protocol

Wenn Traffic durch MineGuard läuft, sieht Velocity standardmäßig die IP-Adresse von MineGuard, nicht die echte IP des Spielers. Proxy Protocol löst dieses Problem.

Aktiviert Proxy Protocol für euer Netzwerk im MineGuard-Panel.

In velocity.toml aktiviert die Unterstützung:

[advanced]
haproxy-protocol = true

Danach sieht Velocity die IP-Adressen der Spieler korrekt. Das ist wichtig für:

  • IP-Banlisten
  • Geolokalisierung
  • Erkennung von Zweitaccounts
  • Korrekte Statistiken

Wichtig: Nach Aktivierung von haproxy-protocol in Velocity funktionieren direkte Verbindungen (ohne MineGuard) nicht mehr. Velocity erwartet dann von jeder Verbindung einen Proxy Protocol Header. Das ist eine zusätzliche Schutzschicht - selbst wenn jemand eure direkte IP findet, kann er sich ohne Proxy Protocol nicht verbinden.

Systemd-Service für Velocity

Damit Velocity nach einem Serverneustart automatisch startet:

# /etc/systemd/system/velocity.service
[Unit]
Description=Velocity Minecraft Proxy
After=network.target

[Service]
User=minecraft
WorkingDirectory=/opt/velocity
ExecStart=/usr/bin/java -Xms512M -Xmx512M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -jar velocity.jar
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable velocity
sudo systemctl start velocity

Testen

Bevor ihr die Adresse an Spieler verteilt, geht diese Checkliste durch:

1. Verbindung über MineGuard testen:

Verbindet euch über den Minecraft-Client mit der geschützten IP. Ihr solltet auf dem Lobby-Server landen.

2. Modern Forwarding prüfen:

Tretet dem Server bei und führt /velocity dump aus. Stellt sicher, dass der Forwarding-Modus auf "modern" steht. Auf dem Paper-Server prüft, ob eure UUID korrekt ist (muss mit der Mojang-UUID übereinstimmen).

3. Proxy Protocol prüfen:

Führt auf dem Paper-Server einen Befehl aus, der eure IP anzeigt (z.B. EssentialsX: /whois euer_name). Die IP sollte eure echte sein, nicht die von MineGuard.

4. Firewall testen:

Versucht, euch direkt mit der Server-IP auf Port 25577 zu verbinden und MineGuard zu umgehen. Die Verbindung sollte abgelehnt werden oder ein Timeout auslösen.

# Von einer externen Maschine
nc -zv euer_server 25577
# Sollte Timeout oder Ablehnung sein

5. Direkten Paper-Zugriff testen:

Versucht, euch mit einem Minecraft-Client direkt mit der Adresse eines Paper-Servers zu verbinden. Die Verbindung sollte abgelehnt werden (Modern Forwarding lässt das nicht zu).

Monitoring

Ein konfiguriertes Netzwerk braucht Monitoring. Hier ist, worauf ihr achten solltet:

Im MineGuard-Panel

  • Traffic-Grafiken - plötzliche Spitzen deuten auf einen Angriff hin
  • Blockierte Verbindungen - zeigen die Intensität von Angriffen
  • Latenz - Zeit zwischen MineGuard und eurem Velocity

Auf dem Server

# Anzahl aktiver Verbindungen zu Velocity
ss -tn state established '( dport = :25577 )' | wc -l

# Ressourcenverbrauch
journalctl -u velocity -f

# Netzwerk-Traffic
vnstat -l -i eth0

Velocity-Logs

In velocity.toml könnt ihr das Log-Level anpassen. Für den Produktivbetrieb lasst das Standard-Level, aber schaltet bei der Fehlersuche auf Debug um.

Es lohnt sich, Alerts einzurichten: Wenn die Verbindungszahlen plötzlich fallen oder steigen, stimmt etwas nicht. Die einfachste Variante ist ein Cron-Skript, das die Erreichbarkeit von Velocity prüft und eine Benachrichtigung an Telegram oder Discord schickt.

Häufige Fehler

"Verbindung zum Server verloren" beim Verbinden. Meist ein Problem mit Modern Forwarding. Prüft, ob das Secret in paper-global.yml mit forwarding.secret übereinstimmt und ob der Modus auf beiden Seiten auf "modern" steht.

Spieler-IPs werden als MineGuard-IP angezeigt. Proxy Protocol ist nicht aktiviert. Schaltet es im MineGuard-Panel und in velocity.toml ein.

Velocity startet nicht mit haproxy-protocol = true. Das ist normal, wenn ihr euch direkt verbindet. Mit aktiviertem Proxy Protocol werden Verbindungen ohne PROXYv2-Header abgelehnt. Verbindet euch nur über MineGuard.

Spieler kommen auf den Server, können aber nicht zwischen Servern wechseln. Prüft, ob alle Server unter [servers] von der Velocity-Maschine erreichbar sind. Nutzt ping und nc zur Diagnose.

Zusammenfassung

MineGuard + Velocity ist eine produktionsreife Lösung für Minecraft-Netzwerke jeder Größe. MineGuard übernimmt die DDoS-Filterung auf Netzwerkebene, Velocity kümmert sich um das Spieler-Routing und Paper-Server liefern das Gameplay.

Die wichtigsten Punkte:

  • Verwendet Modern Forwarding, nicht Legacy
  • Sperrt per Firewall alle Ports außer den nötigen
  • Aktiviert Proxy Protocol für korrekte IP-Weiterleitung
  • Versteckt eure echte Server-IP - sie darf weder in DNS noch öffentlich sichtbar sein
  • Überwacht Traffic und Verbindungen

Diese Architektur hält ernsten DDoS-Angriffen stand und fügt dabei kaum merkbare Latenz für Spieler hinzu. Filterung auf XDP-Ebene ist schneller als jede Software-Lösung im User Space, und Velocity sorgt für minimalen Overhead beim Proxying.


Schützen Sie Ihren Server vor DDoS-Angriffen

Kostenloser Schutz mit 5-Minuten-Einrichtung. 1 TB Traffic inklusive.

Kostenlos testen


Weitere Artikel