Inaktivera inte IPv6 bara för att ss visar att en CasaOS- eller Docker-tjänst lyssnar på :::80. I Linux kan en IPv6-lyssnare med jokertecken även acceptera IPv4 beroende på socketinställningarna, och Docker publicerar normalt portar till IPv4 när ingen värdadress anges.
Det ursprungliga fallet gällde CasaOS på Debian 12 i GCP, inte ZimaOS. Den korrekta felsökningen är att testa IPv4 uttryckligen, kontrollera CasaOS-gatewayen och Dockers portbindningar samt granska molnbrandväggen innan du ändrar GRUB eller inaktiverar IPv6 globalt.
Testa IPv4 direkt först
curl -4 -v http://127.0.0.1:80/
curl -4 -v http://SERVER_IPV4:80/
ss -ltnp | grep ':80'
Om lokal IPv4 fungerar men fjärransluten IPv4 misslyckas ligger problemet sannolikt i värdens eller molnets brandvägg eller i routningen, snarare än i CasaOS bindning.
Docker-publicering av portar inkluderar normalt IPv4
Dockers aktuella guide för portpublicering anger att normalt publicerade portar kan nås via värdens adressmappningar. Explicit IPv6-exklusivt beteende kräver en annan konfiguration.
Kontrollera själva CasaOS
systemctl status casaos
journalctl -u casaos --no-pager -n 100
ss -ltnp | grep -E ':80|casaos'
Det aktuella CasaOS-installationsprogrammet listar fortfarande IPv4-adresser för nätverksgränssnitt när instrumentpanelens URL skrivs ut, så en fungerande installation är inte utformad för att kräva åtkomst enbart via IPv6.
Kontrollera GCP-brandväggen
Bekräfta att den virtuella maskinen har en IPv4-adress, en routning och en inkommande regel för den valda CasaOS-webbporten. En molnbrandvägg kan blockera port 80 även när tjänsten lyssnar korrekt.
Inaktivera inte IPv6 globalt som första åtgärd
Äldre CasaOS-komponenter har historiskt förväntat sig att /proc/net/tcp6 finns, och att inaktivera IPv6 har orsakat problem med apphanteringen i vissa versioner. Att ta bort IPv6 kan skapa ett ytterligare problem utan att lösa det första.
Om du behöver en IPv4-exklusiv Docker-bindning
ports:
- "0.0.0.0:8080:80"
Använd en explicit IPv4-bindning endast när du kontrollerar den Compose-definitionen och förstår konsekvenserna för exponeringen.
Kontrollera CasaOS webbport
Installationsprogrammet kan välja en annan ledig port om port 80 redan används. Bekräfta den faktiska HTTP-porten för CasaOS innan du antar att tjänsten misslyckades.
Guiden om Docker-nätverk går igenom samma grundläggande nätverksprinciper.
Kontrollera sysctl först efter att du testat verklig anslutning
Om du fortfarande misstänker beteende hos sockets med stöd för dubbla IP-versioner kan du kontrollera sysctl net.ipv6.bindv6only. Värdet 0 tillåter många IPv6-sockets med jokertecken att acceptera IPv4-mappade anslutningar; värdet 1 gör dem till IPv6-enbart. Ändra det inte systemomfattande om du inte förstår vilka tjänster som påverkas.
Kontrollera Dockers faktiska publicerade adresser
docker ps --format 'table {{.Names}} {{.Ports}}'
docker inspect CONTAINER --format '{{json .NetworkSettings.Ports}}'
Detta visar om Docker skapade en IPv4-mappning som 0.0.0.0:PORT, en IPv6-mappning eller båda. Det är mer tillförlitligt än att dra slutsatser från en enda rad i processlistan.
Kom ihåg att GCP har två brandväggslager
En Debian-värd kan ha egna nftables-/iptables-regler samtidigt som GCP separat styr inkommande trafik i VPC-brandväggen. En tjänst kan fungera korrekt lokalt men ändå vara otillgänglig externt eftersom något av lagren blockerar porten.
Vanliga frågor
Betyder :::80 alltid att tjänsten endast använder IPv6?
Nej. Kontrollera med curl -4 innan du drar den slutsatsen.
Bör jag inaktivera IPv6 i GRUB?
Inte som första felsökningssteg. Det kan göra att komponenter som förväntar sig IPv6-kärninterfaces slutar fungera.
Varför fungerar localhost men inte publik IPv4?
Kontrollera molnbrandväggen, säkerhetsgruppen, routningen och värdens brandvägg.
Är detta ett ZimaOS-problem?
Den ursprungliga tråden gäller CasaOS installerat på Debian 12, inte ZimaOS.
