Ihre Website wird über das Bunny CDN betrieben, und gelegentlich ist dieses nicht erreichbar. Besucher erhalten dann die Bunny-Fehlerseite “504 Gateway Timeout” mit folgendem Inhalt: “Wir konnten keine Verbindung herstellen.”. Sie melden sich auf Ihrem Server an und alles scheint in Ordnung: Die Auslastung ist normal, die Protokolle zeigen keine Fehler an und die anderen Websites auf demselben Server funktionieren weiterhin. Ein Neustart behebt das Problem nicht. Nach einigen Stunden ist die Website von selbst wieder erreichbar, nur um wenige Tage später erneut auszufallen.
Wir hatten genau dasselbe Problem. Die Ursache lag weder an der Website noch an der Datenbank oder der Serverlast. Es war die serverseitige Sicherheitssoftware, die Bunny blockierte. Wenn Sie CrowdSec oder ein ähnliches Tool verwenden, das IP-Adressen anhand ihres Verhaltens sperrt, und das auf einem Server hinter einem CDN läuft, kann Ihnen das auch passieren. Hier erfahren Sie, wie Sie das Problem erkennen, bestätigen und dauerhaft beheben können.
Die Symptome
- Besucher gelangen in der Regel nach etwa einer Minute auf die 504-Fehlerseite von Bunny.
- Der Server ist nicht ausgelastet: CPU, Speicher und Datenbank scheinen normal zu sein.
- Ihre Webserver- und Anwendungsprotokolle zeigen nichts Ungewöhnliches, da die fehlgeschlagenen Anfragen nie ankommen.
- Andere Websites auf demselben Server, die Bunny nicht verwenden, funktionieren weiterhin.
- Ein Neustart der Dienste oder des Servers hilft nicht.
- API-Aufrufe an den Bunny-Hostnamen schlagen fehl, während dieselben Aufrufe an einen Hostnamen, der den Server direkt oder über ein anderes CDN erreicht, weiterhin funktionieren.
- Die Website kann für einige Besucher nicht erreichbar sein, für andere hingegen einwandfrei funktionieren, je nachdem, welcher Bunny-Standort für sie zuständig ist.
Warum das passiert
Hinter einem CDN sieht Ihr Server niemals Ihre Besucher. Er sieht nur das CDN. Jede Anfrage kommt von einem der wenigen Bunny-Edge-Server in der Nähe des Besuchers, sodass für Ihren Server jeder Edge-Server wie ein einzelner, extrem ausgelasteter Client erscheint.
CrowdSec analysiert Ihre Logs und sperrt IP-Adressen, die sich verdächtig verhalten, beispielsweise viele Seiten schnell durchsuchen oder nach nicht existierenden Pfaden suchen. Jeder Bot, Scraper und Schwachstellenscanner, der über Bunny auf Ihre Website zugreift, wird der IP-Adresse des verwendeten Edge-Servers zugeordnet. Sobald eines der CrowdSec-Szenarien eintritt, wird der Edge-Server gesperrt und der gesamte Datenverkehr von der Firewall blockiert.
Ab diesem Zeitpunkt erhält jeder Besucher, der über diesen Edge-Server geleitet wird, einen 504-Fehler, während Ihr Server einwandfrei funktioniert. Sperren dauern mehrere Stunden (standardmäßig vier) und bleiben auch nach einem Neustart bestehen. Dies erklärt, warum das Problem sporadisch auftritt und ein Neustart keine Abhilfe schafft. Bunnys IP-Adressen können außerdem auf der Community-Sperrliste von CrowdSec landen, da andere CrowdSec-Nutzer hinter Bunny dasselbe Muster feststellen.
Wie man es diagnostiziert
Schritt 1: Vergleichen Sie Bunny mit Ihrem Server
Fordern Sie dieselbe URL sowohl über Bunny als auch direkt von Ihrem Server an. curl --lösen Diese Option umgeht die DNS-Auflösung und stellt eine direkte Verbindung zur IP-Adresse Ihres Servers her, wobei der richtige Hostname dennoch gesendet wird:
# Über Bunny: `curl -s -o /dev/null -D - -w "status=%{http_code} time=%{time_total}s\n" "https://example.com/robots.txt?nocache=$RANDOM" | grep -iE "^(cdn-cache|status=)"` # Direkt zu Ihrem Server (ersetzen Sie 203.0.113.10 durch die IP-Adresse Ihres Servers): `curl -s -o /dev/null -w "status=%{http_code} time=%{time_total}s\n" --resolve example.com:443:203.0.113.10 "https://example.com/robots.txt"`"Verwenden Sie eine statische Datei wie robots.txt, damit PHP und die Datenbank keine Rolle spielen. Überprüfen Sie die CDN-Cache Wenn in der ersten Ergebniszeile „HIT“ steht, hat Bunny aus dem Cache geantwortet und der Test liefert keine Ergebnisse. Je nach Ihren Pull-Zone-Einstellungen ignoriert Bunny möglicherweise die Abfragezeichenfolge. Versuchen Sie daher andere URLs, z. B. Seiten oder API-Endpunkte, die Bunny nicht zwischenspeichert, bis Sie ein „MISS“ erhalten.
Wenn Ihr Server innerhalb von Sekundenbruchteilen antwortet, Bunny aber nach einer Minute einen 504-Fehler zurückgibt, liegt das Problem nicht an Ihrer Anwendung. Bunny kann Ihren Server überhaupt nicht erreichen.
Schritt 2: Überprüfen Sie, ob CrowdSec Bunny gesperrt hat.
Bunny veröffentlicht die IP-Adressen all seiner Edge-Server. Laden Sie die Liste auf Ihren Server herunter und vergleichen Sie sie mit den aktiven Sperren von CrowdSec, die CrowdSec als Entscheidungen bezeichnet.
curl -s https://bunnycdn.com/api/system/edgeserverlist/plain | tr -d '\r' > /tmp/bunny-ips.txt sudo cscli decisions list --all --limit 0 -o raw | grep -wFf /tmp/bunny-ips.txtEin paar Anmerkungen zu diesen Befehlen:
tr -d '\r''Dies ist notwendig, da Bunnys Liste Windows-Zeilenumbrüche verwendet. Ohne diese Angabe findet sich keine Übereinstimmung.--alleumfasst Sperren von der Community-Sperrliste, und--limit 0Die Standardbegrenzung von 100 Ergebnissen wird aufgehoben.grep -wVerhindert Teilübereinstimmungen, daher stimmt 1.2.3.4 nicht mit 1.2.3.45 überein.
Jede Ausgabe bedeutet, dass CrowdSec Bunny blockiert. Um zu sehen, welches Szenario die Sperrungen verursacht hat, führen Sie folgenden Befehl aus: sudo cscli alerts list.
Die Lösung
Heben Sie die aktuellen Verbote auf.
sudo cscli decisions list --all --limit 0 -o raw | grep -woFf /tmp/bunny-ips.txt | sort -u | xargs -r -n1 sudo cscli decisions delete --ipDadurch werden alle aktiven Sperren auf einem Bunny-Edge-Server aufgehoben. Ihre Website sollte anschließend sofort wieder über Bunny erreichbar sein. Wiederholen Sie den Test ab Schritt 1, um dies zu überprüfen.
Whitelist Bunnys Edge-Server
Die Entsperrung hilft nur bis zur nächsten Sperrung. Um zu verhindern, dass CrowdSec Bunny erneut sperrt, sollten Bunnys IP-Adressen auf eine Whitelist gesetzt werden. Da Bunny im Laufe der Zeit weitere Server hinzufügt, sollte die Whitelist nicht einmalig erstellt, sondern mithilfe eines kleinen Skripts anhand von Bunnys aktueller Liste aktualisiert werden.
#!/bin/sh # Erstellt die CrowdSec-Whitelist anhand der aktuellen Liste der Edge-Server von Bunny neu -e TARGET=/etc/crowdsec/parsers/s02-enrich/bunnycdn-whitelist.yaml IPS=$(curl -sf --max-time 30 https://bunnycdn.com/api/system/edgeserverlist/plain | tr -d '\r' | grep -E '^[0-9.]+$') # Behält die aktuelle Whitelist bei, falls der Download fehlschlägt oder unvollständig erscheint [ "$(printf '%s\n' "$IPS" | wc -l)" -gt 100 ] || exit 1 { echo 'name: local/bunnycdn-whitelist' echo 'description: "Never ban Bunny CDN edge servers"' echo 'whitelist:' echo ' reason: "Bunny CDN edge server"' echo ' ip:' printf '%s\n' "$IPS" | sed 's/.*/ - "&"/' } > "$TARGET.tmp" mv "$TARGET.tmp" "$TARGET" systemctl reload crowdsecSpeichern Sie es unter /usr/local/bin/bunny-crowdsec-whitelist.sh, Machen Sie es ausführbar und führen Sie es einmal aus:
sudo chmod +x /usr/local/bin/bunny-crowdsec-whitelist.sh sudo /usr/local/bin/bunny-crowdsec-whitelist.sh sudo systemctl status crowdsecDer letzte Befehl zeigt an, ob CrowdSec fehlerfrei neu geladen wurde. Um die Whitelist aktuell zu halten, führen Sie das Skript wöchentlich über die Crontab des Root-Benutzers aus (sudo crontab -e):
0 4 * * 1 /usr/local/bin/bunny-crowdsec-whitelist.shDas Skript ersetzt die Whitelist nur, wenn der Download erfolgreich war und eine plausible Anzahl an Adressen enthält, sodass bei einem fehlgeschlagenen Download nie eine Adresse verloren geht. Es deckt IPv4 ab. Falls Ihr Server auch über eine IPv6-Adresse verfügt, kann Bunny sich auch über IPv6 verbinden; Bunny veröffentlicht diese Adressen unter [URL einfügen]. bunnycdn.com/api/system/edgeserverlist/ipv6.
Ein Hinweis zur Community-Blockliste
Diese Whitelist verhindert, dass Bunny aufgrund von CrowdSec-eigenen Erkennungen gesperrt wird. Sperrungen, die von der Community-Sperrliste stammen (in Schritt 2 mit CAPI oder Listen als Quelle angezeigt), werden separat behandelt. Neuere CrowdSec-Versionen bieten auch Zulassungslisten, die Sperrlisteneinträge abdecken; führen Sie aus cscli allowlists --help Um zu prüfen, ob Ihre Version betroffen ist. Führen Sie bei älteren Versionen den Befehl zum Entsperren erneut aus, falls Bunny dort angezeigt wird.
Wenn CrowdSec nicht der Übeltäter ist
Falls Schritt 2 nichts findet, blockiert etwas anderes zwischen Bunny und Ihrem Server den Datenverkehr. Prüfen Sie Folgendes:
- Andere Bann-Tools, wie zum Beispiel fail2ban (
sudo fail2ban-client status). - Die Firewall-Regeln auf dem Server (
sudo ufw statusodersudo nft list ruleset). - Die Firewall oder der DDoS-Schutz Ihres Hosting-Anbieters, üblicherweise im Kontrollpanel zu finden.
- Die Ursprungsadresse in Ihren Bunny-Pull-Zone-Einstellungen sollte auf die aktuelle IP-Adresse oder den Hostnamen Ihres Servers verweisen.
Noch einen Schritt weiter: Besucher hinter einem CDN aussperren.
Das grundlegende Problem besteht darin, dass eine Firewall-Sperre hinter einem CDN immer nur das CDN selbst trifft, niemals aber den Bot oder Angreifer, der es nutzt. Wenn CrowdSec diese Seiten weiterhin schützen soll, muss Ihr Webserver die IP-Adresse des tatsächlichen Besuchers protokollieren, nicht die von Bunny. In nginx erreichen Sie dies mit folgender Methode: set_real_ip_from (Auflistung von Bunnys Adressen) und real_ip_header X-Forwarded-For. CrowdSec erkennt dann die tatsächlichen Verursacher. Diese müssen an einer Stelle blockiert werden, die den tatsächlichen Besucher erkennt, beispielsweise durch den Nginx-Bouncer von CrowdSec oder die Sicherheitsregeln von Bunny, da Ihre Firewall nur mit Bunny interagiert.
Nicht nur Bunny
Dasselbe kann hinter jedem CDN oder Reverse-Proxy, einschließlich Cloudflare, passieren. Die meisten von ihnen veröffentlichen ihre Adressen. Cloudflare veröffentlicht Adressbereiche unter cloudflare.com/ips-v4 und cloudflare.com/ips-v6, die unter cidr: anstatt IP-Adresse: in einer CrowdSec-Whitelist. Ansonsten ist die Vorgehensweise dieselbe: Überprüfen Sie Ihre Sperren anhand der Liste und fügen Sie sie dann der Whitelist hinzu.
Zusamenfassend
- Wenn Bunny 504-Fehler zurückgibt, Ihr Server aber einwandfrei funktioniert und Ihre anderen Websites funktionieren, liegt die Vermutung nahe, dass die IP-Adressen von Bunny gesperrt wurden.
- Vergleiche eine Anfrage über Bunny mit einer direkten Anfrage mithilfe von
curl --resolve, und stellen Sie sicher, dass Bunnys Antwort kein Cache-Treffer ist. - Vergleichen Sie die Entscheidungen von CrowdSec mit der von Bunny veröffentlichten Liste der Edge-Server.
- Die Sperren werden aufgehoben, Bunnys Adressen werden auf die Whitelist gesetzt und die Whitelist wird wöchentlich aktualisiert.
Letzte Aktualisierung: 5. Oktober 2026
