- Czym jest błąd ERRSYNREPLYNOTRECEIVED?
- Przyczyny wystąpienia błędu
- Rozwiązania dla użytkowników końcowych
- Rozwiązania dla webmasterów i deweloperów
- Zaawansowana diagnostyka
- Prewencja i najlepsze praktyki
Czym jest błąd ERRSYNREPLYNOTRECEIVED? {#wprowadzenie}
Definicja techniczna
Błąd ERRSYNREPLYNOTRECEIVED to problem komunikacji na poziomie protokołu TCP/IP, który występuje podczas nawiązywania połączenia między przeglądarką a serwerem. Jest to specyficzny błąd przeglądarki Google Chrome (oraz innych przeglądarek opartych na Chromium).
Proces „Three-Way Handshake”
Aby zrozumieć problem, należy poznać podstawy nawiązywania połączenia TCP:
- SYN (Synchronize) – Klient wysyła pakiet SYN do serwera
- SYN-ACK (Synchronize-Acknowledge) – Serwer odpowiada pakietem SYN-ACK
- ACK (Acknowledge) – Klient potwierdza otrzymanie odpowiedzi
Błąd występuje, gdy –
- Klient wysyła pakiet SYN
- Serwer NIE odpowiada pakietem SYN-ACK w określonym czasie
- Połączenie kończy się niepowodzeniem
Komunikaty towarzyszące
Użytkownik może zobaczyć:
- „Ta strona nie działa”
- „ERRSYNREPLYNOTRECEIVED”
- „Nie można połączyć się z serwerem”
Przyczyny wystąpienia błędu {#przyczyny}
1. Problemy sieciowe
Po stronie klienta:
- Niestabilne połączenie internetowe
- Problemy z routerem lub modemem
- Błędna konfiguracja DNS
- Problemy z ISP (dostawcą internetu)
Po stronie serwera:
- Przeciążony serwer
- Problemy z konfiguracją firewalla
- Ograniczenia przepustowości
- Problemy z load balancerem
2. Blokady i filtry
- Firewall systemowy – zbyt restrykcyjne reguły
- Oprogramowanie antywirusowe – blokowanie połączeń
- Corporate firewall – polityki bezpieczeństwa w firmie
- ISP filtering – blokowanie przez dostawcę internetu
3. Problemy konfiguracyjne
- Nieprawidłowe ustawienia proxy
- Konflikt między VPN a lokalną siecią
- Błędna konfiguracja MTU (Maximum Transmission Unit)
- Problemy z IPv6
4. Problemy z przeglądarką
- Uszkodzona pamięć cache
- Konflikt rozszerzeń
- Przestarzała wersja przeglądarki
- Błędy w profilu użytkownika
5. Problemy serwerowe
- Niewłaściwa konfiguracja TCP
- Limity połączeń
- Problemy z SSL/TLS
- Błędy w konfiguracji serwera WWW
Rozwiązania dla użytkowników końcowych {#dla-uzytkownikow}
Rozwiązanie 1 – Podstawowe sprawdzenia
Krok 1 – Sprawdź połączenie internetowe
1. Otwórz inną stronę internetową (np. google.com) 2. Jeśli inne strony działają – problem jest specyficzny dla danej witryny 3. Jeśli żadna strona nie działa – problem z twoim połączeniem
Krok 2 – Restart urządzeń
1. Zamknij przeglądarkę całkowicie 2. Zrestartuj router/modem: - Odłącz zasilanie na 30 sekund - Podłącz ponownie - Poczekaj 2-3 minuty na pełne uruchomienie 3. Zrestartuj komputer
Rozwiązanie 2 – Czyszczenie cache i cookies
Google Chrome:
1. Naciśnij Ctrl + Shift + Delete (Windows) lub Cmd + Shift + Delete (Mac) 2. Wybierz zakres czasu: "Cały czas" 3. Zaznacz: ☑ Pliki cookie i inne dane witryn ☑ Obrazy i pliki w pamięci podręcznej 4. Kliknij "Wyczyść dane" 5. Zrestartuj przeglądarkę
Mozilla Firefox:
1. Naciśnij Ctrl + Shift + Delete 2. Zakres czasu: "Wszystko" 3. Zaznacz odpowiednie opcje 4. Kliknij "Wyczyść teraz"
Microsoft Edge:
1. Naciśnij Ctrl + Shift + Delete 2. Wybierz "Cały czas" 3. Zaznacz cache i cookies 4. Kliknij "Wyczyść teraz"
Rozwiązanie 3 – Wyłączenie rozszerzeń
Metoda A – Tryb incognito
1. Otwórz Chrome 2. Naciśnij Ctrl + Shift + N (tryb incognito) 3. Spróbuj otworzyć problematyczną stronę 4. Jeśli działa – problem z rozszerzeniem
Metoda B – Ręczne wyłączanie
1. Wpisz w pasek adresu: chrome://extensions/ 2. Wyłącz wszystkie rozszerzenia 3. Włączaj po kolei, testując każde 4. Zidentyfikuj problematyczne rozszerzenie
Najczęściej problematyczne rozszerzenia –
- AdBlockery (AdBlock, uBlock Origin)
- VPN extensions
- Proxy switchers
- Security/Privacy tools
Rozwiązanie 4 – Zmiana DNS
Windows 10/11:
1. Naciśnij Win + R 2. Wpisz: ncpa.cpl i naciśnij Enter 3. Kliknij prawym na aktywne połączenie 4. Wybierz "Właściwości" 5. Zaznacz "Protokół internetowy w wersji 4 (TCP/IPv4)" 6. Kliknij "Właściwości" 7. Wybierz "Użyj następujących adresów serwerów DNS:" Preferowany serwer DNS: 8.8.8.8 Alternatywny serwer DNS: 8.8.4.4 (lub Cloudflare: 1.1.1.1 i 1.0.0.1) 8. Kliknij OK 9. Zrestartuj komputer
macOS:
1. Otwórz Preferencje Systemowe 2. Kliknij "Sieć" 3. Wybierz aktywne połączenie 4. Kliknij "Zaawansowane" 5. Zakładka DNS 6. Kliknij + i dodaj: 8.8.8.8 8.8.4.4 7. Kliknij OK, następnie Zastosuj
Linux:
# Edytuj plik resolv.conf sudo nano /etc/resolv.conf # Dodaj: nameserver 8.8.8.8 nameserver 8.8.4.4 # Zapisz i wyjdź (Ctrl + X, Y, Enter)
Rozwiązanie 5 – Flush DNS i reset połączeń sieciowych
Windows:
# Otwórz Wiersz polecenia jako Administrator # Flush DNS ipconfig /flushdns # Odnowienie IP ipconfig /release ipconfig /renew # Reset Winsock netsh winsock reset # Reset TCP/IP netsh int ip reset # Zrestartuj komputer
macOS:
# Flush DNS sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder # Odnowienie DHCP sudo ipconfig set en0 DHCP
Linux:
# Flush DNS (Ubuntu/Debian) sudo systemd-resolve --flush-caches # Restart network manager sudo systemctl restart NetworkManager
Rozwiązanie 6 – Wyłączenie antywirusa/firewalla (tymczasowo)
⚠️ UWAGA – Wykonuj tylko w celach testowych i na własne ryzyko
Windows Defender:
1. Otwórz "Zabezpieczenia Windows" 2. Przejdź do "Zapora i ochrona sieci" 3. Kliknij na aktywną sieć 4. Wyłącz "Zaporę Windows Defender" (tymczasowo) 5. Przetestuj połączenie 6. WŁĄCZ ponownie firewall
Inne oprogramowanie antywirusowe:
- Poszukaj ikony w zasobniku systemowym
- Kliknij prawym przyciskiem
- Wybierz opcję tymczasowego wyłączenia (np. na 10 minut)
Rozwiązanie 7 – Wyłączenie proxy
Windows:
1. Naciśnij Win + R 2. Wpisz: inetcpl.cpl 3. Zakładka "Połączenia" 4. Kliknij "Ustawienia sieci LAN" 5. Odznacz "Użyj serwera proxy dla sieci LAN" 6. Kliknij OK
Chrome (niezależnie od systemu):
1. Otwórz chrome://settings/ 2. Wpisz "proxy" w wyszukiwarkę 3. Kliknij "Otwórz ustawienia serwera proxy komputera" 4. Wyłącz wszystkie ustawienia proxy
Rozwiązanie 8 – Zmiana MTU
⚠️ Dla zaawansowanych użytkowników
Windows:
# Sprawdź obecne MTU netsh interface ipv4 show subinterfaces # Ustaw MTU na 1400 (testowo) netsh interface ipv4 set subinterface "Nazwa połączenia" mtu=1400 store=persistent # Typowe nazwy: "Ethernet", "Wi-Fi", "Połączenie lokalne"
Przykład:
netsh interface ipv4 set subinterface "Wi-Fi" mtu=1400 store=persistent
Rozwiązanie 9 – Aktualizacja przeglądarki
Chrome:
1. Otwórz chrome://settings/help 2. Przeglądarka sprawdzi aktualizacje automatycznie 3. Jeśli dostępna - zainstaluj 4. Zrestartuj przeglądarkę
Rozwiązanie 10 – Reset ustawień przeglądarki
Chrome – pełny reset:
1. Otwórz chrome://settings/reset 2. Kliknij "Przywróć ustawienia do ich pierwotnych wartości domyślnych" 3. Kliknij "Resetuj ustawienia" 4. Zrestartuj przeglądarkę
⚠️ Uwaga – Utraci się zapisane hasła (jeśli niesynchronizowane), rozszerzenia i ustawienia
Rozwiązania dla webmasterów i deweloperów {#dla-deweloperow}
Diagnostyka po stronie serwera
Krok 1 – Weryfikacja dostępności serwera
# Sprawdź czy serwer odpowiada ping twojadomena.pl # Sprawdź routing traceroute twojadomena.pl # Linux/Mac tracert twojadomena.pl # Windows # Test połączenia TCP telnet twojadomena.pl 80 telnet twojadomena.pl 443 # Alternatywnie (nc - netcat) nc -zv twojadomena.pl 80 nc -zv twojadomena.pl 443
Krok 2 – Analiza logów serwera
Apache –
# Logi błędów tail -f /var/log/apache2/error.log # Logi dostępów tail -f /var/log/apache2/access.log # Wyszukiwanie SYN-related issues grep -i "syn" /var/log/apache2/error.log
Nginx –
# Logi błędów tail -f /var/log/nginx/error.log # Logi dostępów tail -f /var/log/nginx/access.log
Analiza połączeń –
# Sprawdź aktywne połączenia netstat -an | grep :80 netstat -an | grep :443 # Statystyki TCP netstat -s | grep -i syn # Alternatywnie (ss) ss -tan state syn-sent ss -tan state syn-recv
Rozwiązanie 1 – Optymalizacja ustawień TCP na serwerze
Linux – sysctl configuration
Plik: /etc/sysctl.conf
# Backup oryginalnego pliku sudo cp /etc/sysctl.conf /etc/sysctl.conf.backup # Edytuj plik sudo nano /etc/sysctl.conf
Dodaj/zmodyfikuj następujące parametry –
# Zwiększ backlog kolejki SYN net.ipv4.tcp_max_syn_backlog = 8192 # Zwiększ maksymalną liczbę połączeń w kolejce net.core.somaxconn = 4096 # Szybsza recyrkulacja połączeń TIME-WAIT net.ipv4.tcp_tw_reuse = 1 # Timeout dla SYN-ACK retransmission net.ipv4.tcp_synack_retries = 2 # Timeout dla SYN retransmission net.ipv4.tcp_syn_retries = 2 # Ochrona przed SYN flood net.ipv4.tcp_syncookies = 1 # Zwiększ bufory TCP net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 # Timeout nieaktywnych połączeń net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_intvl = 60 net.ipv4.tcp_keepalive_probes = 3 # Wyłącz TCP timestamps (opcjonalnie, jeśli występują problemy) # net.ipv4.tcp_timestamps = 0
Zastosuj zmiany –
sudo sysctl -p
Weryfikacja –
sysctl net.ipv4.tcp_max_syn_backlog sysctl net.core.somaxconn
Rozwiązanie 2 – Konfiguracja Firewall
iptables (Linux)
Sprawdź obecne reguły –
sudo iptables -L -n -v sudo iptables -L -n -v -t nat
Podstawowa konfiguracja firewall –
# Zaakceptuj ustanowione połączenia sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Zezwól na HTTP sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Zezwól na HTTPS sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Ochrona przed SYN flood sudo iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT # Rate limiting dla nowych połączeń sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 15 -j DROP # Zapisz reguły sudo iptables-save > /etc/iptables/rules.v4
UFW (Ubuntu/Debian)
# Sprawdź status sudo ufw status verbose # Zezwól na HTTP/HTTPS sudo ufw allow 80/tcp sudo ufw allow 443/tcp # Rate limiting sudo ufw limit 80/tcp sudo ufw limit 443/tcp # Włącz firewall sudo ufw enable
firewalld (CentOS/RHEL)
# Status sudo firewall-cmd --state # Dodaj serwisy sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https # Przeładuj sudo firewall-cmd --reload # Sprawdź sudo firewall-cmd --list-all
Rozwiązanie 3 – Konfiguracja Apache
Plik: /etc/apache2/apache2.conf lub /etc/httpd/conf/httpd.conf
# Zwiększ limit timeout Timeout 300 # Zwiększ KeepAlive KeepAlive On MaxKeepAliveRequests 100 KeepAliveTimeout 5 # MPM Prefork/Worker - zwiększ limity <IfModule mpm_prefork_module> StartServers 10 MinSpareServers 10 MaxSpareServers 20 MaxRequestWorkers 256 MaxConnectionsPerChild 10000 </IfModule> <IfModule mpm_worker_module> StartServers 4 MinSpareThreads 25 MaxSpareThreads 75 ThreadLimit 64 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 10000 </IfModule> # Zwiększ backlog (wymaga modułu mpm) ListenBackLog 511
Włącz moduły –
sudo a2enmod mpm_event # lub mpm_worker sudo a2enmod http2 sudo systemctl restart apache2
Rozwiązanie 4 – Konfiguracja Nginx
Plik: /etc/nginx/nginx.conf
user www-data; worker_processes auto; worker_rlimit_nofile 65535; events { worker_connections 4096; use epoll; multi_accept on; } http { # Podstawowe ustawienia sendfile on; tcp_nopush on; tcp_nodelay on; # Timeouts keepalive_timeout 65; keepalive_requests 100; client_body_timeout 60; client_header_timeout 60; send_timeout 60; # Bufory client_body_buffer_size 128k; client_max_body_size 20m; client_header_buffer_size 1k; large_client_header_buffers 4 8k; # Rate limiting limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; limit_conn_zone $binary_remote_addr zone=addr:10m; # Backlog listen 80 backlog=4096; listen 443 ssl backlog=4096; # Rate limiting w server block server { listen 80; server_name twojadomena.pl; limit_req zone=one burst=20 nodelay; limit_conn addr 10; # Reszta konfiguracji... } }
Zastosuj zmiany –
# Test konfiguracji sudo nginx -t # Przeładuj sudo systemctl reload nginx
Rozwiązanie 5 – Konfiguracja SSL/TLS
Certbot (Let’s Encrypt)
# Instalacja sudo apt update sudo apt install certbot python3-certbot-nginx # Dla Nginx sudo certbot --nginx -d twojadomena.pl -d www.twojadomena.pl # Dla Apache sudo certbot --apache -d twojadomena.pl -d www.twojadomena.pl # Test odnowienia sudo certbot renew --dry-run
Optymalizacja SSL w Nginx
server { listen 443 ssl http2; server_name twojadomena.pl; # Certyfikaty ssl_certificate /etc/letsencrypt/live/twojadomena.pl/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/twojadomena.pl/privkey.pem; # Protokoły i szyfry ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'; # Session cache ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; # OCSP Stapling ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/twojadomena.pl/chain.pem; # DH parameters ssl_dhparam /etc/ssl/certs/dhparam.pem; }
Generowanie dhparam –
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Rozwiązanie 6 – Load Balancer i Reverse Proxy
Nginx jako Reverse Proxy
upstream backend { least_conn; server 192.168.1.10:8080 max_fails=3 fail_timeout=30s; server 192.168.1.11:8080 max_fails=3 fail_timeout=30s; server 192.168.1.12:8080 max_fails=3 fail_timeout=30s backup; keepalive 32; } server { listen 80; server_name twojadomena.pl; location / { proxy_pass http://backend; # Headers proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # Timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; # Buffers proxy_buffering on; proxy_buffer_size 4k; proxy_buffers 8 4k; # Keep-alive proxy_http_version 1.1; proxy_set_header Connection ""; } }
Rozwiązanie 7 – CDN i Cache
Cloudflare Configuration
1. Dodaj domenę do Cloudflare
1. Zarejestruj się na cloudflare.com 2. Dodaj swoją domenę 3. Zmień nameservery u rejestratora
2. Ustawienia optymalizacji –
Speed → Optimization –
- ✅ Auto Minify (HTML, CSS, JS)
- ✅ Brotli
- ✅ Early Hints
- ✅ HTTP/2 to Origin
- ✅ HTTP/3 (with QUIC)
Speed → Caching –
Caching Level: Standard Browser Cache TTL: 4 hours (lub więcej)
Firewall –
Security Level: Medium Challenge Passage: 30 minutes Browser Integrity Check: On
Page Rules – przykład –
URL: twojadomena.pl/statyczne/* Settings: - Cache Level: Cache Everything - Edge Cache TTL: 1 month - Browser Cache TTL: 1 day
Varnish Cache
Instalacja –
sudo apt update sudo apt install varnish
Plik: /etc/varnish/default.vcl
vcl 4.0; backend default { .host = "127.0.0.1"; .port = "8080"; .connect_timeout = 600s; .first_byte_timeout = 600s; .between_bytes_timeout = 600s; } sub vcl_recv { # Remove cookies for static files if (req.url ~ "\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$") { unset req.http.Cookie; } # Don't cache admin pages if (req.url ~ "^/admin" || req.url ~ "^/wp-admin") { return (pass); } } sub vcl_backend_response { # Cache for 1 hour by default set beresp.ttl = 1h; # Cache for 1 week for static files if (bereq.url ~ "\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$") { set beresp.ttl = 1w; } }
Konfiguracja: /etc/default/varnish
DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -s malloc,256m"
Zmień port Apache/Nginx na 8080 –
Apache:
sudo nano /etc/apache2/ports.conf # Zmień Listen 80 na Listen 8080
Restart –
sudo systemctl restart varnish sudo systemctl restart apache2
Rozwiązanie 8 – Monitoring i alerting
Instalacja monitoring stack
Netdata (real-time monitoring) –
# Instalacja bash <(curl -Ss https://my-netdata.io/kickstart.sh) # Dostęp http://twoj-serwer-ip:19999
Prometheus + Grafana –
# Prometheus wget https://github.com/prometheus/prometheus/releases/download/v2.40.0/prometheus-2.40.0.linux-amd64.tar.gz tar xvfz prometheus-*.tar.gz cd prometheus-* ./prometheus --config.file=prometheus.yml # Grafana sudo apt-get install -y software-properties-common sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" sudo apt-get update sudo apt-get install grafana sudo systemctl start grafana-server
Skrypt monitoringu połączeń TCP
Plik: tcp_monitor.sh
#!/bin/bash LOGFILE="/var/log/tcp_monitor.log" THRESHOLD=1000 while true; do TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') # Liczba połączeń SYN_RECV SYN_RECV=$(netstat -an | grep SYN_RECV | wc -l) # Liczba połączeń ESTABLISHED ESTABLISHED=$(netstat -an | grep ESTABLISHED | wc -l) # Liczba połączeń TIME_WAIT TIME_WAIT=$(netstat -an | grep TIME_WAIT | wc -l) echo "$TIMESTAMP - SYN_RECV: $SYN_RECV, ESTABLISHED: $ESTABLISHED, TIME_WAIT: $TIME_WAIT" >> $LOGFILE # Alert jeśli SYN_RECV przekracza threshold if [ $SYN_RECV -gt $THRESHOLD ]; then echo "ALERT: High SYN_RECV count: $SYN_RECV" | mail -s "TCP Alert" [email protected] fi sleep 60 done
Uruchom –
chmod +x tcp_monitor.sh nohup ./tcp_monitor.sh &
Rozwiązanie 9 – DDoS Protection
Fail2ban
Instalacja –
sudo apt update sudo apt install fail2ban
Konfiguracja: /etc/fail2ban/jail.local
„`ini [DEFAULT] bantime = 3600 findtime = 600 maxretry = 5 destemail = admin

