이 가이드는 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.comtsh 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.comname: 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.comname: 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이 기술적으로 어떻게 작동하는지 알아보세요.