Як саме працює віддалена програма на зразок 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 до місця призначення, і тоді вам буде запропоновано ввести пароль, а потім з'єднання встановлюється згодом.


3
Розширене запитання: Чи є можливість запустити такий сторонній сервер самостійно і змусити VNC (або будь-який інший клієнт) працювати так само?
TheStoryCoder

2
Хороше питання. Таким чином ви на шляху до створення нової компанії TeamViewer ...
giuseppe

@TheStoryCoder удача? Я думаю, що нам потрібно створити протокол зв'язку спочатку між сервером і клієнтом, а потім побудувати сервер tcp. RDP - це протокол за замовчуванням для Windows, але я думаю, він не розроблений для підтримки цього. Я знаю, що TeamViewer використовує власний протокол. Я дуже сподіваюся, що хтось там уже створить проект з відкритим кодом для цього :)
Altiano Gerung

@TheStoryCoder Простий спосіб, але з меншою безпекою: у вас може бути встановлений сервер OpenVpn (сервер A), а ваш ПК (ПК A) підключений до Інтернету через цей сервер. А у вас інший ПК (ПК B) приймає тільки вхідні з'єднання або віддалений робочий стіл (якщо Windows) з вашого VPN-сервера. Таким чином ви можете підключитися до цього ПК B зі свого ПК A, який встановлює зв’язок через сервер А.
Janaka R Rajapaksha

8

Teamviewer використовує порт 80 для встановлення з'єднання з центральним сервером. Якщо з'єднання встановлено, ви отримуєте унікальний ідентифікатор, і сервер знає, що ви в мережі. Вся комунікація може відбуватися через порт 80, якщо інші порти заблоковані.

Teamviewer дозволяє вам підключитися безпосередньо до IP-адреси. Ви повинні встановити це в опціях, щоб дозволити вхідні локальні з'єднання. Це працює і для локальних мереж, і, напевно, для мереж WAN, але тоді вам доведеться працювати через порт, щоб перенести порт 80 для підключення до потрібного комп'ютера за маршрутизатором / брандмауером. Це ускладнює ситуацію для більшості людей і не піддається управлінню для більшості решти, тому тоді ми використовуємо метод ідентифікації Teamviewer.

Я не знаю, чи це означає, що весь трафік йде через сервери teamviewer, але це може бути. (І оскільки він реєструє всі клацання та натискання клавіш, це, ймовірно, означає, що вони могли - теоретично - а оскільки ми знаємо про ПРИЗМ тощо, мабуть, і насправді - знати про всі ваші входи та секретні ключі.)


3

Про це говорить компанія у своїй Заяві про безпеку :

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

Як пізніше описано в параграфі "Шифрування та автентифікація", навіть ми, як оператори серверів маршрутизації, не можемо читати зашифрований трафік даних

Тому:

  • 1) як запропонували інші, початкове з'єднання обох клієнтів ініціюється клієнтом і проходить через порт 80, тому у нього немає проблем з NAT або брандмауерами, може пройти через веб-проксі і т.д. Після цього все налаштовано і обидва клієнти повинні бути підключені один до одного, тоді:
  • 2.1), ймовірно, використовує пробивання отворів UPnP або NAT, щоб мати можливість фактичного з'єднання між двома клієнтами, або
  • 2.2) якщо це неможливо, він прокладе трафік через свої сервери, який буде повільнішим і може бути підданий шпигуванню (однак вони заявляють, що дані шифруються в кінці до кінця, у цьому випадку це не буде проблемою)

якесь відкрите джерело, яке ви могли б знати?
Altiano Gerung

@AltianoGerung Я не знаю жодного з відкритих джерел, які працюють без відкриття таких портів, як Teamviewer
golimar

0

Більшість програм, як-от TeamViewer, проходять маршрути через свої сервери, якщо прямого шляху немає, тому обходять необхідність використовувати загальнодоступні IP-адреси та відкриті порти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.