Многие HTTP-запросы к моему серверу завершаются с ошибкой 524 (Тайм-аут источника)
. Ресурсы, которые не могут быть доставлены, не всегда одинаковы. Иногда они работают, а при следующем запросе - нет.
Я внес в белый список IP-адреса Cloudflare . К сожалению, это не может сильно помочь, потому что исходные IP-адреса, которые фактически попадают на мой сервер, принадлежат французскому серверу Cloudflare, чьи IP-адреса (172.68.51. *) не входят в официальный список IP-адресов Cloudflare. Поэтому я временно добавил правило брандмауэра, которое разрешает все (все IP-адреса, все порты, все протоколы и т. Д.). Также у меня нет правил Блокировать
(которые могли бы переопределить правило разрешить все).
Что еще более странно, так это то, что брандмауэр Windows не регистрирует заблокированные запросы для ресурсов с истекшим временем ожидания . Кроме того, IIS не регистрирует никаких запросов для этих ресурсов, поэтому проблема должна возникнуть за некоторое время до того, как будет задействован IIS.
Если я полностью отключу брандмауэр Windows, все будет работать, как ожидалось (все ресурсы будут доставлены / нет таймаутов ). Если я выполняю запросы через другой домен (тот, который не сопоставлен с Cloudflare), все снова работает.
В чем может быть причина проблемы?
Для тестирования я использовал Cloudflare ' s режим разработки (без кеширования, но по-прежнему проксирование), потому что, очевидно, нет проблем с ресурсами, которые уже кэшированы Cloudflare.
Обновление: Даже с обходом всех правил (изменение «Входящие соединения» с «Блокировать (по умолчанию)» "на" Разрешить ") это не работает, поэтому это не может быть проблемой правила. Проблема должна лежать где-то между отключением брандмауэра (работает) и включением брандмауэра, но разрешением всех входящих и исходящих соединений (не работает).
Wireshark показывает ошибки повторной передачи TCP, когда брандмауэр включен. При отключении межсетевого экрана они не возникают:
Проблема действительно заключалась в брандмауэре Windows, хотя я внес все в белый список, и заблокированные пакеты не регистрировались. Есть этот странный скрытый режим брандмауэра, который ничего не регистрирует, когда отбрасывает пакеты.
Я отключил его для моего активного профиля брандмауэра, и тайм-ауты пропали даже при удалении моего правила разрешить все (Я оставил IP-адреса Cloudflare в белом списке.)
Также потребовался перезапуск сервера, чтобы брандмауэр Windows принял изменения реестра.
Обновление: Я сделал этот пакетный сценарий, чтобы отключить скрытый режим:
REG ADD HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\WindowsFirewall\DomainProfile /v DisableStealthMode /t REG_DWORD /d 1
REG ADD HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\WindowsFirewall\PrivateProfile /v DisableStealthMode /t REG_DWORD /d 1
REG ADD HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\WindowsFirewall\PublicProfile /v DisableStealthMode /t REG_DWORD /d 1
REG ADD HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\WindowsFirewall\StandardProfile /v DisableStealthMode /t REG_DWORD /d 1
PAUSE