
TrustTunnel v1.1.0
오픈소스 VPN 프로토콜로, TCP, UDP, ICMP 트래픽을 HTTPS를 통해 터널링하여 DPI와 트래픽 제한을 우회합니다. 분할 터널링, SOCKS5 프록시, 사용자 지정 DNS, 크로스 플랫폼 클라이언트를 제공합니다.
클라이언트 · App Store (iOS) · App Store (macOS) · Play 스토어
목차
소개
TrustTunnel은 AdGuard VPN에서 처음 개발한 현대적인 오픈 소스 VPN 프로토콜로, 이제 누구나 사용하고 감사할 수 있습니다.
일반적인 절충 없이 빠르고 안전하며 안정적인 VPN 연결을 제공합니다. 설계상 TrustTunnel 트래픽은 일반 HTTPS 트래픽과 구별할 수 없어, 강력한 프라이버시 보호를 유지하면서도 트래픽 제한과 심층 패킷 검사를 우회할 수 있습니다.
TrustTunnel 프로젝트에는 VPN 엔드포인트(이 저장소), 클라이언트용 라이브러리 및 CLI, 그리고 GUI 애플리케이션이 포함됩니다.
서버 기능
-
VPN 프로토콜: 이 라이브러리는 HTTP/1.1, HTTP/2, QUIC과 호환되는 VPN 프로토콜을 구현합니다. 일반 네트워크 트래픽을 모방함으로써 탐지 및 차단이 불가능해집니다.
-
유연한 트래픽 터널링: TrustTunnel은 클라이언트와 주고받는 TCP, UDP, ICMP 트래픽을 터널링할 수 있습니다.
-
플랫폼 호환성: 서버는 Linux 및 macOS와 호환됩니다. 클라이언트는 Android, Apple, Windows, Linux에서 사용할 수 있습니다.
-
구독 엔드포인트: 선택적으로 HTTPS를 통해 사용자별 구독 URL을 제공할 수 있습니다.
vpn.toml에서[subscription]이 활성화되면, 각 클라이언트는 HTTP Basic Auth를 사용하여 HTTPS를 통해 자체 JSON 구성(연결 매개변수, 자격 증명, DNS 업스트림 등)을 가져올 수 있어, 수동 파일 재배포 없이 셀프 서비스 및 자동 갱신 클라이언트 구성이 가능합니다.
클라이언트 기능
-
트래픽 터널링: 이 라이브러리는 클라이언트에서 엔드포인트로, 그리고 다시 돌아오는 TCP, UDP, ICMP 트래픽을 터널링할 수 있습니다.
-
크로스 플랫폼 지원: Linux, macOS, Windows 플랫폼을 지원하여 다양한 운영 체제에서 일관된 경험을 제공합니다.
-
시스템 전역 터널 및 SOCKS5 프록시: 가상 네트워크 인터페이스를 활용한 시스템 전역 터널로 설정할 수 있을 뿐만 아니라 SOCKS5 프록시로도 설정할 수 있습니다.
-
분할 터널링: 이 라이브러리는 분할 터널링을 지원하여, 사용자가 특정 도메인이나 호스트로의 연결을 VPN 엔드포인트를 통한 라우팅에서 제외하거나, 반대로 제외 목록을 기반으로 특정 도메인이나 호스트로의 연결만 엔드포인트를 통해 라우팅할 수 있습니다.
-
사용자 지정 DNS 업스트림: 사용자는 VPN 엔드포인트를 통해 라우팅되는 DNS 쿼리에 사용할 사용자 지정 DNS 업스트림을 지정할 수 있습니다.
빠른 시작
엔드포인트 설정
엔드포인트 설치
다음 명령으로 실행할 수 있는 설치 스크립트가 제공됩니다:```bash curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
설치 스크립트는 최신 GitHub 릴리스에서 적절한 시스템 아키텍처용 사전 빌드된 패키지를 다운로드하여 `/opt/trusttunnel`에 압축을 풉니다. 출력 디렉터리는 위 명령 끝에 `-o DIR` 플래그를 지정하여 재정의할 수 있습니다.
최신 버전 대신 특정 버전을 설치하려면 `-V <version>`을 사용하십시오:```bash
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s - -V <version>
[!NOTE] 사전 빌드된 패키지는
linux-x86_64,linux-aarch64, 그리고macos-universal(Intel 및 Apple Silicon) 아키텍처용으로 제공됩니다.
엔드포인트 업데이트
설치 스크립트는 항상 최신 버전을 설치합니다. 따라서 설치를 업데이트하려면 설치 명령을 다시 실행하세요:```bash curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
이것은 설치 프로그램을 다시 실행하고 설치 디렉터리(기본적으로 `/opt/trusttunnel`, 또는 `-o DIR`로 지정한 디렉터리)의 바이너리를 교체합니다.
> [!NOTE]
> 업데이트하기 전에 엔드포인트를 중지하는 것을 잊지 마세요:
>
> ```bash
> sudo systemctl stop trusttunnel
> ```
>
> 업데이트 후 엔드포인트를 다시 시작하려면:
>
> ```bash
> sudo systemctl start trusttunnel
> ```
#### 엔드포인트 구성 마법사
엔드포인트 구성 방법에 대한 더 자세한 문서는 [CONFIGURATION.md](https://github.com/trusttunnel/trusttunnel/blob/master/CONFIGURATION.md)를 참조하세요.
설치 디렉터리에는 엔드포인트 실행에 필요한 구성 파일을 생성하는 데 도움이 되는 `setup_wizard` 바이너리가 포함되어 있습니다:```bash
cd /opt/trusttunnel/
./setup_wizard -h
설정 마법사는 대화형 모드를 지원하므로, 실행하면 엔드포인트 구성에 필요한 데이터를 물어봅니다.```bash cd /opt/trusttunnel/ sudo ./setup_wizard
> [!NOTE]
> TLS 인증서를 적절히 관리하려면 `sudo`가 필요합니다.
마법사는 다음 필드를 요청하며, 일부는 안전하게 사용할 수 있는 기본값이 있습니다:
- **수신 대기할 주소** - 엔드포인트가 수신 대기할 주소를 지정합니다. 네이티브 배포의 경우 `0.0.0.0:443`을 사용하세요(모든 인터페이스에서 HTTPS). Docker 포트 매핑 `443:8443`으로 실행하는 경우 `0.0.0.0:8443`으로 설정하세요.
- **자격 증명 파일 경로** - 인증을 위한 사용자 자격 증명이 저장될 경로입니다.
- **사용자 이름** - 사용자가 인증에 사용할 사용자 이름입니다.
- **비밀번호** - 사용자의 비밀번호입니다.
- **사용자를 더 추가하시겠습니까?** - 사용자를 더 추가하려면 `yes`를, 구성 프로세스를 계속하려면 `no`를 선택하세요.
- **규칙 파일 경로** - 필터링 규칙을 저장할 경로입니다.
- **연결 필터링 규칙** - 엔드포인트가 다음을 기준으로 사용자의 연결을 허용하거나 차단하는 데 사용할 규칙을 추가할 수 있습니다:
- 클라이언트 IP 주소
- TLS 랜덤 접두사
- 마스크가 있는 TLS 랜덤
모든 연결을 허용하려면 `n`을 누르세요.
- **라이브러리 설정을 저장할 파일 경로** - 기본 엔드포인트 구성 파일을 저장할 경로입니다.
- **인증서 선택** - TLS 인증서를 얻는 방법을 선택하세요:
- **Let's Encrypt 인증서 발급**(공개 도메인 필요) - 설정 마법사에는 ACME 지원이 내장되어 있으며 Let's Encrypt에서 무료로 공개적으로 신뢰받는 인증서를 자동으로 얻을 수 있습니다. 다음이 필요합니다:
- 서버의 IP 주소를 가리키는 등록된 도메인
- 인터넷에서 접근 가능한 포트 80(HTTP-01 챌린지용), 또는
- DNS TXT 레코드를 추가할 수 있는 능력(DNS-01 챌린지용)
- **자체 서명 인증서 생성** - CLI 클라이언트와 Flutter 클라이언트 모두에서 지원됩니다. 생성된 인증서는 내보낸 클라이언트 구성에 자동으로 포함됩니다.
- **기존 인증서 경로 제공** - 다른 CA나 [certbot][certbot]과 같은 도구에서 얻은 자체 인증서 파일을 사용하세요.
- **TLS 호스트 설정을 저장할 파일 경로** - TLS 호스트 설정 파일을 저장할 경로입니다.
이 시점에서 필요한 모든 구성 파일이 생성되어 디스크에 저장됩니다.
[certbot]: https://eff-certbot.readthedocs.io/en/stable/
#### Let's Encrypt 인증서 수명 주기
설정 마법사는 초기 설정 중에 Let's Encrypt 인증서를 얻을 수 있지만, 시간이 지나도 유효하게 유지되도록 하는 것(갱신 및 서비스 재로드/재시작)은 사용자의 책임입니다.
Certbot을 사용하여 인증서를 관리하고 자동으로 갱신하는 경우 [CERT_RENEWAL.md](https://github.com/trusttunnel/trusttunnel/blob/master/CERT_RENEWAL.md)의 가이드를 따르세요.
#### 엔드포인트 실행
설치된 패키지에는 `trusttunnel.service.template`이라는 systemd 서비스 템플릿이 포함되어 있습니다.
이 템플릿은 엔드포인트를 systemd 서비스로 설정하는 데 사용할 수 있습니다:
> [!NOTE]
> 템플릿 파일은 TrustTunnel Endpoint 바이너리와 모든 구성 파일이 `/opt/trusttunnel`에 있고 기본 파일 이름을 사용한다고 가정합니다. 다른 경로를 사용한 경우 템플릿을 수정하세요.```bash
cd /opt/trusttunnel/
cp trusttunnel.service.template /etc/systemd/system/trusttunnel.service
sudo systemctl daemon-reload
sudo systemctl enable --now trusttunnel
클라이언트 구성 내보내기
엔드포인트 바이너리는 두 가지 형식으로 클라이언트 구성을 생성할 수 있습니다:
딥링크 형식 (기본값)
QR 코드와 모바일 앱에 적합한 간결한 tt://? URI를 생성합니다:```shell
<client_name> - name of the client those credentials will be included in the configuration
- ip, ip:port, domain, or domain:port that the client will use to connect
If only ip or domain is specified, the port from the listen_address field will be used
cd /opt/trusttunnel/ ./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a
Or explicitly specify the format:
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a
--format deeplink이것은 `tt://?` 딥링크 URI를 출력하며, 이는 다음과 같이 사용할 수 있습니다:
- 모바일 클라이언트와 직접 공유
- [CLI 클라이언트][trusttunnel-client] 또는 [TrustTunnel Flutter 클라이언트][trusttunnel-flutter-client]와 함께 사용
추가 옵션을 제공할 수도 있습니다:
- `--name <display_name>`: 클라이언트 앱에서 서버의 사용자 지정 표시 이름을 설정합니다.
- `--dns-upstream <dns_upstream>`: 클라이언트의 DNS 업스트림을 지정합니다. IP 주소
또는 보안 DNS URI(예: `tls://1.1.1.1`, `https://dns.google/dns-query`)일 수 있습니다.
이 플래그는 여러 번 사용하여 DNS 업스트림 목록을 제공할 수 있습니다.