Совсем недавно мы проводили обширное тестирование определенной внутренней программы (называемой SPARE) по работе с запасными частями. Идея довольно проста. Каждый узел имеет базу данных на сервере, и через службу репликации все базы данных обновляются на каждом узле. Несколько дней у нас не работала связь. Журналы показали, что узлы пытались связаться, но не нашли и не приняли входящие пакеты. Запуск с Wireshark показал, что пакеты действительно БЫЛИ обменивались между узлами, но по какой-то причине SPARE не хотел их подтверждать. SPARE использует порт 7777.
Мы разговаривали по телефону с разработчиками, и они подумали, что это проблема с брандмауэром. Однако служба, которую использует SPARE, была в списке исключений, и, как было сказано, Wireshark действительно обнаруживал пакеты на порту 7777 в обоих направлениях.
Затем мы попробовали еще одну вещь. Мы перешли на вкладку «Дополнительно» в брандмауэре Windows. Там мы перешли в настройки в разделе «Настройки сетевого подключения» и добавили текущий IP-адрес сервера узла и порт 7777, и после этого все заработало. Репликация между узлами базы данных работала должным образом.
Для меня это немного странно, так как я думал, что брандмауэр либо разрешает, либо блокирует весь трафик на определенном порту или службе. Но в нашем случае кажется, что он заблокировал только его часть. Было передано достаточно пакетов, чтобы Wireshark мог их обнаружить, но слишком мало, чтобы позволить SPARE обмениваться информацией.
Есть хорошие ответы на этот вопрос?
Это «работает по назначению»: Wireshark захватывает пакеты до того, как брандмауэр выполнит свою обработку.