Назад | Перейти на главную страницу

Windows Server 2008, зависает при установлении связи TCP

Эта проблема:

Мой Windows 2008 Server не может устанавливать TCP-соединения с удаленными машинами.

Действия по воспроизведению:

У меня есть служба, работающая на компьютере с Windows 2008 Server на порту 40.000 с IP-адресом 10.100.5.46.

С другой машины Linux я пытаюсь использовать Telnet 10.100.5.46 40000

Это приводит к связи с государством SYN_RECEIVED.

Я использую netstat -a | find "40000" чтобы увидеть все соединения, и после того, как я попробую telnet, я вижу 2 соединения

  1. Подключение, которое прослушивает порт 40000
  2. Связь в состоянии SYN_RECEIVED

Программа была протестирована на других машинах и другой машине с Windows 2008, где она работала.

Есть ли у кого-нибудь идеи, что не так и как изменить сервер Windows 2008, чтобы он работал.

Мы нашли решение моей проблемы, и я хотел поделиться этим решением.

Проблема была вызвана одним параметром на Socket.

socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.ReuseAddress, true);

Если для этого параметра было установлено значение true, наша служба не могла получать подключения из другой подсети в Windows 2008. Подключение зависало на этапе установления связи TCP.

Это не было проблемой для подключений с одного компьютера или с компьютеров в одной подсети.

Та же самая программа, установленная на Windows 2003, не имела проблем с подключениями из других подсетей.

Хорошо, некоторые очевидные, но, возможно, они могут помочь:

  • Правильно ли принимает сервер Другой входящие соединения, такие как обмен файлами, удаленный рабочий стол и т. д.?
  • Принимает ли сервис соединения от самого сервера, т.е. telnet localhost 40000?
  • Является ли служба приложением .NET? Windows Server 2008 может получить много сложно с дополнительными функциями .NET framework.