Неожиданный сброс соединения с помощью брандмауэра Windows - PullRequest
0 голосов
/ 04 сентября 2018

Клиент-серверное приложение, написанное на C ++, Windows 2012 R2

У меня есть набор приложений, написанных на C ++, которые посылают пульс через TCP-порт 9190, используя Winsock. До сих пор мы не поддерживали брандмауэр Windows, но теперь пытаемся заставить приложение работать с включенным брандмауэром. Я сталкиваюсь с проблемой неожиданного сброса соединения при включении брандмауэра на удаленном хосте. Когда я наблюдал в wireshark, я заметил, что удаленный хост отправляет RST для разрыва соединения, как показано на снимках ниже:

Capture 1

Capture 2

Обе стороны соединения имеют правила брандмауэра, разрешающие TCP-соединения на ВСЕХ портах. Я даже пытался добавить правила ALLOW ALL (все протоколы, порты, приложения) на оба брандмауэра, но все еще сталкивался с той же проблемой. Это соединение работает абсолютно нормально, если удаленный брандмауэр выключен. Состояние локального брандмауэра (на стороне клиента) не влияет. Я исключил любые другие факторы, такие как стороннее программное обеспечение защиты служб Windows и т. Д. Я также попытался добавить разрешение разрешить все правила как для входящих, так и для исходящих правил. Я также удалил ВСЕ, кроме своих правил, и все еще сталкиваюсь с той же проблемой.

В коде вызов connect () работает нормально, но send () возвращает ошибку 10061 (не удалось установить соединение, поскольку целевой компьютер активно отказал в этом.). Telnet соединение с этими портами также работает нормально и может отправлять / получать данные !!

У нас также есть много другого сетевого трафика между этими приложениями, такого как вызовы DCOM, данные UDP, эхо-запросы ICMP и т. Д., Которые, кажется, работают нормально.

Кто-нибудь видит здесь очевидные проблемы? Что еще я должен посмотреть. Любые вклады / помощь будут оценены. Спасибо,

...