ERR_NETWORK_CHANGED: o que significa e como corrigir
ERR_NETWORK_CHANGED significa que o Chrome cancelou a requisição porque a rede do seu dispositivo mudou enquanto a página carregava. Trocar de Wi-Fi, conectar uma VPN ou um adaptador de rede que liga ou desliga é a causa usual, então o site em si raramente tem culpa.
O que significa ERR_NETWORK_CHANGED
O Chromium define NETWORK_CHANGED (-21) como “The network changed.” (a rede mudou). O Chrome escuta o sistema operacional para detectar mudanças de rede: um novo endereço IP numa interface, uma interface que aparece ou some, uma troca entre Wi-Fi, cabo e dados móveis. Quando o sistema informa uma mudança de endereço IP, a pilha de rede do Chrome faz uma limpeza. No código-fonte do Chromium, ela cancela as tentativas de conexão ainda em andamento, fecha os sockets ociosos e fecha ou aposenta as sessões HTTP/2 e QUIC abertas. As requisições que dependiam de uma tentativa cancelada ou de uma conexão fechada falham com ERR_NETWORK_CHANGED.
O motivo está em como o TCP funciona. A RFC 9293 identifica uma conexão pelos endereços e portas das duas pontas, então, depois que o endereço local muda, as conexões antigas não conseguem mais transportar dados. Cancelá-las de imediato permite que a próxima tentativa comece limpa na nova rede, em vez de esperar por um timeout.
O gatilho é uma mensagem do sistema operacional, não uma medição da conexão. A Internet pode voltar a funcionar um segundo depois. Um cliente de VPN que adiciona um adaptador virtual pode disparar o evento enquanto a página carrega, e é por isso que um simples recarregar costuma funcionar. As requisições que já usam uma conexão HTTP/1.x simples não fazem parte dessa limpeza. Elas continuam, ou falham sozinhas se o endereço antigo parou de funcionar.
Como o erro aparece
O Chrome mostra “Your connection was interrupted” (sua conexão foi interrompida) com o texto “A network change was detected” (uma mudança de rede foi detectada) e o código ERR_NETWORK_CHANGED, além de um botão de recarregar. Edge, Brave, Opera e outros navegadores baseados em Chromium mostram a mesma página.
Desenvolvedores encontram o erro no console do DevTools e no código. Uma chamada fetch() cancelada dessa forma é rejeitada com um TypeError, e a linha no console fica assim:
GET https://example.com/api/items net::ERR_NETWORK_CHANGED
Uncaught (in promise) TypeError: Failed to fetch
Para ver as mudanças de rede da sua própria máquina em tempo real no Linux, execute ip monitor address. Ele imprime uma linha cada vez que um endereço é adicionado, e uma linha que começa com “Deleted” cada vez que um é removido. Se uma linha aparece toda vez que o Chrome mostra o erro, você achou o gatilho.
ERR_NETWORK_CHANGED e erros parecidos
O Chrome mostra vários destes sob o título “This site can't be reached”, então o código embaixo é o que os diferencia. Os números são os códigos de erro internos do Chromium.
| Erro | O que aconteceu no nível da rede ou do protocolo | Onde olhar primeiro |
|---|---|---|
| ERR_NETWORK_CHANGED (-21) | O sistema operacional informou uma mudança de rede ou de endereço IP, e o Chrome cancelou as requisições em andamento. | Clientes de VPN, roaming de Wi-Fi, adaptadores virtuais, configurações de energia do adaptador. |
| ERR_INTERNET_DISCONNECTED (-106) | O sistema operacional informa que a conexão com a Internet foi perdida. | Wi-Fi ou cabo, modo avião, o roteador. |
| ERR_NETWORK_ACCESS_DENIED (-138) | A permissão para usar a rede foi negada, o que, segundo o Chromium, é mais provavelmente causado por um firewall. | O firewall ou o software de segurança, e se o Chrome tem permissão para passar por ele. |
| ERR_ADDRESS_UNREACHABLE (-109) | O sistema operacional ou um roteador informou que não há rota até o endereço IP. | O roteamento no lado do cliente: rotas da VPN, a rede local, a configuração de IPv6. |
| ERR_NAME_NOT_RESOLVED (-105) | A consulta DNS não devolveu nenhum endereço IP utilizável, então nenhuma conexão foi tentada. | Os registros DNS do domínio e o resolvedor do dispositivo. |
| ERR_CONNECTION_TIMED_OUT (-118) | O SYN saiu e nada voltou até o cliente desistir. | Firewalls que descartam pacotes, e se o host está no ar. |
O que causa o ERR_NETWORK_CHANGED
- Troca de rede. Passar do Wi-Fi para um hotspot de celular, de um ponto de acesso para outro, ou do Wi-Fi para um cabo dá ao dispositivo um novo endereço.
- Uma VPN conectando ou desconectando. O cliente adiciona ou remove um adaptador virtual e muda as rotas. Um cliente que se reconecta sozinho repete isso toda vez.
- Adaptadores virtuais de outros softwares. Ferramentas de máquinas virtuais e contêineres (Hyper-V, VirtualBox, VMware, WSL, Docker) criam adaptadores que podem aparecer, sumir ou mudar de endereço enquanto você navega.
- Mudanças de IPv6. Endereços e rotas IPv6 podem ser adicionados ou removidos quando um roteador reinicia ou envia prefixos novos, ou quando você liga ou desliga o IPv6 de um adaptador.
- Um novo endereço via DHCP. Um dispositivo que sai da suspensão, ou um roteador que reinicia, pode receber um novo endereço local.
- Um adaptador instável. Um sinal de Wi-Fi fraco que cai e reconecta, um cabo solto, um driver com defeito ou uma configuração de economia de energia que desliga o adaptador.
- Várias ferramentas de rede ao mesmo tempo. Dois clientes de VPN, uma suíte de segurança e um gerenciador de rede podem alterar as interfaces de um lado para o outro.
Correções para o visitante
Experimente estes passos primeiro em qualquer sistema e depois use a seção do seu sistema.
- Espere alguns segundos e recarregue. Depois da mudança, a requisição seguinte usa a nova rede.
- Conecte a VPN primeiro e só então carregue páginas. Se o erro aparece toda vez que a VPN conecta, espere até ela mostrar “conectado” antes de abrir o site.
- Fique numa única rede enquanto uma página ou um download carrega. Não desligue e ligue o Wi-Fi, e não passe de um ponto de acesso para outro no meio de uma transferência.
- Reinicie as conexões do Chrome. Abra
chrome://net-internals/#socketse clique em “Close idle sockets” e “Flush socket pools”. Na aba “DNS”, clique em “Clear host cache”. - Reinicie o roteador se o erro voltar a cada poucos minutos.
Windows
Abra um Prompt de Comando como administrador, execute estes comandos e reinicie o computador:
ipconfig /release
ipconfig /renew
ipconfig /flushdns
netsh winsock reset
netsh int ip reset
Liste os adaptadores no PowerShell com Get-NetAdapter. Desative os adaptadores de software de máquina virtual ou de VPN que você não usa em ncpa.cpl, a janela Conexões de Rede (pressione Win+R e digite o nome). Para um adaptador Wi-Fi que se desliga sozinho, abra o Gerenciador de Dispositivos, dê um clique duplo no adaptador e, na aba “Gerenciamento de Energia”, desmarque a opção que permite ao computador desligar o dispositivo para economizar energia. Como teste, você também pode desmarcar “Protocolo IP Versão 6 (TCP/IPv6)” nas propriedades do adaptador. Se o erro parar, a configuração de IPv6 do seu roteador ou provedor é a causa provável. Um driver mais novo do fabricante do adaptador é o último passo a tentar.
macOS
Desligue e ligue o adaptador Wi-Fi de novo pelo Terminal. O nome do dispositivo costuma ser en0, mas confira antes:
networksetup -listallhardwareports
networksetup -setairportpower en0 off
networksetup -setairportpower en0 on
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Remova em Ajustes do Sistema > Rede os perfis de VPN e os serviços de rede virtuais que você não usa mais.
Linux
nmcli radio wifi off && nmcli radio wifi on
sudo systemctl restart NetworkManager
resolvectl flush-caches
Use ip monitor address para observar as mudanças de endereço enquanto você reproduz o erro. Se os endereços continuam mudando sem nenhuma ação sua, olhe os logs do gerenciador de rede (journalctl -u NetworkManager) e o que mais roda na máquina, como clientes de VPN e ferramentas de contêineres.
Android e ChromeOS
Ligue e desligue o modo avião, depois esqueça a rede Wi-Fi e entre nela de novo. Se o erro volta só numa rede Wi-Fi, tente outra rede ou dados móveis para descobrir se o ponto de acesso é o culpado. Num celular com um app de VPN, espere a VPN aparecer como conectada antes de abrir páginas.
O que donos de site e desenvolvedores podem fazer
Você não consegue impedir que a rede de um visitante mude, e não há nada no seu servidor para corrigir. O que você pode fazer é preparar o site e o app para se recuperarem quando uma requisição é cancelada dessa forma.
- Repita requisições idempotentes. GET, PUT e DELETE podem ser enviados de novo com segurança. A RFC 9110 explica que métodos idempotentes são os que um cliente pode repetir automaticamente depois de uma falha de comunicação.
- Proteja as requisições POST com uma chave de idempotência. O cliente envia uma chave única com a requisição, e o servidor devolve o resultado guardado quando vê a mesma chave de novo. Assim a repetição não consegue criar um segundo pedido.
- Torne uploads e downloads grandes retomáveis. Envie os arquivos em partes que podem ser repetidas e aceite requisições de intervalo (
RangeeAccept-Ranges), para que um download continue de onde parou. - Reconecte as conexões de longa duração. Clientes de WebSocket e de server-sent events precisam de lógica de reconexão com espera crescente.
async function fetchWithRetry(url, options = {}, tries = 3) {
for (let attempt = 1; ; attempt++) {
try {
return await fetch(url, options);
} catch (err) {
// Falhas de rede como o ERR_NETWORK_CHANGED rejeitam com um TypeError.
if (attempt >= tries) throw err;
await new Promise(resolve => setTimeout(resolve, 500 * attempt));
}
}
}
Use esse wrapper só para requisições que podem ser repetidas com segurança. No servidor, uma requisição que o cliente abandona costuma aparecer como um 499 no log de acesso do nginx, que não é um erro do servidor. O guia 499 Client Closed Request explica como ler essas entradas.
Como aparece visto de fora
Uma verificação de monitoramento roda a partir de servidores fixos, então nunca troca de rede e não consegue reproduzir esse erro. É isso também que a torna útil aqui: ela mostra se o próprio site se comportou normalmente enquanto um visitante via o erro.
- Normal em todos os pontos de verificação, erro em um único dispositivo: a causa está nesse dispositivo ou na rede dele.
- Relatos só de usuários móveis ou em roaming: as redes deles mudam com frequência. Olhe o código do app ou da página e adicione tentativas repetidas.
- Relatos de muitos usuários numa mesma rede ou provedor ao mesmo tempo: um roteador, um ponto de acesso ou o provedor pode estar reiniciando. Seu site provavelmente não é afetado.
- Respostas lentas ou com falha também nos pontos de verificação: é um problema separado do seu lado, e os visitantes veriam outros códigos de erro, como um timeout ou um reset.
O teste de ping faz ping num site, servidor ou endereço IP a partir de mais de 300 locais com um clique e mede a latência dos pontos de verificação até o seu host, não a partir da sua própria conexão. Se o host responde normalmente ali enquanto o seu dispositivo continua falhando, o problema é local.
O que o monitoramento mostra quando os visitantes relatam o problema
Quando várias pessoas escrevem que o site “fica interrompendo”, compare os relatos com os resultados do seu monitoramento no mesmo horário. A HostTracker verifica sites a partir de mais de 300 pontos de verificação em 158 cidades e envia alertas por e-mail, SMS, chamada de voz, Slack, Telegram e mais. Verificações que ficaram verdes durante os relatos mostram que a causa estava do lado dos visitantes.
Perguntas frequentes
O ERR_NETWORK_CHANGED é um problema do site?
Quase nunca. O erro vem do navegador e da rede do visitante, que um site não controla. Ainda assim, um site pode se recuperar dele com tentativas repetidas.
Por que aparece quando me conecto a uma VPN?
Uma VPN adiciona um adaptador virtual e muda as rotas. O sistema operacional informa isso como uma mudança de rede, e o Chrome cancela as requisições que estavam em andamento naquele momento. Recarregue depois que a VPN mostrar que está conectada.
Por que volta a cada poucos minutos?
Algo continua mudando a sua rede. Os motivos típicos são um sinal de Wi-Fi que cai, um adaptador que se desliga sozinho, uma VPN que se reconecta ou duas ferramentas de rede disputando o mesmo adaptador. Observe as mudanças com ip monitor address no Linux ou confira a lista de adaptadores no Windows com Get-NetAdapter.
Isso quer dizer que minha Internet caiu?
Não. Na maioria dos casos a Internet volta a funcionar em segundos. Se não voltar, você normalmente verá ERR_INTERNET_DISCONNECTED ou um timeout.
Desativar o IPv6 resolve?
Às vezes, quando os endereços ou as rotas IPv6 da sua rede ficam mudando. Trate isso como um teste. Se ajudar, corrija a configuração de IPv6 do roteador e ative o IPv6 de novo.
Limpar o cache do navegador ajuda?
Não. O erro é sobre conexões, não sobre arquivos guardados. O botão “Flush socket pools” em chrome://net-internals é o mais próximo de uma correção dentro do navegador.
Por que downloads grandes falham com esse erro?
Uma transferência longa tem mais tempo para encontrar uma mudança de rede. Um gerenciador de downloads ou um site que aceita requisições de intervalo pode continuar de onde a transferência parou. Um download simples pelo navegador geralmente precisa recomeçar.
Fontes e leitura adicional
- Chromium net error list: as definições de NETWORK_CHANGED (-21) e dos outros códigos da tabela acima.
- Chromium: transport_client_socket_pool.cc: o que os pools de sockets fazem quando o endereço IP muda (
OnIPAddressChanged). - RFC 9110, HTTP Semantics: a seção 9.2.2 sobre métodos idempotentes e repetições automáticas, e a seção 14 sobre requisições de intervalo.
- Microsoft: ipconfig: as opções
/release,/renewe/flushdns.