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

Открытие роутера для удаленного помощника

Если я открою маршрутизатор (порт 3389) для удаленного помощника и направлю этот трафик на один из IP-адресов в моей локальной сети, как возможно, что я смогу успешно использовать удаленный помощник через Интернет с одной из других машин на ЛВС?

Мой роутер работает? Или удаленный помощник пытается пройти через другие порты, если 3389 не открыт?

Хорошо, позволь мне посмотреть, правильно ли я понял.

У вас есть машина в вашей локальной сети. Вы перенаправили порт 3389 с брандмауэра на этот компьютер в вашей локальной сети. Это позволяет системам в Интернете удаленно подключаться к этому компьютеру. Теперь, со второй машины в вашей локальной сети, вы пытаетесь удаленно подключиться к рабочему столу через этот брандмауэр через Интернет на третью машину (то есть на одну не в вашей локальной сети). Вы хотите знать, почему это работает.

(Примечание для придирчивых: это упрощение.)

Связи между машинами состоят из четырех частей:

  • для каждой стороны IP-адрес; и
  • для каждой стороны порт TCP.

Итак, диалог между системами выглядит так:

localIP:localPort <-> remoteIP:remotePort

(Кстати, именно так удаленные серверы отслеживают несколько одновременно работающих клиентов. Каждое соединение имеет уникальное выражение, подобное этому.)

Когда вы подключаетесь к удаленной службе, порт (обычно) выбирается заранее. В случае сеанса удаленного рабочего стола удаленный компонент будет:

remoteIP:3389

Ваш локальный IP-адрес - это IP-адрес вашего компьютера. Но что не очевидно, так это то, что localPort (обычно) не обязательно должен быть конкретным портом. Итак, локальная составляющая разговора выглядит так:

myIP:randomPort

... где "randomPort" - это номер порта, который иначе не используется (и подчиняется некоторым другим правилам, которые сейчас не важны). Есть некоторые службы, для которых важен локальный порт, но приложение, которое инициирует этот диалог, позаботится о получении этого локального порта и будет жаловаться вам, если не сможет.

Таким образом, ваш клиент удаленного рабочего стола не использует порт 3389 для своей стороны разговора, потому что в этом нет необходимости.

Теперь вы, вероятно, знаете о трансляции сетевых адресов (NAT), которая обычно используется для преобразования локальных IP-адресов LAN в (обычно) один общий IP-адрес, доступный через Интернет. Вы можете не знать, что NAT также работает с номерами портов для исходящих разговоров. Это сделано для того, чтобы устройство NAT (обычно брандмауэр) могло справиться с ситуациями, когда два отдельных клиента используют один и тот же randomPort для своих исходящих соединений.

Таким образом, вы можете использовать Wireshark для наблюдения за трафиком между вами и удаленным сервером, вы увидите такие соединения, как

myIP:randomPort <-> remoteIP:3389

... если бы вы запускали wirehark на удаленной стороне, вы, вероятно, увидели бы

myFirewallIP:randomPortThatIsProbablyDifferent <-> remoteIP:3389

.. вместо этого, и это работает, потому что ваш брандмауэр заботится о переводе myIP:randomPort к myFirewallIP:randomPortThatIsProbablyDifferent и обратно при необходимости.