Следующий шаг — проверить, доходит ли трафик до сервера. Я запустил на сервере tcpdump -i eth0 port 80 -n и попросил клиента обновить страницу. В выводе tcpdump не было ни одного пакета от его IP-адреса. Значит, запросы даже не доходят до сервера.
Тогда я понял — проблема на стороне клиента или его провайдера. Но почему только у него? Я попросил его выполнить traceroute example.com. Трассировка обрывалась на 7-м хопе — шлюзе его интернет-провайдера. Значит, проблема в маршрутизации на стороне провайдера клиента.
Но как объяснить это клиенту, который уверен, что проблема на моей стороне? Я показал ему результаты диагностики, но он не верил. Тогда я предложил простой тест: открыть сайт через Cloudflare Warp (бесплатный VPN). Сайт открылся! Значит, проблема точно в маршрутизации между его провайдером и моим хостинг-провайдером.
Решение было в настройке Cloudflare как прокси перед моим сервером. Я включил проксирование в панели Cloudflare, и теперь весь трафик идет через их сеть. Даже если маршрутизация между провайдерами ломается, Cloudflare находит обходные пути.
Конкретные шаги для подобной ситуации:
- Проверить доступность сайта с разных географических точек (можно использовать сайты вроде downdetector.com)
- Выполнить mtr example.com вместо traceroute — это покажет, где именно теряются пакеты
- Проверить, не блокирует ли провайдер клиента IP-адреса хостинга (иногда из-за ложных срабатываний на DDoS)
- Настроить Cloudflare или другой CDN как буфер между сервером и пользователями
Самый ценный инструмент в такой ситуации — curl -v https://example.com. Флаг -v покажет полный процесс подключения: разрешение DNS, установка TCP-соединения, TLS handshake, HTTP-запрос. Часто именно в этом выводе видно, на каком этапе происходит сбой.
Теперь я всегда настраиваю Cloudflare для всех клиентских проектов. Это не только защита от DDoS, но и решение многих проблем с маршрутизацией, которые возникают у пользователей в разных регионах. Иногда лучшее решение — не исправлять проблему, а обойти ее.