ERR_NETWORK_CHANGED: ne anlama gelir ve nasıl düzeltilir
ERR_NETWORK_CHANGED, sayfa yüklenirken cihazınızın ağı değiştiği için Chrome'un isteği iptal ettiği anlamına gelir. Wi-Fi ağını değiştirmek, bir VPN'e bağlanmak ya da bir ağ bağdaştırıcısının açılıp kapanması olağan nedendir; bu yüzden web sitesinin kendisi nadiren suçludur.
ERR_NETWORK_CHANGED ne anlama gelir
Chromium, NETWORK_CHANGED (-21) hatasını "The network changed." (ağ değişti) olarak tanımlar. Chrome, ağ değişiklikleri için işletim sistemini dinler: bir arayüzde yeni bir IP adresi, ortaya çıkan ya da kaybolan bir arayüz, Wi-Fi, kablo ve mobil veri arasında geçiş. Sistem bir IP adresi değişikliği bildirdiğinde Chrome'un ağ yığını temizlik yapar. Chromium kaynak kodunda bu, sürmekte olan bağlantı denemelerini iptal etmek, boşta kalan soketleri kapatmak ve açık HTTP/2 ile QUIC oturumlarını kapatmak veya kullanımdan kaldırmak anlamına gelir. İptal edilen bir denemeye ya da kapatılan bir bağlantıya bağlı olan istekler ERR_NETWORK_CHANGED ile başarısız olur.
Arka plandaki neden TCP'nin çalışma biçimidir. RFC 9293 bir bağlantıyı iki uçtaki adresler ve portlarla tanımlar; yerel adres değiştikten sonra eski bağlantılar artık veri taşıyamaz. Onları hemen iptal etmek, bir zaman aşımını beklemek yerine sonraki denemenin yeni ağda temiz bir şekilde başlamasını sağlar.
Tetikleyici, bağlantıya dair bir ölçüm değil, işletim sisteminden gelen bir iletidir. İnternet bir saniye sonra yeniden çalışıyor olabilir. Sanal bir bağdaştırıcı ekleyen bir VPN istemcisi, sayfanız yüklenirken olayı tetikleyebilir; sade bir yeniden yüklemenin genellikle işe yaramasının nedeni budur. Zaten düz bir HTTP/1.x bağlantısı tutan istekler bu temizliğin parçası değildir. Onlar devam eder ya da eski adres çalışmayı bıraktıysa kendiliğinden başarısız olur.
Hata nasıl görünür
Chrome, "Your connection was interrupted" başlığı altında "A network change was detected" metnini ve ERR_NETWORK_CHANGED kodunu, bir de Yeniden Yükle düğmesini gösterir. Edge, Brave, Opera ve diğer Chromium tabanlı tarayıcılar aynı sayfayı gösterir.
Geliştiriciler bunu DevTools konsolunda ve kodda görür. Bu şekilde iptal edilen bir fetch() çağrısı bir TypeError ile reddedilir ve konsol satırı şuna benzer:
GET https://example.com/api/items net::ERR_NETWORK_CHANGED
Uncaught (in promise) TypeError: Failed to fetch
Linux'ta kendi ağ değişikliklerinizi anlık görmek için ip monitor address komutunu çalıştırın. Bir adres eklendiğinde bir satır, kaldırıldığında "Deleted" ile başlayan bir satır yazdırır. Chrome hatayı her gösterdiğinde bir satır beliriyorsa tetikleyiciyi bulmuşsunuz demektir.
ERR_NETWORK_CHANGED ile benzer hatalar
Chrome bunların birkaçını "This site can't be reached" başlığı altında gösterir; bu yüzden onları birbirinden ayıran, alttaki koddur. Parantezli sayılar Chromium'un iç hata kodlarıdır.
| Hata | Ağ veya protokol düzeyinde ne oldu | İlk bakılacak yer |
|---|---|---|
| ERR_NETWORK_CHANGED (-21) | İşletim sistemi bir ağ veya IP adresi değişikliği bildirdi ve Chrome yoldaki istekleri iptal etti. | VPN istemcileri, Wi-Fi geçişleri (roaming), sanal bağdaştırıcılar, bağdaştırıcı güç ayarları. |
| ERR_INTERNET_DISCONNECTED (-106) | İşletim sistemi, internet bağlantısının koptuğunu bildiriyor. | Wi-Fi veya kablo, uçak modu, yönlendirici. |
| ERR_NETWORK_ACCESS_DENIED (-138) | Ağı kullanma izni reddedildi; Chromium bunun büyük olasılıkla bir güvenlik duvarından kaynaklandığını söyler. | Güvenlik duvarı veya güvenlik yazılımı ve Chrome'a geçiş izni verilip verilmediği. |
| ERR_ADDRESS_UNREACHABLE (-109) | İşletim sistemi ya da bir yönlendirici, IP adresine giden bir rota olmadığını bildirdi. | İstemci tarafındaki yönlendirme: VPN rotaları, yerel ağ, IPv6 kurulumu. |
| ERR_NAME_NOT_RESOLVED (-105) | DNS sorgusu kullanılabilir bir IP adresi döndürmedi, bu yüzden bağlantı denenmedi. | Alan adının DNS kayıtları ve cihazın çözümleyicisi. |
| ERR_CONNECTION_TIMED_OUT (-118) | SYN paketi gitti ve istemci vazgeçene kadar hiçbir şey dönmedi. | Paketleri düşüren güvenlik duvarları ve sunucunun ayakta olup olmadığı. |
ERR_NETWORK_CHANGED'e ne sebep olur
- Ağ değiştirmek. Wi-Fi'dan mobil bir erişim noktasına, bir erişim noktasından diğerine ya da Wi-Fi'dan kabloya geçmek cihaza yeni bir adres verir.
- Bir VPN'in bağlanması veya bağlantıyı kesmesi. İstemci sanal bir bağdaştırıcı ekler ya da kaldırır ve rotaları değiştirir. Kendiliğinden yeniden bağlanan bir istemci, bunu her seferinde tekrarlar.
- Diğer yazılımların sanal bağdaştırıcıları. Sanal makine ve konteyner araçları (Hyper-V, VirtualBox, VMware, WSL, Docker), siz gezinirken ortaya çıkabilen, kaybolabilen veya adresi değişebilen bağdaştırıcılar oluşturur.
- IPv6 değişiklikleri. Bir yönlendirici yeniden başladığında veya yeni önekler gönderdiğinde ya da bir bağdaştırıcıda IPv6'yı açıp kapattığınızda IPv6 adresleri ve rotaları eklenebilir veya kaldırılabilir.
- DHCP'den yeni bir adres. Uykudan uyanan bir cihaz ya da yeniden başlayan bir yönlendirici yeni bir yerel adres alabilir.
- Kararsız bir bağdaştırıcı. Kopup yeniden bağlanan zayıf bir Wi-Fi sinyali, gevşek bir kablo, hatalı bir sürücü veya bağdaştırıcıyı kapatan bir güç tasarrufu ayarı.
- Aynı anda birden çok ağ aracı. İki VPN istemcisi, bir güvenlik paketi ve bir ağ yöneticisi arayüzleri sürekli değiştirebilir.
Ziyaretçi için çözümler
Önce bu adımları her sistemde deneyin, sonra sisteminize ait bölüme geçin.
- Birkaç saniye bekleyin ve yeniden yükleyin. Değişiklikten sonra bir sonraki istek yeni ağı kullanır.
- Önce VPN'e bağlanın, sonra sayfaları yükleyin. Hata VPN her bağlandığında çıkıyorsa, siteyi açmadan önce VPN'in "bağlandı" göstermesini bekleyin.
- Bir sayfa ya da indirme yüklenirken tek bir ağda kalın. Wi-Fi'yi kapatıp açmayın ve aktarımın ortasında erişim noktaları arasında gezinmeyin.
- Chrome'un bağlantılarını sıfırlayın.
chrome://net-internals/#socketssayfasını açın ve "Close idle sockets" ile "Flush socket pools" düğmelerine tıklayın. "DNS" sekmesinde "Clear host cache" düğmesine tıklayın. - Hata birkaç dakikada bir geri geliyorsa yönlendiriciyi yeniden başlatın.
Windows
Yönetici olarak bir Komut İstemi açın, şu komutları çalıştırın ve bilgisayarı yeniden başlatın:
ipconfig /release
ipconfig /renew
ipconfig /flushdns
netsh winsock reset
netsh int ip reset
PowerShell'de Get-NetAdapter ile bağdaştırıcıları listeleyin. Kullanmadığınız sanal makine ya da VPN yazılımına ait bağdaştırıcıları, Ağ Bağlantıları penceresi olan ncpa.cpl içinde devre dışı bırakın (Win+R tuşlarına basıp adı yazın). Kendini kapatan bir Wi-Fi bağdaştırıcısı için Aygıt Yöneticisi'ni açın, bağdaştırıcıya çift tıklayın ve "Güç Yönetimi" sekmesinde "Bilgisayarın güç tasarrufu için bu aygıtı kapatmasına izin ver" seçeneğinin işaretini kaldırın. Test olarak, bağdaştırıcının özelliklerinde "Internet Protocol Version 6 (TCP/IPv6)" işaretini de kaldırabilirsiniz. Hata duruyorsa, olası neden yönlendiricinizin veya sağlayıcınızın IPv6 kurulumudur. Denenecek son adım, bağdaştırıcının üreticisinden gelen daha yeni bir sürücüdür.
macOS
Wi-Fi bağdaştırıcısını Terminal'den kapatıp yeniden açın. Aygıt adı çoğunlukla en0'dır, ama önce kontrol edin:
networksetup -listallhardwareports
networksetup -setairportpower en0 off
networksetup -setairportpower en0 on
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Artık kullanmadığınız VPN profillerini ve sanal ağ hizmetlerini Sistem Ayarları > Ağ bölümünden kaldırın.
Linux
nmcli radio wifi off && nmcli radio wifi on
sudo systemctl restart NetworkManager
resolvectl flush-caches
Hatayı yeniden üretirken adres değişikliklerini izlemek için ip monitor address kullanın. Siz hiçbir şey yapmadığınız halde adresler değişmeye devam ediyorsa, ağ yöneticisinin günlüklerine (journalctl -u NetworkManager) ve makinede başka nelerin çalıştığına, örneğin VPN istemcilerine ve konteyner araçlarına bakın.
Android ve ChromeOS
Uçak modunu açıp kapatın, sonra Wi-Fi ağını unutup yeniden katılın. Hata yalnızca bir Wi-Fi ağında geri geliyorsa, erişim noktasının suçlu olup olmadığını anlamak için başka bir ağ veya mobil veri deneyin. VPN uygulaması olan bir telefonda, sayfaları açmadan önce VPN'in bağlı görünmesini bekleyin.
Site sahipleri ve geliştiriciler ne yapabilir
Bir ziyaretçinin ağının değişmesini engelleyemezsiniz ve sunucunuzda düzeltilecek bir şey yoktur. Yapabileceğiniz, bir istek bu şekilde iptal edildiğinde sitenin ve uygulamanın toparlanmasını sağlamaktır.
- Idempotent istekleri yeniden deneyin. GET, PUT ve DELETE güvenle yeniden gönderilebilir. RFC 9110, idempotent yöntemlerin, bir istemcinin iletişim hatasından sonra otomatik olarak tekrarlayabileceği yöntemler olduğunu açıklar.
- POST isteklerini bir idempotency anahtarıyla koruyun. İstemci isteğiyle birlikte benzersiz bir anahtar gönderir; sunucu aynı anahtarı yeniden gördüğünde saklanan sonucu döndürür. Böylece yeniden deneme ikinci bir sipariş oluşturamaz.
- Büyük yükleme ve indirmeleri kaldığı yerden devam edecek şekilde tasarlayın. Dosyaları tekrarlanabilir parçalar halinde gönderin ve indirmenin durduğu yerden sürmesi için aralık isteklerini (
RangeveAccept-Ranges) destekleyin. - Uzun ömürlü bağlantıları yeniden kurun. WebSocket ve server-sent event istemcilerinin, giderek artan bir gecikmeyle yeniden bağlanma mantığına ihtiyacı vardır.
async function fetchWithRetry(url, options = {}, tries = 3) {
for (let attempt = 1; ; attempt++) {
try {
return await fetch(url, options);
} catch (err) {
// ERR_NETWORK_CHANGED gibi ağ hataları TypeError ile reddedilir.
if (attempt >= tries) throw err;
await new Promise(resolve => setTimeout(resolve, 500 * attempt));
}
}
}
Bu sarmalayıcıyı yalnızca tekrarı güvenli olan isteklerde kullanın. Sunucu tarafında, istemcinin vazgeçtiği bir istek genellikle nginx erişim günlüğünde 499 olarak görünür ve bu bir sunucu hatası değildir. 499 Client Closed Request rehberi, bu kayıtların nasıl okunacağını açıklar.
Dışarıdan nasıl görünür
Bir izleme kontrolü sabit sunuculardan çalışır; bu yüzden hiç ağ değiştirmez ve bu hatayı yeniden üretemez. Bunu burada yararlı kılan da budur: bir ziyaretçi hatayı görürken sitenin kendisinin normal davranıp davranmadığını gösterir.
- Her kontrol noktasından normal, tek cihazda hata: neden o cihazda veya ağındadır.
- Yalnızca mobil ya da dolaşımdaki kullanıcılardan bildirim geliyor: ağları sık değişir. Uygulamadaki veya sayfadaki koda bakın ve yeniden denemeler ekleyin.
- Aynı ağdaki ya da sağlayıcıdaki birçok kullanıcıdan aynı anda bildirim geliyor: bir yönlendirici, bir erişim noktası veya sağlayıcı yeniden başlıyor olabilir. Siteniz büyük olasılıkla etkilenmiyor.
- Kontrol noktalarından da yavaş ya da başarısız yanıtlar geliyor: bu sizin tarafınızda ayrı bir sorundur ve ziyaretçiler zaman aşımı veya sıfırlama gibi başka hata kodları görür.
Ping testi, bir web sitesine, sunucuya veya IP adresine tek tıkla 300'den fazla konumdan ping atar ve gecikmeyi kendi bağlantınızdan değil, kontrol noktalarından sunucunuza doğru ölçer. Sunucu orada normal yanıt verirken cihazınız başarısız olmaya devam ediyorsa sorun yereldir.
Ziyaretçiler bildirdiğinde izleme ne gösterir
Birkaç kişi sitenin "sürekli kesintiye uğradığını" yazdığında, bildirimlerini aynı zamana ait izleme sonuçlarınızla karşılaştırın. HostTracker web sitelerini 158 şehirdeki 300'den fazla kontrol noktasından kontrol eder ve e-posta, SMS, sesli arama, Slack, Telegram ve daha fazlasıyla uyarı gönderir. Bildirimler sırasında yeşil kalan kontroller, nedenin ziyaretçilerin tarafında olduğunu gösterir.
Sık sorulan sorular
ERR_NETWORK_CHANGED web sitesindeki bir sorun mu?
Neredeyse hiçbir zaman. Hata, bir sitenin denetlemediği tarayıcıdan ve ziyaretçinin ağından gelir. Bir site yine de yeniden denemelerle bundan toparlanabilir.
Neden bir VPN'e bağlandığımda çıkıyor?
Bir VPN sanal bir bağdaştırıcı ekler ve rotaları değiştirir. İşletim sistemi bunu bir ağ değişikliği olarak bildirir ve Chrome o sırada çalışan istekleri iptal eder. VPN bağlandığını gösterdikten sonra yeniden yükleyin.
Neden birkaç dakikada bir geri geliyor?
Bir şey ağınızı sürekli değiştiriyor. Tipik nedenler kopan bir Wi-Fi sinyali, kendini kapatan bir bağdaştırıcı, yeniden bağlanan bir VPN veya aynı bağdaştırıcı için yarışan iki ağ aracıdır. Değişiklikleri Linux'ta ip monitor address ile izleyin ya da Windows'ta bağdaştırıcı listesini Get-NetAdapter ile kontrol edin.
İnternetimin kesik olduğu anlamına mı geliyor?
Hayır. Çoğu durumda internet birkaç saniye içinde yeniden çalışır. Çalışmıyorsa genellikle bunun yerine ERR_INTERNET_DISCONNECTED ya da bir zaman aşımı görürsünüz.
IPv6'yı devre dışı bırakmak çözer mi?
Bazen; ağınızın IPv6 adresleri veya rotaları sürekli değişiyorsa. Bunu bir test olarak görün. İşe yararsa yönlendiricinin IPv6 yapılandırmasını düzeltin ve IPv6'yı yeniden açın.
Tarayıcı önbelleğini temizlemek yardımcı olur mu?
Hayır. Hata saklanan dosyalarla değil, bağlantılarla ilgilidir. chrome://net-internals içindeki "Flush socket pools" düğmesi, tarayıcının içindeki çözüme en yakın şeydir.
Büyük indirmeler neden bununla başarısız olur?
Uzun bir aktarımın bir ağ değişikliğiyle karşılaşması için daha çok zamanı vardır. Aralık isteklerini destekleyen bir indirme yöneticisi ya da site, aktarımın kaldığı yerden devam edebilir. Düz bir tarayıcı indirmesi genellikle baştan başlamak zorundadır.
Kaynaklar ve ek okumalar
- Chromium net error list: NETWORK_CHANGED (-21) ve yukarıdaki tablodaki diğer kodların tanımları.
- Chromium: transport_client_socket_pool.cc: IP adresi değiştiğinde soket havuzlarının yaptığı iş (
OnIPAddressChanged). - RFC 9110, HTTP Semantics: idempotent yöntemler ve otomatik yeniden denemeler hakkında bölüm 9.2.2, aralık istekleri hakkında bölüm 14.
- Microsoft: ipconfig:
/release,/renewve/flushdnsseçenekleri.