Deaktiviere IPv6 nicht nur deshalb, weil ss anzeigt, dass ein CasaOS- oder Docker-Dienst auf :::80 lauscht. Unter Linux kann ein IPv6-Wildcard-Listener abhängig von den Socket-Einstellungen auch IPv4-Verbindungen akzeptieren, und Docker veröffentlicht Ports normalerweise für IPv4, wenn keine Hostadresse angegeben ist.
Der ursprüngliche Fall betraf CasaOS unter Debian 12 in GCP, nicht ZimaOS. Die richtige Diagnose besteht darin, IPv4 ausdrücklich zu testen, das CasaOS-Gateway und die Docker-Portbindungen zu überprüfen und die Cloud-Firewall zu kontrollieren, bevor GRUB geändert oder IPv6 global deaktiviert wird.
IPv4 zuerst direkt testen
curl -4 -v http://127.0.0.1:80/
curl -4 -v http://SERVER_IPV4:80/
ss -ltnp | grep ':80'
Wenn lokales IPv4 funktioniert, der Zugriff über externes IPv4 jedoch fehlschlägt, liegt das Problem wahrscheinlich an der Host- oder Cloud-Firewall oder am Routing und nicht an der Bindung von CasaOS.
Docker-Portveröffentlichung umfasst normalerweise IPv4
Der aktuelle Leitfaden zur Docker-Portveröffentlichung von Docker besagt, dass normale veröffentlichte Ports über Hostadresszuordnungen erreichbar sind. Ein ausdrücklich auf IPv6 beschränktes Verhalten erfordert eine andere Konfiguration.
CasaOS selbst überprüfen
systemctl status casaos
journalctl -u casaos --no-pager -n 100
ss -ltnp | grep -E ':80|casaos'
Das aktuelle CasaOS-Installationsprogramm listet beim Ausgeben der Dashboard-URL weiterhin IPv4-Schnittstellenadressen auf. Eine funktionierende Installation ist daher nicht für einen ausschließlich über IPv6 möglichen Zugriff ausgelegt.
Die GCP-Firewall überprüfen
Stelle sicher, dass die VM über eine IPv4-Adresse und eine Route verfügt und dass eine Eingangsregel für den gewählten CasaOS-Webport vorhanden ist. Eine Cloud-Firewall kann Port 80 blockieren, obwohl der Dienst korrekt lauscht.
IPv6 nicht als erste Maßnahme global deaktivieren
Ältere CasaOS-Komponenten haben historisch vorausgesetzt, dass /proc/net/tcp6 vorhanden ist. In einigen Versionen hat das Deaktivieren von IPv6 zu Problemen bei der App-Verwaltung geführt. Das Entfernen von IPv6 kann ein zweites Problem verursachen, ohne das erste zu beheben.
Wenn du eine IPv4-exklusive Docker-Bindung benötigst
ports:
- "0.0.0.0:8080:80"
Verwende eine explizite IPv4-Bindung nur, wenn du diese Compose-Definition kontrollierst und die Auswirkungen auf die Erreichbarkeit verstehst.
Den CasaOS-Webport überprüfen
Das Installationsprogramm kann einen anderen verfügbaren Port auswählen, wenn Port 80 bereits belegt ist. Bestätige den tatsächlichen HTTP-Port von CasaOS, bevor du annimmst, dass der Dienst fehlgeschlagen ist.
Der Leitfaden zur Docker-Netzwerkkommunikation behandelt dieselben Grundlagen der Netzwerkverbindung.
sysctl erst nach einem Test der tatsächlichen Verbindung überprüfen
Wenn du weiterhin ein Dual-Stack-Socket-Verhalten vermutest, überprüfe sysctl net.ipv6.bindv6only. Ein Wert von 0 ermöglicht es vielen IPv6-Wildcard-Sockets, IPv4-zugeordnete Verbindungen zu akzeptieren; ein Wert von 1 beschränkt sie auf IPv6. Ändere diese Einstellung nicht systemweit, wenn du nicht alle betroffenen Dienste kennst.
Die tatsächlich veröffentlichten Docker-Adressen überprüfen
docker ps --format 'table {{.Names}} {{.Ports}}'
docker inspect CONTAINER --format '{{json .NetworkSettings.Ports}}'
Damit siehst du, ob Docker eine IPv4-Zuordnung wie 0.0.0.0:PORT, eine IPv6-Zuordnung oder beide erstellt hat. Das ist zuverlässiger, als das Verhalten aus einer einzelnen Zeile der Prozessliste abzuleiten.
Beachten, dass GCP über zwei Firewall-Ebenen verfügt
Ein Debian-Host kann eigene nftables-/iptables-Regeln haben, während GCP den Eingang in der VPC-Firewall separat steuert. Ein Dienst kann lokal korrekt funktionieren und dennoch von außen nicht erreichbar sein, weil eine der beiden Ebenen den Port blockiert.
FAQ
Bedeutet :::80 immer, dass nur IPv6 verwendet wird?
Nein. Überprüfe dies mit curl -4, bevor du zu diesem Schluss kommst.
Sollte ich IPv6 in GRUB deaktivieren?
Nicht als ersten Schritt bei der Fehlersuche. Dadurch können Komponenten beschädigt werden, die IPv6-Kernelschnittstellen voraussetzen.
Warum funktioniert localhost, aber öffentliches IPv4 nicht?
Überprüfe die Cloud-Firewall, die Sicherheitsgruppe, die Route und die Host-Firewall.
Ist dies ein ZimaOS-Problem?
Der ursprüngliche Thread betrifft CasaOS, das unter Debian 12 installiert wurde, nicht ZimaOS.
