Jak dokładnie działa zdalny program, taki jak Team Viewer?

34

Jeśli korzystasz z Windows RDP lub Remmina, zwykle używasz adresu IP (publicznego) lub dołączonej nazwy hosta serwera, aby się zalogować. Zastanawiałem się, jak działa program zdalny, taki jak Team Viewer ? A także, skąd program wie, jak kierować ten ruch przez Internet?

Rudolph
źródło
jestem też ciekawa tego. : D
gumuruh

Odpowiedzi:

25

TeamViewer, LogMeIn i każdy inny program, który pozwala zero config sesję pulpitu zdalnego, korzysta z serwera innej firmy.

Na przykład LogMeIn to program podobny do TeamViewer, w którym możesz zdalnie zalogować się do komputera poza siecią, w której aktualnie się znajdujesz. Zauważysz, że dla tego typu sesji zdalnej nie są wymagane konfiguracje zewnętrzne. Wynika to z faktu, że oprogramowanie zainstalowane na zdalnej maszynie (klient LogMeIn) inicjuje żądanie wychodzące do serwerów LogMeIn. Ponieważ ten klient zainicjował żądanie, przekierowanie portów w Zaporze nie jest wymagane.

Na twoim komputerze, poza siecią komputera LogMeIn, możesz uzyskać dostęp do tego komputera zdalnie poprzez stronę internetową LogMeIn. Ta strona internetowa akceptuje zainicjowane żądanie ze zdalnego komputera i utrzymuje połączenie przy życiu, aby nasłuchiwać zdalnego żądania sesji.

Po uruchomieniu TeamViewer przypisywany jest identyfikator na ich serwerze brokera. Nawiązujesz połączenie z identyfikatorem Teamviewer, a TeamViewer przekazuje połączenie przez ustalony tunel klienta TeamViewer do miejsca docelowego, a następnie pojawia się monit o podanie hasła, a następnie połączenie zostaje nawiązane.

Kobaltz
źródło
3
Pytanie rozszerzone: Czy jest jakaś możliwość samodzielnego uruchomienia takiego serwera innej firmy i sprawienia, aby VNC (lub inny klient) działał w ten sam sposób?
TheStoryCoder
2
Dobre pytanie. W ten sposób będziesz na drodze do stworzenia nowej firmy TeamViewer ...
giuseppe
@TheStoryCoder masz szczęście? Myślę, że musimy najpierw utworzyć protokół komunikacyjny między serwerem a klientem, a następnie zbudować serwer TCP. RDP jest domyślnym protokołem systemu Windows, ale myślę, że nie jest on przeznaczony do obsługi tego. Wiem, że TeamViewer używa własnego protokołu. Naprawdę mam nadzieję, że ktoś już stworzy dla niego projekt typu open source :)
Altiano Gerung
@TheStoryCoder Prosty sposób, ale z mniejszym bezpieczeństwem: możesz mieć zainstalowany serwer OpenVpn (serwer A), a twój komputer (PC A) jest podłączony do Internetu za pośrednictwem tego serwera. I masz inny komputer (PC B) akceptuje tylko połączenia przychodzące lub pulpit zdalny (jeśli jest to system Windows) z serwera VPN. W ten sposób możesz połączyć się z tym komputerem B z komputera A, który ustanawia połączenie przez serwer A.
Janaka R Rajapaksha
8

Teamviewer używa portu 80 do nawiązania połączenia z serwerem centralnym. Jeśli połączenie zostanie nawiązane, otrzymasz unikalny identyfikator, a serwer będzie wiedział, że jesteś online. Cała komunikacja może odbywać się przez port 80, jeśli inne porty są zablokowane.

Teamviewer pozwala łączyć się bezpośrednio z adresem IP. Musisz ustawić to w opcjach, aby umożliwić przychodzące połączenia LAN. Działa to w sieciach lokalnych i prawdopodobnie także w sieciach WAN, ale wtedy musisz uruchomić przekazywanie portów, aby port 80 mógł połączyć się z odpowiednim komputerem za routerem / zaporą. Utrudnia to większości ludzi i jest niemożliwy do opanowania przez resztę, dlatego używamy metody Teamviewer ID.

Nie wiem, czy to oznacza, że ​​cały ruch przechodzi przez serwery Teamviewer, ale może tak być. (A ponieważ rejestruje wszystkie kliknięcia i naciśnięcia klawiszy, prawdopodobnie oznacza to, że mogliby - teoretycznie - a ponieważ wiemy o PRISM itp. Prawdopodobnie również w rzeczywistości - wiedzieć o wszystkich loginach i tajnych kluczach).

SPRBRN
źródło
3

Oto, co firma mówi w oświadczeniu o bezpieczeństwie :

Podczas ustanawiania sesji TeamViewer określa optymalny typ połączenia. Po uzgadnianiu przez nasze główne serwery, bezpośrednie połączenie przez UDP lub TCP jest ustanawiane w 70% wszystkich przypadków (nawet za standardowymi bramami, NAT i zaporami ogniowymi). Pozostałe połączenia są kierowane przez naszą wysoce redundantną sieć routerów przez tunelowanie TCP lub https. Nie musisz otwierać żadnych portów, aby pracować z TeamViewer!

Jak opisano później w akapicie „Szyfrowanie i uwierzytelnianie”, nawet my, jako operatorzy serwerów routingu, nie możemy odczytać zaszyfrowanego ruchu danych

Więc:

  • 1), jak sugerują inni, początkowe połączenie obu klientów jest inicjowane przez klienta i przechodzi przez port 80, więc nie ma problemów z NAT ani zaporami ogniowymi, może przejść przez serwer proxy sieci Web itp. Następnie wszystko jest skonfigurowane i oba klienci muszą być ze sobą połączeni, a następnie:
  • 2.1) prawdopodobnie używa dziurkowania UPnP lub NAT, aby móc nawiązać rzeczywiste połączenie między dwoma klientami, lub
  • 2.2) jeśli nie jest to możliwe, przekieruje ruch przez ich serwery, które będą wolniejsze i mogą być szpiegowane (jednak twierdzą, że dane są szyfrowane od końca do końca, w takim przypadku nie byłoby problemu)
Golimar
źródło
jakieś rozwiązanie typu open source, które możesz znać?
Altiano Gerung
@AltianoGerung Nie znam żadnych otwartych źródeł, które działałyby bez otwierania portów, takich jak Teamviewer
golimar
0

Większość aplikacji, takich jak TeamViewer, kieruje rzeczy przez swoje serwery, jeśli nie ma bezpośredniej ścieżki, dlatego omija potrzebę korzystania z publicznych adresów IP i otwartych portów.

głęboko
źródło