Infograb logo
VNet 사용

이 가이드는 VNet을 사용하여 Teleport를 통해 사용할 수 있는 TCP 애플리케이션에 연결하는 방법을 설명합니다.

작동 방식

VNet은 컴퓨터에서 TCP 애플리케이션으로의 연결을 자동으로 프록시합니다. 장치의 프로그램은 tcp-app.teleport.example.com에 연결할 수 있으며, Teleport에 대해 알 필요가 없습니다. VNet은 기본적으로 귀하의 자격 증명을 사용하여 연결을 인증하며, tsh proxy app와 동일한 TLS 라우팅 기술을 사용합니다. 이 모든 것은 클라이언트 측에서 이루어집니다 – VNet은 로컬 DNS 이름 서버와 가상 네트워크 장치를 설정합니다.

VNet은 macOS에서 Teleport Connect와 tsh에서 사용할 수 있으며, Windows 및 Linux 버전도 개발 중입니다.

전제 조건

  • macOS Ventura (13.0) 이상의 클라이언트 머신.
  • Teleport Connect 버전 16.0.0 이상.

1단계/3단계. Teleport Connect 시작

Teleport Connect를 열고 클러스터에 로그인합니다. 연결하려는 TCP 애플리케이션을 찾습니다. TCP 애플리케이션은 주소에 tcp:// 프로토콜이 있습니다.

2단계/3단계. VNet 시작

TCP 애플리케이션 옆에 있는 "연결"을 클릭합니다. 이것은 VNet이 이미 실행 중이지 않은 경우 VNet을 시작합니다. 또는 왼쪽 상단의 연결 목록을 통해 VNet을 시작할 수 있습니다.

첫 번째 실행 중에 macOS는 tsh.app용 백그라운드 항목을 활성화하라는 메시지를 표시합니다. VNet은 장치의 DNS를 구성하기 위해 이 백그라운드 항목이 필요합니다. 백그라운드 항목을 활성화하려면 시스템 알림과 상호작용하거나 시스템 설정 > 일반 > 로그인 항목으로 이동하여 "백그라운드에서 허용" 아래에서 tsh.app을 찾습니다.

3단계/3단계. 연결

VNet이 실행 중이면 일반적으로 사용하는 애플리케이션 클라이언트를 사용하여 애플리케이션에 연결할 수 있습니다. 포트 번호는 중요하지 않습니다. VNet은 애플리케이션의 공개 주소 아래에서 해당 애플리케이션 자체로 모든 포트 번호에 대한 연결을 전달합니다.

psql postgres://postgres@tcp-app.teleport.example.com/postgres

VNet은 Teleport Connect를 다음에 실행할 때 자동으로 시작되며, Teleport Connect를 종료하기 전에 VNet을 중지하지 않는 한 계속 실행됩니다.

tsh 지원

VNet은 tsh에서도 사용할 수 있습니다. 이를 사용하려면 클러스터에 로그인하고 tsh vnet 명령을 실행합니다.

tsh login --proxy=teleport.example.com
tsh vnet

문제 해결

VNet 없이 애플리케이션에 연결

가끔 연결 문제는 VNet과 관련이 없을 수 있으며, VNet 없이 애플리케이션에 연결해 보면서 문제를 진단할 수 있습니다. 애플리케이션이 연결 리소스 뷰나 tsh apps ls의 출력에 나타나는지 확인하세요. VNet을 꺼두고 로컬 프록시를 애플리케이션에 대한 애플리케이션을 생성해 보세요 (디버그 로깅을 활성화하여) tsh proxy app -d <앱-이름>으로 시도하세요.

Teleport 클러스터에 도달하려는 시간 초과

VNet이 정지되기 전에 정리할 기회가 없으면, 예를 들어 갑작스러운 장치 종료 시 /etc/resolver에 남은 DNS 구성 파일을 남길 수 있습니다. 이 파일들은 클러스터에 연결할 때 컴퓨터에게 VNet이 운영하는 DNS 서버와 통신하도록 지시합니다. 그러나 VNet이 더 이상 실행되지 않으므로 이러한 요청에 응답할 DNS 서버가 없습니다.

이 파일들을 정리하려면 VNet을 다시 시작하면 됩니다. 또는 남은 파일을 수동으로 제거할 수 있습니다.

VNet이 DNS 쿼리를 수신하는지 확인

tsh vnet -d로 VNet을 시작합니다. /var/log/vnet.log를 확인하고 VNet에서 사용 중인 IPv6 및 IPv4 CIDR 범위를 주목합니다.

From tsh vnet -d:INFO [VNET] Running Teleport VNet. ipv6_prefix:fd60:67ec:4325:: vnet/vnet.go:317
From /var/log/vnet.log:INFO Setting an IP route for the VNet. netmask:100.64.0.0/10 vnet/osconfig_darwin.go:47

클러스터에서 사용할 수 있는 TCP 애플리케이션에 대한 쿼리를 전송합니다:

dscacheutil -q host -a name tcp-app.teleport.example.com
name: tcp-app.teleport.example.comipv6_address: fd60:67ec:4325::647a:547d
name: tcp-app.teleport.example.comip_address: 100.68.51.151

dscacheutil에서 보고된 주소는 위에 보고된 VNet 범위에 속해야 합니다.

TCP 애플리케이션의 주소가 아닌 다른 것을 쿼리하는 경우 프록시 서비스에 속하는 주소를 반환해야 합니다.

dscacheutil -q host -a name dashboard.teleport.example.com
name: dashboard.teleport.example.comipv6_address: 2606:2800:21f:cb07:6820:80da:af6b:8b2c
name: dashboard.teleport.example.comip_address: 93.184.215.14

두 주소를 쿼리하면 tsh vnet -d에서 일부 출력이 생성되어야 합니다.

문제 제출

문제 제출하기 의 경우, /var/log/vnet.log의 로그와 함께 Teleport Connect 로그 또는 사용하는 클라이언트에 따라 tsh vnet -d의 출력을 반드시 포함하세요.

다음 단계

  • RFD 163를 읽고 VNet이 기술적으로 어떻게 작동하는지 알아보세요.
Teleport 원문 보기