공용 주소
모든 Teleport 서비스(예: Proxy Service, Auth Service 및 에이전트)는 각 서비스의 구성 파일에서 수정할 수 있는 선택적 public_addr
속성을 가지고 있습니다. 공용 주소는 IP 또는 DNS 이름이 될 수 있습니다. 또한 값의 목록이 될 수 있습니다:
public_addr: ["service1.example.com", "service2.example.com"]
Proxy Service의 public_addr
는 단일로 구성해야 합니다. 여러 주소를 설정하면 첫 번째 목록의 주소로 리디렉션될 수 있으며, 이는 클라이언트가 사용할 수 없을 수 있습니다.
Teleport 서비스에 대해 공용 주소를 지정하는 것은 다음과 같은 사용 사례에서 유용할 수 있습니다:
- 로드 밸런서 뒤에 여러 동일한 서비스(예: Proxy Service 인스턴스)가 있습니다.
- 추가 주체가 있는 서비스에 대해 Teleport가 SSH 인증서를 발급하도록 하기를 원합니다(예: 호스트 이름).
모든 Teleport 서비스(예: Application Service 및 Database Service)는 각 서비스의 구성 파일에서 수정할 수 있는 선택적 public_addr
속성을 가지고 있습니다. 공용 주소는 IP 또는 DNS 이름이 될 수 있습니다. 또한 값의 목록이 될 수 있습니다:
public_addr: ["service-one.example.com", "service-two.example.com"]
Teleport 에이전트에 대해 공용 주소를 지정하는 것은 다음과 같은 사용 사례에서 유용할 수 있습니다:
- 로드 밸런서 뒤에 여러 동일한 서비스가 있습니다.
- 추가 주체가 있는 서비스에 대해 Teleport가 SSH 인증서를 발급하도록 하기를 원합니다(예: 호스트 이름).
HTTP CONNECT 프록시
일부 네트워크는 모든 연결을 프록시 서버를 통해 집계하여 감사하고 접근 제어 규칙을 적용할 수 있습니다. 이러한 시나리오에 대해 Teleport는 HTTP CONNECT 터널링을 지원합니다. HTTP CONNECT는 다음에 적용됩니다:
- 모든 경우의
tsh
. - Teleport 서비스(예: SSH Service 및 Database Service)로, Teleport Proxy Service에 다시 연결합니다.
HTTP CONNECT 터널링을 사용하려면 Teleport를 실행할 때 HTTPS_PROXY
및 HTTP_PROXY
환경 변수를 설정하십시오. 또한 특정 호스트/넷마스크/포트를 액세스할 때 프록시 사용을 피하기 위해 NO_PROXY
환경 변수를 선택적으로 설정할 수 있습니다.
기본적으로, 패키지 관리자(예: apt
및 yum
)에 기반한 Teleport 설치는 teleport
systemd 유닛이 /etc/default/teleport
에서 환경 변수를 읽도록 구성하여 EnvironmentFile
필드를 사용합니다:
(!/examples/systemd/teleport.service!)
HTTP CONNECT 터널링을 구성하려면, Teleport 바이너리를 실행하는 머신의 /etc/default/teleport
내에서 이러한 환경 변수를 할당할 수 있습니다. 다음 예제를 사용하여 proxy.example.com
을 프록시의 주소로 교체하십시오:
HTTP_PROXY=http://proxy.example.com:8080/
HTTPS_PROXY=http://proxy.example.com:8080/
NO_PROXY=localhost,127.0.0.1,192.168.0.0/16,172.16.0.0/12,10.0.0.0/8
Teleport가 기본 클러스터로의 리버스 터널을 구축하고 설정할 때 모든 트래픽을 프록시를 통해 집계합니다. 특히, 기본 구성을 사용하는 경우 Teleport는 포트 3024
(SSH, 리버스 터널) 및 3080
(HTTPS, 신뢰 설정)을 프록시를 통해 터널링합니다. 이러한 트래픽 중 일부를 프록시하지 않으려면(예: HTTPS는 프록시하지만 SSH는 프록시하지 않음) NO_PROXY
에 HTTP_CONNECT 터널링에서 제외할 Teleport Proxy Service 엔드포인트의 주소를 host:port
형식으로 할당하십시오.
예를 들어, 각 Teleport 바이너리를 실행하는 머신에서 /etc/default/teleport
의 환경 파일을 다음과 같이 수정할 수 있습니다:
HTTP_PROXY=http://httpproxy.example.com:8080/
HTTPS_PROXY=http://httpproxy.example.com:8080/
NO_PROXY=teleportproxy.example.com:3024
HTTPS_PROXY
또는 HTTP_PROXY
의 값은 scheme://[user[:password]@]host:port
형식이어야 하며 여기서 scheme은 https
또는 http
입니다. 값이 host:port
인 경우, Teleport는 http
를 앞에 추가합니다.
localhost
및 127.0.0.1
은 프록시 호스트에 대한 유효하지 않은 값입니다. 어떤 이유로 프록시가 로컬에서 실행되는 경우, 다른 DNS 이름이나 개인 IP 주소를 제공해야 합니다.
Proxy Service는 로컬 Kubernetes 클러스터에 연결할 때 HTTPS_PROXY
및 HTTP_PROXY
를 존중하지만 작동하지 않을 수 있습니다. 이를 해결하려면 kube.teleport.cluster.local
을 NO_PROXY
에 추가하십시오.
포트
이 섹션에서는 Teleport 인스턴스에서 열어야 할 포트를 설명합니다.
Proxy Service 포트
Teleport Proxy Service 인스턴스의 할당된 포트 목록을 얻으려면 다음 명령을 사용하십시오:
curl https://teleport.example.com:443/webapi/ping | jq
auth_service.proxy_listener_mode
가 Teleport 구성에서 multiplex
로 설정된 경우, 이는 여러 서비스가 Proxy를 통해 단일 포트를 사용함을 의미합니다.
TLS 라우팅이 있는 포트
TLS 라우팅은 기본적으로 활성화됩니다. 이 모드에서 Teleport 서비스(예: Teleport SSH Service 또는 Kubernetes)에 대한 모든 연결은 Proxy Service의 공용 웹 주소를 통해 라우팅됩니다.
자세한 내용은 TLS 라우팅 가이드를 참조하십시오.
포트 | 다운스트림 서비스 | 설명 |
---|---|---|
443 | Proxy Service | TLS 라우팅 모드에서 Proxy는 모든 프로토콜을 처리하며, 여기에는 Web UI, HTTPS, Kubernetes, SSH 및 모든 데이터베이스가 포함됩니다. |
3021 | Proxy Service | Proxy Peering 모드에서 Teleport Proxy Service 인스턴스가 에이전트에 걸리는 포트입니다. |
TLS 라우팅이 없는 포트
일부 경우, 관리자는 서로 다른 서비스에 대해 별도의 포트를 사용하려고 할 수 있습니다. 이 경우 구성 파일에서 별도의 리스너를 설정할 수 있습니다.
포트 | 다운스트림 서비스 | 설명 |
---|---|---|
3021 | Proxy Service | Proxy Peering 모드에서 Teleport Proxy Service 인스턴스가 에이전트에 걸리는 포트입니다. |
3023 | 모든 클라이언트 | 클라이언트가 연결하는 SSH 포트입니다. Proxy Service는 이 연결을 대상 서비스의 포트 3022 로 전달하거나 리버스 터널 연결을 사용합니다. |
3024 | Auth Service | 방화벽 뒤 환경에서 신뢰받는 Proxy Service 인스턴스에 리버스 SSH 터널을 만들기 위해 사용되는 SSH 포트입니다. 모든 Teleport 서비스(예: SSH Service 및 Database Service)는 이 포트를 사용하여 리버스 터널 연결을 형성합니다. |
3080 또는 443 | Proxy Service | 클러스터에 tsh 사용자를 인증하기 위한 HTTPS 연결입니다. 같은 연결이 Web UI를 제공하는 데 사용됩니다. |
3036 | Database Service | MySQL 데이터베이스로의 트래픽입니다. |
5432 | Database Service | Postgres 데이터베이스로의 트래픽입니다. |
27017 | Database Service | MongoDB 인스턴스로의 트래픽입니다. |
6379 | Database Service | Redis 인스턴스로의 트래픽입니다. |
Auth Service 포트
포트 | 다운스트림 서비스 | 설명 |
---|---|---|
3025 | 모든 Teleport 서비스 | 클러스터 내 다른 Teleport 서비스에 gRPC API를 제공하는 Auth Service에 의해 사용되는 TLS 포트입니다. |
Proxy Service 포트
클라우드 호스팅 Teleport 배포는 각 테넌트의 Proxy Service에 대해 다른 포트 세트를 할당합니다. Teleport 테넌트의 사용 가능한 포트를 보려면 다음과 비슷한 명령을 실행하십시오. mytenant.teleport.sh
를 귀하의 테넌트 도메인으로 교체하십시오:
curl https://mytenant.teleport.sh/webapi/ping | jq '.proxy'
출력은 다음과 같아야 하며, 귀하의 테넌트에 할당된 고유한 포트를 포함해야 합니다:
{
"kube": {
"enabled": true,
"public_addr": "mytenant.teleport.sh:11107",
"listen_addr": "0.0.0.0:3026"
},
"ssh": {
"listen_addr": "[::]:3023",
"tunnel_listen_addr": "0.0.0.0:3024",
"public_addr": "mytenant.teleport.sh:443",
"ssh_public_addr": "mytenant.teleport.sh:11105",
"ssh_tunnel_public_addr": "mytenant.teleport.sh:11106"
},
"db": {
"postgres_public_addr": "mytenant.teleport.sh:11109",
"mysql_listen_addr": "0.0.0.0:3036",
"mysql_public_addr": "mytenant.teleport.sh:11108"
},
"tls_routing_enabled": true
}
이 출력은 또한 귀하의 테넌트에 대해 TLS 라우팅이 활성화되어 있는지를 나타냅니다. TLS 라우팅이 활성화되면 Teleport 서비스(예: Teleport SSH Service)에 대한 연결이 서비스에 할당된 포트가 아니라 Proxy Service의 공용 웹 주소를 통해 라우팅됩니다.
이 경우, TLS 라우팅이 활성화되었으며 Proxy Service의 공용 웹 주소(ssh.public_addr
)가 mytenant.teleport.sh:443
임을 확인할 수 있습니다.
자세한 내용은 TLS 라우팅 가이드를 참조하십시오.
에이전트 포트
Teleport 에이전트는 리버스 터널을 설정하기 위해 Teleport Proxy Service에 연결합니다. 클라이언트 트래픽은 Proxy Service를 통해 에이전트로 흐르고, 에이전트는 트래픽을 귀하의 인프라의 리소스에 전달합니다.
따라서, 에이전트를 실행하는 Teleport 프로세스(예: SSH Service, Kubernetes Service 및 귀하의 인프라의 리소스를 보호하는 다른 서비스)의 경우, 에이전트가 실행되는 머신에서 공용 인터넷으로 포트를 열 필요가 없습니다.
셀프 호스팅 Teleport 클러스터를 실행하는 경우, 에이전트를 Teleport Auth Service에 직접 가입시키는 것이 가능합니다. 이 설정에서는 특정 Teleport 서비스가 리버스 터널을 통해 연결을 수용하는 대신 자체 리스너를 열게 됩니다. Proxy Service는 이러한 에이전트 서비스에 직접 연결하여 다이얼합니다.
아래 표는 각 Teleport 서비스가 프록시 트래픽을 위해 여는 포트를 설명합니다:
포트 | 서비스 | 트래픽 유형 |
---|---|---|
3022 | SSH Service | 들어오는 SSH 연결입니다. |
3026 | Kubernetes Service | Kubernetes API 서버로의 HTTPS 트래픽입니다. |
3028 | Windows Desktop Service | Teleport 클라이언트로부터의 Teleport Desktop Protocol 트래픽입니다. |
등록된 애플리케이션 및 데스크톱에 대한 액세스는 Teleport Proxy Service를 통해서만 가능합니다. Teleport Application Service 및 Teleport Database Service는 Teleport Proxy Service를 통한 리버스 터널 연결을 사용하며 포트를 직접 노출할 수 없습니다.