Как именно работает удаленная программа, такая как Team Viewer?

34

Если вы используете Windows RDP или Remmina, вы обычно используете IP-адрес (общедоступный) или присоединенное имя хоста сервера для входа в систему. Мне было интересно, как работает удаленная программа, такая как Team Viewer ? А также, как программа знает, как направить этот трафик через Интернет?

Рудольф
источник
Мне также интересно об этом. : D
gumuruh

Ответы:

25

TeamViewer, LogMeIn и любая другая программа, которая разрешает zero configсеанс удаленного рабочего стола, использует сторонний сервер.

Например, LogMeIn - это программа, похожая на TeamViewer, в которой вы можете удаленно войти в систему компьютера, находящегося за пределами сети, в которой вы сейчас находитесь. Вы заметите, что для этого типа удаленного сеанса не требуется никаких внешних настроек. Это связано с тем, что программное обеспечение, установленное на удаленном компьютере (клиент LogMeIn), инициирует исходящий запрос к серверам LogMeIn. Поскольку этот клиент инициировал запрос, переадресация портов на брандмауэре не требуется.

На вашем компьютере вне сети компьютера LogMeIn можно получить удаленный доступ к этому компьютеру через веб-сайт LogMeIn. Этот веб-сайт принимает инициированный запрос от удаленного компьютера и поддерживает соединение, чтобы прослушать удаленный запрос сеанса.

Когда вы запускаете TeamViewer, вам присваивается идентификатор на их сервере брокера. Вы устанавливаете соединение с идентификатором Teamviewer, и TeamViewer передает соединение по установленному туннелю клиента TeamViewer к месту назначения, после чего вам предлагается ввести пароль, а затем соединение устанавливается.

kobaltz
источник
3
Расширенный вопрос: есть ли возможность запустить такой сторонний сервер самостоятельно и заставить VNC (или любой другой клиент) работать так же?
TheStoryCoder
2
Хороший вопрос. Таким образом, вы будете на пути к созданию новой компании TeamViewer ...
giuseppe
@ TheStoryCoder есть удача? Я думаю, что нам нужно сначала создать протокол связи между сервером и клиентом, а затем создать сервер tcp. RDP является протоколом по умолчанию для Windows, но я думаю, он не предназначен для поддержки этого. Я знаю, что TeamViewer использует свой собственный протокол. Я действительно надеюсь, что кто-то там уже создаст проект с открытым исходным кодом для него :)
Altiano Gerung
@TheStoryCoder Простой способ, но с меньшей безопасностью: у вас может быть установлен сервер OpenVpn (сервер A) и ваш компьютер (ПК A) подключен к Интернету через этот сервер. А у вас другой ПК (ПК Б) принимает только входящие соединения или удаленный рабочий стол (если windows) с вашего VPN-сервера. Таким образом, вы можете подключиться к этому ПК B с вашего ПК A, который устанавливает соединение через сервер A.
Джанака Р Раджапакша
8

Teamviewer использует порт 80 для подключения к центральному серверу. Если соединение установлено, вы получаете уникальный идентификатор, и сервер знает, что вы в сети. Вся связь может происходить через порт 80, если другие порты заблокированы.

Teamviewer позволяет напрямую подключаться к IP-адресу. Вы должны установить это в настройках, чтобы разрешить входящие соединения локальной сети. Это работает для локальных сетей, и, вероятно, также для сетей WAN, но тогда вам нужно настроить работу переадресации портов, чтобы получить порт 80 для подключения к нужному компьютеру за маршрутизатором / брандмауэром. Это делает вещи сложными для большинства людей и неуправляемыми для большинства остальных, поэтому мы используем метод Teamviewer ID.

Я не знаю, означает ли это, что весь трафик проходит через серверы TeamViewer, но это возможно. (И поскольку он регистрирует все щелчки и нажатия клавиш, это, вероятно, означает, что они могли - теоретически - и поскольку мы знаем о ПРИЗМЕ и т. Д., Вероятно, в действительности - знали обо всех ваших логинах и секретных ключах.)

SPRBRN
источник
3

Вот что говорит компания в своем заявлении о безопасности :

При создании сеанса TeamViewer определяет оптимальный тип соединения. После квитирования через наши главные серверы прямое соединение через UDP или TCP устанавливается в 70% всех случаев (даже за стандартными шлюзами, NAT и межсетевыми экранами). Остальные соединения маршрутизируются через нашу чрезвычайно избыточную сеть маршрутизаторов через TCP или https-туннелирование. Вам не нужно открывать порты для работы с TeamViewer!

Как позже описано в параграфе «Шифрование и аутентификация», даже мы, как операторы серверов маршрутизации, не можем прочитать зашифрованный трафик данных.

Так:

  • 1) как и предполагали другие, исходное соединение от обоих клиентов инициируется клиентом и проходит через порт 80, поэтому у него нет проблем с NAT или межсетевыми экранами, он может проходить через веб-прокси и т. Д. После этого все настроено и оба клиенты должны быть связаны друг с другом, тогда:
  • 2.1) вероятно, использует дырокол UPnP или NAT, чтобы иметь возможность установить фактическое соединение между двумя клиентами, или
  • 2.2) если это невозможно, он будет направлять трафик через свои серверы, который будет работать медленнее и за ним можно будет следить (однако они заявляют, что данные шифруются от начала до конца, в этом случае это не будет проблемой)
golimar
источник
любое решение с открытым исходным кодом, которое вы могли бы знать?
Альтиано Герунг,
@AltianoGerung Я не знаю никаких открытых программ, которые работают без открытия портов, таких как Teamviewer
golimar
0

Большинство приложений, таких как TeamViewer, маршрутизируют вещи через свои серверы, если нет прямого доступа, поэтому обходится необходимость использовать публичные IP-адреса и открытые порты.

Deepy
источник