ERR_CONNECTION_RESET na jednej stronie
Jedna strona zwraca ERR_CONNECTION_RESET, a reszta działa? Sprawdzanie krok po kroku: sieć, rozszerzenia, proxy, DNS, zegar i filtrowanie SNI z curl.
Wszystkie inne strony się ładują, ale jedna ciągle kończy się komunikatem „Nie można uzyskać dostępu do tej witryny” i ERR_CONNECTION_RESET. Odświeżanie nic nie daje. Ten poradnik to drzewo decyzyjne. Każdy krok albo znajduje przyczynę, albo jedną wyklucza, a kolejność prowadzi od najszybszych testów do najbardziej wymownego.
Co naprawdę oznacza „połączenie zresetowane”
Połączenie TCP może zakończyć się grzecznie albo zostać natychmiast zerwane pakietem resetu (RST). Chrome i inne przeglądarki oparte na Chromium pokazują ERR_CONNECTION_RESET, gdy reset przychodzi, zanim strona zostanie dostarczona. Firefox pokazuje podobną stronę „Połączenie zostało przerwane”. Reset może pochodzić od serwera strony, od oprogramowania na Twoim komputerze albo od urządzenia w środku sieci, które podszywa się pod jedną ze stron połączenia.
Dlatego ten sam błąd ma tak różne przyczyny. Sztuka polega na ustaleniu, kto wysłał reset i kiedy.
Krok 1: czy to naprawdę tylko jedna strona?
Otwórz dwie lub trzy niezwiązane ze sobą strony, w tym jedną, którą odwiedzasz rzadko. Jeśli kilka nie działa, problem leży w połączeniu, routerze lub urządzeniu, a nie w tej jednej stronie. Uruchom ponownie router i sprawdź, czy inne urządzenia w tej samej sieci działają. Jeśli nie działa tylko jedna strona, idź dalej.
Krok 2: czy to tylko jedna sieć?
To najbardziej pouczający test i nic nie kosztuje. Otwórz stronę na danych komórkowych zamiast Wi-Fi albo podłącz laptop do hotspotu w telefonie. Jeśli strona otwiera się w jednej sieci, a w drugiej dostaje reset, problem dotyczy tej drugiej sieci. Typowe przyczyny opisujemy w artykule Dlaczego strona działa na danych komórkowych, ale nie na Wi-Fi? Jeśli nie działa nigdzie, bardziej prawdopodobną przyczyną jest sama strona albo Twoje urządzenie.
Krok 3: inna przeglądarka, okno prywatne, bez rozszerzeń
Spróbuj okna prywatnego lub incognito, w którym większość rozszerzeń jest domyślnie wyłączona. Potem spróbuj innej przeglądarki. Blokery reklam, rozszerzenia prywatności, dodatki „bezpiecznego przeglądania” i firmowe zasady przeglądarki mogą zamykać połączenia. Jeśli strona działa w oknie prywatnym, włączaj rozszerzenia po jednym, aż błąd wróci.
Krok 4: wyłącz inne VPN-y, proxy i skanowanie HTTPS
Wszystko, co znajduje się na drodze Twojego ruchu, może zresetować połączenie, które mu się nie podoba:
- Inna aplikacja VPN lub proxy. Wyłącz ją całkowicie i sprawdź ponownie.
- „Skanowanie HTTPS” lub „ochrona WWW” w antywirusie. Niektóre pakiety zabezpieczające sprawdzają ruch szyfrowany i zrywają połączenia, które uznają za ryzykowne. Na chwilę wstrzymaj tę funkcję, aby to sprawdzić, a potem ją włącz.
- Systemowe proxy. W Windows zajrzyj do Ustawienia → Sieć i Internet → Serwer proxy. W macOS zajrzyj do Ustawienia systemowe → Sieć → Twoje połączenie → Szczegóły → Proxy. Proxy, którego nie rozpoznajesz, albo pozostałość po starej aplikacji może blokować pojedyncze strony. Usuń tylko to, co na pewno ustawiłeś sam, a na komputerze zarządzanym zapytaj dział IT.
Krok 5: wyczyść pamięć podręczną DNS i spróbuj szyfrowanego DNS
Jeśli strona zmieniła serwery, Twoje urządzenie może nadal używać starego adresu, co może skończyć się resetem lub przekroczeniem czasu. Wyczyść pamięć podręczną:
# Windows (Command Prompt)
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Chrome's own cache: open chrome://net-internals/#dns and click "Clear host cache"
Następnie porównaj odpowiedź swojej sieci z niezależnym resolverem: nslookup example.com, a potem nslookup example.com 1.1.1.1. Jeśli się różnią i działa tylko niezależna odpowiedź, problemem jest DNS Twojej sieci. Szyfrowany DNS rozwiązuje taki rodzaj blokady, jak wyjaśniamy w artykule DoH i DoT. Same różne adresy nie są dowodem, bo duże strony przydzielają różne serwery różnym sieciom.
Krok 6: sprawdź datę i godzinę
Zły zegar zwykle powoduje błąd certyfikatu, a nie reset, ale sprawdzenie zajmuje dziesięć sekund. Włącz automatyczną datę i godzinę, a potem odśwież stronę. Nigdy nie klikaj dalej przy ostrzeżeniu o certyfikacie, żeby „przejść” przez niedziałającą stronę.
Krok 7: czy strona ma awarię?
Sprawdź stronę statusu serwisu lub jego oficjalne konto w mediach społecznościowych albo użyj publicznego narzędzia typu „czy nie działa tylko u mnie”. Jeśli strona ma awarię, poczekaj. Pamiętaj, że takie narzędzie sprawdza stronę ze swoich serwerów, więc wynik „działa” nie dowodzi, że strona jest osiągalna z Twojej sieci.
Krok 8: odczytaj reset za pomocą curl
Jeśli strona nadal dostaje reset tylko w jednej sieci, przyjrzyj się samemu handshake. curl jest wbudowany w Windows 10 i 11, macOS i większość systemów Linux. Uruchom go w terminalu, wpisując swoją stronę zamiast example.com:
curl -v https://example.com
Prawidłowe połączenie wypisuje kilka takich wierszy, a potem nagłówki strony. Dokładne brzmienie zależy od wersji curl i biblioteki TLS:
* Trying 203.0.113.10:443...
* Connected to example.com (203.0.113.10) port 443
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
...
< HTTP/2 200
Wzorzec wskazujący na filtrowanie po nazwie wygląda tak:
* Trying 203.0.113.10:443...
* Connected to example.com (203.0.113.10) port 443
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* Recv failure: Connection reset by peer
curl: (35) Recv failure: Connection reset by peer
Czytaj wiersz po wierszu. „Connected” oznacza, że połączenie TCP z adresem IP serwera się udało, więc adres nie jest po prostu zablokowany. „Client hello” to pierwsza wiadomość TLS i zawiera nazwę strony otwartym tekstem w polu zwanym SNI. „Connection reset by peer” zaraz po nim oznacza, że coś zerwało połączenie, gdy tylko nazwa stała się widoczna, zanim serwer zdążył odpowiedzieć. Niektóre sieci zamiast tego po cichu zamykają połączenie, co curl zgłasza jako nieoczekiwany koniec pliku lub błąd SSL „syscall”, a Chrome może pokazać ERR_CONNECTION_CLOSED.
Porównaj z innymi wynikami:
| Co pokazuje curl | Prawdopodobne znaczenie |
|---|---|
| Could not resolve host | Błąd DNS lub blokada DNS. Wróć do kroku 5 |
| Zatrzymuje się na „Trying”, potem przekroczenie czasu | Adres IP jest nieosiągalny: blokada IP, zapora lub niedziałający serwer |
| Reset lub zamknięcie zaraz po „Client hello”, tylko w jednej sieci | Prawdopodobnie filtrowanie SNI w tej sieci |
| Handshake kończy się, potem kod błędu HTTP | Strona odpowiedziała. Problem leży po jej stronie lub w Twoim koncie |
Aby wzmocnić wniosek, uruchom to samo polecenie w innej sieci. Jeśli tam działa, filtr należy do pierwszej sieci. To nie jest domysł o rzadkiej sytuacji. Badanie OONI i Centre for Internet and Society z 2020 roku wykazało, że w sieci Bharti Airtel połączenia TLS do niektórych stron były zrywane zaraz po ClientHello, a w Reliance Jio stosowano SNI w połączeniu z adresem docelowym. CIS osobno opisał stosowanie inspekcji SNI przez Jio, a raport omawiano na forum ntc.party. Więcej informacji: Jak sprawdzić, czy strona jest zablokowana.
Gdzie GreenTunnel pomaga, a gdzie nie
GreenTunnel to działający na urządzeniu lokalny VPN, który tworzymy, więc czytaj tę część ze świadomością naszej stronniczości. Celuje w dwie z opisanych wyżej przyczyn:
- Filtrowanie SNI. Zmienia kształt pierwszych pakietów TLS połączenia, na przykład dzieląc Client hello lub jego rekord TLS, tak aby filtr szukający nazwy strony nie znalazł jej w całości. Jak to działa: SNI, DPI i dzielenie rekordów TLS.
- Blokada DNS. Zapytania idą przez szyfrowany DNS (DoH lub DoT) do Cloudflare, Google lub Quad9, więc sieć nie może po cichu zwrócić fałszywej odpowiedzi.
Jego narzędzie Inspect URL wykonuje porównania z kroków 5 i 8 dla jednej strony w sieci, w której jesteś, i mówi, czy strona jest filtrowana po nazwie, dostaje fałszywą odpowiedź DNS, jest blokowana po adresie IP, czy wszystko jest w porządku. Jeśli któraś technika działa, możesz stuknąć Use this technique.
Nie pomoże, gdy:
- strona ma awarię albo reset pochodzi z jej własnego serwera lub usługi ochronnej,
- blokada dotyczy adresu IP, co objawia się przekroczeniem czasu na „Trying”,
- sieć firmowa, szkolna lub inna zarządzana celowo blokuje stronę. Zasady tej sieci ustala jej właściciel. Szanuj je i zapytaj administratora, jeśli potrzebujesz dostępu do pracy,
- przyczyną jest rozszerzenie, antywirus lub nieaktualny DNS na Twoim urządzeniu. Napraw je bezpośrednio.
Uczciwe ograniczenia i odpowiedzialne użycie
GreenTunnel nie ukrywa Twojego adresu IP i nie jest narzędziem do anonimowości. Nie obejdzie blokad IP, wyłączeń sieci ani list dozwolonych adresów i nie obiecuje otwarcia żadnej konkretnej strony. Filtry zmieniają się z czasem i różnią między dostawcami, więc dzisiejszy wynik może być inny za miesiąc.
Najczęściej zadawane pytania
Czy ERR_CONNECTION_RESET zawsze oznacza, że strona jest zablokowana?
Nie. Mogą go powodować rozszerzenia, skanowanie HTTPS w antywirusie, pozostawione proxy, nieaktualny DNS lub sama strona. Blokada staje się prawdopodobna dopiero wtedy, gdy reset zdarza się w jednej sieci, zaraz po Client hello, a strona działa gdzie indziej.
Dlaczego strona działa na danych komórkowych, a na Wi-Fi dostaje reset?
Obie sieci korzystają z różnych dostawców, resolverów i filtrów. Jedna z nich może odczytywać nazwę strony lub inaczej odpowiadać na zapytania DNS. Uruchom curl -v w obu i porównaj, gdzie każde się zatrzymuje.
Czy wyczyszczenie plików cookie naprawi reset połączenia?
Rzadko. Pliki cookie są wysyłane po nawiązaniu połączenia, a większość resetów zdarza się wcześniej. Wyczyszczenie danych strony może pomóc, gdy to sama strona odrzuca błędną sesję, ale wtedy zwykle widać raczej błąd HTTP.
Czy GreenTunnel naprawi reset spowodowany przez firmową zaporę?
Nie jest do tego przeznaczony. Sieć zarządzana blokuje strony zgodnie z zasadami właściciela. Zamiast próbować to obchodzić, zapytaj administratora.
Źródła
- OONI i Centre for Internet and Society, Investigating TLS blocking in India, lipiec 2020.
- Centre for Internet and Society, Reliance Jio is using SNI inspection to block websites.
- Forum ntc.party, SNI filtering by Indian ISP Reliance Jio.
- Projekt curl, podręcznik curl (opcja
-v).