Gemenskapslösning

CasaOS IPv4 fungerar inte: Kontrollera IPv6 och Docker-bindningar

A CasaOS user on Debian 12 in GCP saw port 80 reported as tcp6 and then broke web access after disabling IPv6 before installation.

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.