Não desative o IPv6 só porque o ss mostra um serviço CasaOS ou Docker à escuta em :::80. No Linux, um socket IPv6 à escuta em todas as interfaces também pode aceitar IPv4, dependendo das definições do socket, e o Docker normalmente publica as portas em IPv4 quando não é especificado nenhum endereço de anfitrião.
O caso original era o CasaOS no Debian 12, no GCP, e não o ZimaOS. O diagnóstico correto consiste em testar explicitamente o IPv4, verificar o gateway do CasaOS e os mapeamentos de portas do Docker, e confirmar a firewall da cloud antes de alterar o GRUB ou desativar globalmente o IPv6.
Teste primeiro o IPv4 diretamente
curl -4 -v http://127.0.0.1:80/
curl -4 -v http://SERVER_IPV4:80/
ss -ltnp | grep ':80'
Se o IPv4 local funcionar mas o IPv4 remoto falhar, é provável que o problema esteja na firewall do anfitrião ou da cloud, ou no encaminhamento, e não na ligação do CasaOS.
A publicação de portas do Docker normalmente inclui IPv4
O atual guia de publicação de portas do Docker indica que as portas publicadas normalmente ficam acessíveis através dos mapeamentos de endereços do anfitrião; um comportamento explicitamente apenas IPv6 requer uma configuração diferente.
Verifique o próprio CasaOS
systemctl status casaos
journalctl -u casaos --no-pager -n 100
ss -ltnp | grep -E ':80|casaos'
O instalador atual do CasaOS continua a enumerar os endereços IPv4 das interfaces de rede ao apresentar o URL do painel, pelo que uma instalação funcional não foi concebida para exigir acesso apenas por IPv6.
Verifique a firewall do GCP
Confirme que a máquina virtual tem um endereço IPv4, uma rota e uma regra de entrada para a porta Web escolhida pelo CasaOS. Uma firewall da cloud pode bloquear a porta 80 mesmo quando o serviço está corretamente à escuta.
Não desative globalmente o IPv6 como primeira solução
Componentes mais antigos do CasaOS esperavam, historicamente, que /proc/net/tcp6 existisse, e a desativação do IPv6 causou problemas de gestão de aplicações em algumas versões. Remover o IPv6 pode criar um segundo problema sem resolver o primeiro.
Se precisar de uma ligação Docker apenas em IPv4
ports:
- "0.0.0.0:8080:80"
Utilize uma ligação IPv4 explícita apenas quando controlar essa definição do Compose e compreender as implicações de exposição.
Verifique a porta Web do CasaOS
O instalador pode escolher outra porta disponível se a porta 80 já estiver ocupada. Confirme a porta HTTP efetivamente utilizada pelo CasaOS antes de assumir que o serviço falhou.
O guia de redes do Docker aborda os mesmos fundamentos de rede.
Verifique o sysctl apenas depois de testar a conectividade real
Se continuar a suspeitar do comportamento de sockets dual-stack, consulte sysctl net.ipv6.bindv6only. O valor 0 permite que muitos sockets IPv6 abrangentes aceitem ligações mapeadas em IPv4; o valor 1 torna-os apenas IPv6. Não altere esta definição globalmente sem compreender todos os serviços afetados.
Verifique os endereços efetivamente publicados pelo Docker
docker ps --format 'table {{.Names}} {{.Ports}}'
docker inspect CONTAINER --format '{{json .NetworkSettings.Ports}}'
Isto mostra se o Docker criou um mapeamento IPv4 como 0.0.0.0:PORT, um mapeamento IPv6 ou ambos. É mais fiável do que inferir o comportamento a partir de uma única linha da lista de processos.
Lembre-se de que o GCP tem duas camadas de firewall
Um anfitrião Debian pode ter as suas próprias regras nftables/iptables, enquanto o GCP controla separadamente a entrada da firewall da VPC. Um serviço pode funcionar corretamente localmente, mas continuar inacessível externamente porque qualquer uma das camadas bloqueia a porta.
FAQ
:::80 significa sempre apenas IPv6?
Não. Verifique com curl -4 antes de tirar essa conclusão.
Devo desativar o IPv6 no GRUB?
Não como primeiro passo de diagnóstico. Isso pode interromper componentes que esperam interfaces de kernel IPv6.
Porque é que o localhost funciona, mas o IPv4 público não?
Verifique a firewall da cloud, o grupo de segurança, a rota e a firewall do anfitrião.
Este é um problema do ZimaOS?
A discussão original diz respeito ao CasaOS instalado no Debian 12, e não ao ZimaOS.
