У меня проблемы с установлением TCP-соединения с экземпляром виртуальной машины Windows, который я создал в "Compute Engine" Google Cloud Platform. На машине с Windows я попытался специально открыть используемые порты (135 и 445). Я даже безуспешно пытался полностью отключить брандмауэр на этой машине. Кроме того, я пробовал несколько конфигураций правил межсетевого экрана в сети VPC. Совсем недавно я попытался настроить правило брандмауэра, чтобы разрешить все входящие соединения (цель: все экземпляры в сети, диапазоны исходных IP-адресов: 0.0.0.0/0, разрешить все протоколы и порты) Правило межсетевого экрана .
Как ни странно, я могу подключиться через свой клиент Windows RDP без каких-либо проблем. Однако, когда я пытаюсь подключиться, используя следующий код в моем приложении C #, я получаю исключение, которое гласит:
«Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом по прошествии определенного периода времени, или установление соединения не удалось из-за того, что подключенный хост не ответил»
. Код:
using (var client = new TcpClient())
{
var result = client.BeginConnect(machine, port, null, null);
var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(60), true);
if (success)
{
client.EndConnect(result);
return true;
}
}
}
catch (Exception ex)
{
if (logWriter != null)
{
logWriter.Debug(ex.Message + ". ");
}
}
Исключение выбрасывается в строке с «client.EndConnect (результат)». Я не вижу свою попытку подключиться к порту 135 в журналах брандмауэра. Я вижу свои успешные подключения RDP и подключение к порту 80 (которое я явно не пытался). Я установил точку останова в своем коде и подтвердил, что переменная "machine" разрешает мой внешний IP-адрес на моей виртуальной машине, а моя переменная "port" соответствует порту 135. Кажется, что что-то до того, как мой брандмауэр блокировал мое соединение, но я не уверен, что это будет
Это больше комментарий, чем ответ (у меня еще нет репутации здесь на ServerFault), но, возможно, этот вопрос лучше всего задать в Stackoverflow.
Похоже, это произошло из-за того, что мой интернет-провайдер молча блокирует мою попытку подключиться к порту 445. Моя локальная машина разработки и моя виртуальная машина GCP Windows не находятся в одной и той же VPN или сети. Скорее всего, мои попытки были заблокированы моим интернет-провайдером, потому что подключение к внешнему порту 445 выглядело подозрительно на основании прошлых уязвимостей этого порта (см. https://www.grc.com/port_445.htm).
В моем первоначальном вопросе я сосредоточился на открытии портов в GCP и виртуальной машине, но попытка, похоже, была заблокирована до этого момента. После дополнительных исследований уязвимостей этого порта кажется, что попытка сделать это на двух машинах, находящихся не в одной сети, - не лучший подход.