Team Viewer와 같은 원격 프로그램은 정확히 어떻게 작동합니까?


34

Windows RDP 또는 Remmina를 사용하는 경우 일반적으로 IP (공용) 또는 연결된 서버의 호스트 이름을 사용하여 로그온합니다. 팀 뷰어 와 같은 원격 프로그램이 어떻게 작동 하는지 궁금합니다 . 또한 프로그램은 인터넷을 통해 트래픽을 라우팅하는 방법을 어떻게 알 수 있습니까?


나도 이것에 대해 궁금합니다. : D
gumuruh

답변:


25

zero config원격 데스크톱 세션 을 허용하는 TeamViewer, LogMeIn 및 기타 프로그램은 타사 서버를 사용합니다.

예를 들어 LogMeIn은 현재 사용중인 네트워크 외부의 컴퓨터에 원격으로 로그인 할 수있는 TeamViewer와 유사한 프로그램입니다. 이 유형의 원격 세션에는 외부 구성이 필요하지 않습니다. 이는 원격 시스템 (LogMeIn 클라이언트)에 설치 한 소프트웨어가 LogMeIn 서버에 대한 발신 요청을 시작 하기 때문입니다. 이 클라이언트는 요청을 시작했기 때문에 방화벽에서 포트 전달이 필요하지 않습니다.

컴퓨터의 LogMeIn 컴퓨터 네트워크 외부에서 LogMeIn 웹 사이트를 통해이 컴퓨터에 원격으로 액세스 할 수 있습니다. 이 웹 사이트는 원격 컴퓨터에서 시작된 요청을 수락하고 원격 세션 요청을 수신하기 위해 연결을 유지합니다.

TeamViewer를 실행하면 브로커 서버에 ID가 할당됩니다. Teamviewer ID에 연결하면 TeamViewer가 TeamViewer 클라이언트의 설정된 터널을 통해 대상으로 연결을 전달한 다음 비밀번호를 묻는 메시지가 표시되고 나중에 연결이 설정됩니다.


3
확장 된 질문 : 이러한 타사 서버를 직접 실행하고 VNC (또는 다른 클라이언트)가 동일한 방식으로 작동 할 가능성이 있습니까?
TheStoryCoder

2
좋은 질문. 이런 식으로 당신은 새로운 TeamViewer 회사를 만들기위한 길을 가야합니다 ...
giuseppe

@ TheStoryCoder 행운이 있습니까? 먼저 서버와 클라이언트 사이에 통신 프로토콜을 만든 다음 tcp 서버를 만들어야한다고 생각합니다. RDP는 Windows의 기본 프로토콜이지만이를 지원하도록 설계되지 않은 것 같습니다. TeamViewer가 자체 프로토콜을 사용한다는 것을 알고 있습니다. 정말 누군가가 이미 오픈 소스 프로젝트를
만들길 희망

@TheStoryCoder 간단하지만 보안 성이 떨어지는 방법 : OpenVpn (서버 A)을 서버에 설치하면 PC (PC A)는 해당 서버를 통해 인터넷에 연결됩니다. 그리고 다른 PC (PC B)는 VPN 서버에서 들어오는 연결 또는 원격 데스크톱 (Windows 인 경우) 만 허용합니다. 이렇게하면 서버 A를 통해 연결을 설정하는 PC A에서 해당 PC B에 연결할 수 있습니다.
Janaka R Rajapaksha

8

Teamviewer는 포트 80을 사용하여 중앙 서버에 연결합니다. 연결되면 고유 ID를 얻게되고 서버는 사용자가 온라인 상태임을 알게됩니다. 다른 포트가 차단 된 경우 포트 80을 통해 모든 통신이 발생할 수 있습니다.

Teamviewer를 사용하면 IP 주소에 직접 연결할 수 있습니다. 들어오는 LAN 연결을 허용하려면 옵션에서이를 설정해야합니다. 이것은 로컬 네트워크 및 WAN 네트워크에서도 작동하지만 포트 포워딩이 작동해야 포트 80이 라우터 / 방화벽 뒤에있는 올바른 컴퓨터에 연결되도록해야합니다. 이로 인해 대부분의 사람들이 일을 어렵게하고 나머지 대부분을 위해 관리 할 수 ​​없게되므로 Teamviewer ID 방법을 사용합니다.

이것이 모든 트래픽이 팀 뷰어 서버를 통과한다는 것을 알 수는 없지만 그럴 수도 있습니다. (그리고 그것은 모든 클릭과 키 누르기를 등록 할 때, 아마도 이론적으로는-우리가 아마도 PRISM에 대해 알고 있기 때문에 아마 실제로도-모든 로그인과 비밀 키에 대해 알 수 있음을 의미합니다.)


3

이것이 회사가 그들의 보안 성명서 에서 말하는 것입니다 :

세션을 설정할 때 TeamViewer는 최적의 연결 유형을 결정합니다. 마스터 서버를 통한 핸드 셰이크 후 UDP 또는 TCP를 통한 직접 연결이 모든 경우의 70 %에서 이루어집니다 (표준 게이트웨이, NAT 및 방화벽 뒤에서도). 나머지 연결은 TCP 또는 https-tunnelling을 통해 중복 라우터 네트워크를 통해 라우팅됩니다. TeamViewer를 사용하기 위해 포트를 열 필요가 없습니다!

나중에 "암호화 및 인증"단락에 설명 된 것처럼 라우팅 서버의 운영자로서 암호화 된 데이터 트래픽을 읽을 수있는 것은 아닙니다.

그래서:

  • 1) 다른 사람들이 제안했듯이 두 클라이언트의 초기 연결은 클라이언트가 시작하고 포트 80을 통과하므로 NAT 또는 방화벽에 문제가 없으며 웹 프록시를 통과 할 수 있습니다.이 후 모든 것이 설정되고 모두 클라이언트가 서로 연결되어 있어야합니다.
  • 2.1) 아마도 두 클라이언트간에 실제 연결을 수행하기 위해 UPnP 또는 NAT 홀 펀칭 을 사용합니다.
  • 2.2) 가능하지 않은 경우 서버를 통해 트래픽을 라우팅하므로 속도가 느리고 스파이가 될 수 있습니다 (단, 데이터가 엔드 투 엔드로 암호화되어 있다고해도 문제가되지는 않습니다)

알고있는 오픈 소스 솔루션이 있습니까?
Altiano Gerung

@AltianoGerung Teamviewer와 같은 포트를 열지 않고도 작동하는 오픈 소스 소스를 모릅니다
golimar

0

TeamViewer와 같은 대부분의 응용 프로그램은 사용 가능한 직접 경로가없는 경우 서버를 통해 사물을 라우팅하므로 공용 IP 및 열린 포트를 사용할 필요가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.