← Alle Beiträge

GeoIP-Blocking in Proxmox VE

26.10.2026 #proxmox #linux #ip

GeoIP-Blocking in Proxmox VE (Nur deutsche IP-Adressen zulassen)

Diese Dokumentation beschreibt, wie Sie mithilfe eines automatisierten Skripts die Firewall von Proxmox VE (PVE) so konfigurieren, dass ausschließlich Anfragen aus Deutschland (DE) erlaubt werden.


1. IP-Set im Proxmox Web-Interface vorbereiten

Bevor das Skript ausgeführt wird, muss ein leeres IP-Set auf Cluster-Ebene existieren.

  1. Navigieren Sie im Web-Interface zu Datacenter (Rechenzentrum) -> Firewall -> IP Sets.
  2. Klicken Sie auf Create (Erstellen).
  3. Vergeben Sie den exakten Namen: de_ips (Beschreibung optional: Deutsche IP-Adressen).

2. Automatisches Update-Skript einrichten

Erstellen Sie auf der Proxmox-Shell ein Skript, welches wöchentlich die aktuellen IP-Bereiche Deutschlands herunterlädt und in das IP-Set injiziert.

Datei erstellen

nano /usr/local/bin/update-geoip.sh

Skript-Inhalt

Fügen Sie den folgenden Bash-Code ein:

#!/bin/bash
# Verzeichnis für die temporäre Datei und PVE-Konfiguration
TMP_FILE="/tmp/de_zone.txt"
PVE_FW_CLUSTER="/etc/pve/firewall/cluster.fw"

# Aktuelle IP-Zonen-Datei für Deutschland (IPv4) herunterladen
echo "Lade deutsche IP-Bereiche herunter..."
curl -s -o $TMP_FILE "http://www.ipdeny.com/ipblocks/data/aggregated/de-zone.zone"

if [ -s $TMP_FILE ]; then
    echo "Aktualisiere Proxmox IP-Set [de_ips]..."
    
    # Entferne die alten Einträge des IP-Sets aus der Konfiguration
    sed -i '/\[ipset de_ips\]/,/^$/d' $PVE_FW_CLUSTER
    
    # Schreibe den Header für das IP-Set neu
    echo -e "\n[ipset de_ips]" >> $PVE_FW_CLUSTER
    
    # Füge alle heruntergeladenen IP-Subnetze ein
    cat $TMP_FILE >> $PVE_FW_CLUSTER
    
    # Leere Zeile am Ende anfügen
    echo "" >> $PVE_FW_CLUSTER
    
    echo "Erfolgreich aktualisiert!"
else
    echo "Fehler: Download fehlgeschlagen oder Datei leer."
fi

# Temporäre Datei löschen
rm -f $TMP_FILE

Berechtigungen setzen & Erstausführung

Machen Sie das Skript ausführbar und führen Sie es einmalig aus:

chmod +x /usr/local/bin/update-geoip.sh
/usr/local/bin/update-geoip.sh

3. Firewall-Regel definieren

Aktivieren Sie den Schutz nun für Ihr System (z. B. auf Cluster-Ebene unter Datacenter oder für dedizierte VMs/LXCs).

  1. Wählen Sie den gewünschten Bereich im Menü aus und klicken Sie auf Firewall -> Add.
  2. Richten Sie die Regel wie folgt ein:
  • Direction: in
  • Action: ACCEPT
  • Macro / Protocol: Leer lassen für den gesamten Server oder gezielt Dienste wie HTTPS (8006) bzw. SSH (22) wählen.
  • Source: Wählen Sie im Dropdown-Menü +de_ips (Das Pluszeichen kennzeichnet das IP-Set).
  1. Stellen Sie sicher, dass in den Firewall-Options (Optionen) die Firewall generell auf Yes gesetzt ist.

4. Automatische Updates per Cronjob

Um sicherzustellen, dass die IP-Bereiche aktuell bleiben, wird ein wöchentlicher Cronjob eingerichtet.

crontab -e

Fügen Sie am Ende der Datei folgende Zeile ein, damit das Skript jeden Sonntag um 03:00 Uhr ausgeführt wird:

0 3 * * 0 /usr/local/bin/update-geoip.sh >/dev/null 2>&1

⚠️ Sicherheitshinweis: Stellen Sie sicher, dass Sie sich während der Einrichtung nicht selbst aussperren. Sollte Ihre aktuelle IP nicht als deutsche IP erkannt werden, fügen Sie vor der Aktivierung ein separates IP-Set für Ihr lokales Subnetz (z. B. 192.168.1.0/24) mit einer ACCEPT-Regel hinzu.