Эта проблема:
Мой 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 соединения
SYN_RECEIVED
Программа была протестирована на других машинах и другой машине с Windows 2008, где она работала.
Есть ли у кого-нибудь идеи, что не так и как изменить сервер Windows 2008, чтобы он работал.
Мы нашли решение моей проблемы, и я хотел поделиться этим решением.
Проблема была вызвана одним параметром на Socket.
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.ReuseAddress, true);
Если для этого параметра было установлено значение true, наша служба не могла получать подключения из другой подсети в Windows 2008. Подключение зависало на этапе установления связи TCP.
Это не было проблемой для подключений с одного компьютера или с компьютеров в одной подсети.
Та же самая программа, установленная на Windows 2003, не имела проблем с подключениями из других подсетей.
Хорошо, некоторые очевидные, но, возможно, они могут помочь:
telnet localhost 40000
?