
TrustTunnel v1.1.0
오픈소스 VPN 프로토콜로, TCP, UDP, ICMP 트래픽을 HTTPS를 통해 터널링하여 DPI와 트래픽 제한을 우회합니다. 분할 터널링, SOCKS5 프록시, 사용자 지정 DNS, 크로스 플랫폼 클라이언트를 제공합니다.
클라이언트 · App Store · Play Store
목차
소개
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에서 사용할 수 있습니다.
클라이언트 기능
-
트래픽 터널링: 이 라이브러리는 클라이언트에서 엔드포인트로, 그리고 다시 돌아오는 TCP, UDP 및 ICMP 트래픽을 터널링할 수 있습니다.
-
크로스 플랫폼 지원: Linux, macOS 및 Windows 플랫폼을 지원하여 다양한 운영 체제에서 일관된 경험을 제공합니다.
-
시스템 전체 터널 및 SOCKS5 프록시: 가상 네트워크 인터페이스를 활용한 시스템 전체 터널 및 SOCKS5 프록시로 설정할 수 있습니다.
-
분할 터널링: 이 라이브러리는 분할 터널링을 지원하여 사용자가 특정 도메인 또는 호스트에 대한 연결을 VPN 엔드포인트를 통한 라우팅에서 제외하거나, 반대로 제외 목록을 기준으로 특정 도메인 또는 호스트에 대한 연결만 엔드포인트를 통해 라우팅할 수 있습니다.
-
사용자 정의 DNS 업스트림: 사용자는 VPN 엔드포인트를 통해 라우팅되는 DNS 쿼리에 사용되는 사용자 정의 DNS 업스트림을 지정할 수 있습니다.
빠른 시작
엔드포인트 설정
엔드포인트 설치
다음 명령으로 실행할 수 있는 설치 스크립트가 제공됩니다:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
설치 스크립트는 적절한 시스템 아키텍처에 맞는 최신 GitHub 릴리스에서 미리 빌드된 패키지를 다운로드하여 /opt/trusttunnel에 압축을 풉니다. 위 명령 끝에 -o DIR 플래그를 지정하여 출력 디렉터리를 재정의할 수 있습니다.
특정 버전(최신 버전 대신)을 설치하려면 -V <version>을 사용하세요:
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) 아키텍처에서 사용할 수 있습니다.
엔드포인트 업데이트
설치 스크립트는 항상 최신 버전을 설치합니다. 따라서 설치를 업데이트하려면 설치 명령을 다시 실행하세요:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnel/refs/heads/master/scripts/install.sh | sh -s -
이렇게 하면 설치 프로그램이 다시 실행되고 설치 디렉터리(기본값 /opt/trusttunnel 또는 -o DIR로 지정한 디렉터리)의 바이너리가 교체됩니다.
[!NOTE] 업데이트하기 전에 엔드포인트를 중지하는 것을 잊지 마세요:
sudo systemctl stop trusttunnel업데이트 후 엔드포인트를 다시 시작하려면:
sudo systemctl start trusttunnel
엔드포인트 설정 마법사
엔드포인트 구성 방법에 대한 자세한 문서는 CONFIGURATION.md를 참조하세요.
설치 디렉터리에는 엔드포인트 실행에 필요한 구성 파일 생성을 돕는 setup_wizard 바이너리가 포함되어 있습니다:
cd /opt/trusttunnel/
./setup_wizard -h
설정 마법사는 대화형 모드를 지원하므로 실행하면 엔드포인트 구성에 필요한 데이터를 묻습니다.
cd /opt/trusttunnel/
sudo ./setup_wizard
[!NOTE] TLS 인증서를 올바르게 관리하려면
sudo가 필요합니다.
마법사는 다음 필드를 묻습니다. 일부 필드는 안전하게 사용할 수 있는 기본값이 있습니다:
-
수신 대기할 주소 - 엔드포인트가 수신 대기할 주소를 지정합니다. 기본 배포(모든 인터페이스에서 HTTPS)의 경우
0.0.0.0:443을 사용합니다. 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과 같은 도구에서 얻은 자체 인증서 파일을 사용합니다.
- Let's Encrypt 인증서 발급(공개 도메인 필요) - 설정 마법사에 ACME 지원이 내장되어 있으며 Let's Encrypt에서 무료로 공개적으로 신뢰할 수 있는 인증서를 자동으로 획득할 수 있습니다. 다음이 필요합니다:
-
TLS 호스트 설정을 저장할 파일 경로 - TLS 호스트 설정 파일을 저장할 경로입니다.
이 시점에서 필요한 모든 구성 파일이 생성되어 디스크에 저장됩니다.
Let's Encrypt 인증서 수명 주기
설정 마법사는 초기 설정 중에 Let's Encrypt 인증서를 얻을 수 있지만, 시간이 지남에 따라 인증서가 유효하게 유지되도록 하는 책임(갱신 및 서비스 재로드/재시작)은 사용자에게 있습니다.
Certbot을 사용하여 인증서를 관리하고 자동으로 갱신하는 경우 CERT_RENEWAL.md의 가이드를 따르세요.
엔드포인트 실행
설치된 패키지에는 trusttunnel.service.template이라는 systemd 서비스 템플릿이 포함되어 있습니다.
이 템플릿을 사용하여 엔드포인트를 systemd 서비스로 설정할 수 있습니다:
[!NOTE] 템플릿 파일은 TrustTunnel 엔드포인트 바이너리와 모든 구성 파일이
/opt/trusttunnel에 있고 기본 파일 이름을 사용한다고 가정합니다. 다른 경로를 사용한 경우 템플릿을 수정하세요.
cd /opt/trusttunnel/
cp trusttunnel.service.template /etc/systemd/system/trusttunnel.service
sudo systemctl daemon-reload
sudo systemctl enable --now trusttunnel
클라이언트 구성 내보내기
엔드포인트 바이너리는 두 가지 형식으로 클라이언트 구성을 생성할 수 있습니다:
딥링크 형식(기본값)
QR 코드 및 모바일 앱에 적합한 간결한 tt://? URI를 생성합니다:
# <client_name> - 이름이 구성에 포함될 클라이언트
# <address> - 클라이언트가 연결에 사용할 `ip`, `ip:port`, `domain` 또는 `domain:port`
# `ip` 또는 `domain`만 지정하면 `listen_address` 필드의 포트가 사용됩니다.
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address>
# 또는 형식을 명시적으로 지정:
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> --format deeplink
이렇게 하면 다음과 같이 사용할 수 있는 tt://? 딥링크 URI가 출력됩니다:
- 모바일 클라이언트와 직접 공유
- CLI 클라이언트 또는 TrustTunnel Flutter 클라이언트와 함께 사용
추가 옵션을 제공할 수도 있습니다:
--name <display_name>: 클라이언트 앱에서 서버의 사용자 정의 표시 이름을 설정합니다.--dns-upstream <dns_upstream>: 클라이언트의 DNS 업스트림을 지정합니다. IP 주소 또는 보안 DNS URI(예:tls://1.1.1.1,https://dns.google/dns-query)일 수 있습니다. 이 플래그는 여러 번 사용하여 DNS 업스트림 목록을 제공할 수 있습니다.
사용자 정의 이름 및 DNS 업스트림을 사용한 예:
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <address> \
--name "My Secure VPN" \
--dns-upstream 1.1.1.1 --dns-upstream tls://8.8.8.8
--generate-client-random-prefix가 사용되면 엔드포인트는 생성된 값에 대한 허용 규칙을 vpn.toml에서 참조되는 rules.toml 파일에 추가합니다.
참고: 인증서가 신뢰할 수 있는 CA(예: Let's Encrypt)에 의해 서명된 경우 간결함을 유지하기 위해 딥링크에서 자동으로 생략됩니다. 자체 서명 인증서는 자동으로 포함됩니다.
TOML 형식(CLI 클라이언트용)
전통적인 TOML 구성 파일을 생성합니다:
cd /opt/trusttunnel/
./trusttunnel_endpoint vpn.toml hosts.toml -c <client_name> -a <public_ip> --format toml
CLI 클라이언트에 적합한 TOML 구성 파일을 출력합니다.
두 형식 모두 엔드포인트에 연결하는 데 필요한 모든 정보를 포함합니다. 설정 지침은 TrustTunnel Flutter 클라이언트 문서를 참조하세요.
축하합니다! 엔드포인트 설정이 완료되었습니다!
클라이언트 설정
엔드포인트에 연결하는 데 사용할 수 있는 여러 클라이언트가 있습니다. 전체 목록은 클라이언트 섹션을 참조하세요. 아래 지침은 공식 CLI 클라이언트 설정을 다룹니다.
클라이언트 설치
Linux / macOS
다음 명령으로 실행할 수 있는 설치 스크립트가 제공됩니다:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
설치 스크립트는 적절한 시스템 아키텍처에 맞는 최신 GitHub 릴리스에서 미리 빌드된 패키지를 다운로드하여 /opt/trusttunnel_client에 압축을 풉니다. 위 명령 끝에 -o DIR 플래그를 지정하여 출력 디렉터리를 재정의할 수 있습니다.
[!NOTE] 설치 스크립트는 linux용 x86_64, aarch64, armv7, mips 및 mipsel 아키텍처와 macos용 arm64 및 x86_64를 지원합니다.
Windows
TrustTunnel 클라이언트 릴리스 페이지에서 최신 릴리스 아카이브를 다운로드하세요.
아카이브를 원하는 디렉터리에 추출합니다(예: C:\TrustTunnel\).
라우터 설정
라우터 배포의 경우 라우터별 클라이언트 설치 가이드를 참조하세요.
- Keenetic 라우터: TrustTunnel-Keenetic (러시아어 가이드)
클라이언트 업데이트
Linux / macOS
설치 스크립트는 항상 최신 버전을 설치합니다. 따라서 설치를 업데이트하려면 설치 명령을 다시 실행하세요:
curl -fsSL https://raw.githubusercontent.com/TrustTunnel/TrustTunnelClient/refs/heads/master/scripts/install.sh | sh -s -
이렇게 하면 설치 프로그램이 다시 실행되고 설치 디렉터리(기본값 /opt/trusttunnel_client 또는 -o DIR로 지정한 디렉터리)의 바이너리가 교체됩니다.
[!NOTE] 업데이트하기 전에 클라이언트를 중지하는 것을 잊지 마세요(예: 실행 중인 프로세스 중지).
Windows
릴리스 페이지에서 최신 릴리스를 다운로드하여 설치 디렉터리의 파일을 교체하세요.
클라이언트 설정 마법사
설치 디렉터리에는 클라이언트 실행에 필요한 구성 파일 생성을 돕는 setup_wizard 바이너리가 포함되어 있습니다.
Linux / macOS
cd /opt/trusttunnel_client/
./setup_wizard -h
엔드포인트에서 생성된 구성을 사용하도록 클라이언트를 구성하려면 다음 명령을 실행하세요:
./setup_wizard --mode non-interactive \
--endpoint_config <endpoint_config> \
--settings trusttunnel_client.toml
Windows
setup_wizard.exe --mode non-interactive ^
--endpoint_config <endpoint_config> ^
--settings trusttunnel_client.toml
두 경우 모두 <endpoint_config>는 엔드포인트에서 생성된 구성 파일의 경로입니다.
trusttunnel_client.toml에는 클라이언트에 필요한 모든 구성이 포함됩니다.
[!TIP] 생성된 구성에는 엔드포인트에 연결하기 위한 기본 설정이 포함되어 있습니다. 고급 기능의 경우
trusttunnel_client.toml을 직접 편집하세요. 다음을 구성할 수 있습니다:
- VPN 모드: 모든 트래픽 라우팅(
general) 또는 특정 대상만 라우팅(selective)- 킬 스위치: VPN 연결이 끊어졌을 때 트래픽 차단
- DNS 업스트림: 사용자 정의 DNS 리졸버(DoH, DoT, DoQ 지원)
- 제외: VPN을 우회하거나 통과시킬 도메인/IP
- 리스너 유형: TUN 장치 또는 SOCKS5 프록시
사용 가능한 모든 옵션은 TrustTunnel CLI 클라이언트 README를 참조하세요.
[!NOTE] 구성을 편집한 후 변경 사항을 적용하려면 클라이언트를 다시 시작하세요.
클라이언트 실행
Linux / macOS
cd /opt/trusttunnel_client/
sudo ./trusttunnel_client -c trusttunnel_client.toml
경로 및 tun 인터페이스를 설정하려면 sudo가 필요합니다.
Windows
관리자 권한으로 터미널을 열고 다음을 실행하세요:
trusttunnel_client.exe -c trusttunnel_client.toml
경로 및 TUN 인터페이스를 설정하려면 관리자 권한이 필요합니다.
클라이언트
공식
CLI
TrustTunnel 클라이언트 — Linux, macOS, Windows
GUI
TrustTunnel Flutter 클라이언트 — iOS, Android (macOS, Windows — 곧 제공). App Store* 및 Play Store에서 사용 가능.
[!NOTE]
- 일부 국가에서는 iOS 앱이 App Store에 없습니다. 다운로드하려면 다른 국가의 Apple ID가 필요할 수 있습니다. App Store 국가 변경 방법 알아보기.
커뮤니티
[!NOTE] 커뮤니티 클라이언트는 독립적으로 개발 및 유지 관리됩니다. TrustTunnel 팀에서 공식적으로 지원하지 않습니다.
GUI
Trusty - Flutter로 빌드된 크로스 플랫폼 GUI 클라이언트(Windows 안정화, macOS 알파). 실시간 로그, 1클릭 SSH 서버 배포, 분할 터널링 도메인 그룹 자동 검색 등의 기능이 포함됩니다.
TrustTunnel-GUI-Client — TrustTunnel 클라이언트용 Python 래퍼로 구현된 Windows GUI 클라이언트
Surge — (상용) 실험적 TrustTunnel 지원이 포함된 macOS 및 iOS 네트워크 도구 상자
FireTunnel - 수정된 TrustTunnel 클라이언트를 사용하는 QT로 작성된 크로스 플랫폼 클라이언트
참고
- CONFIGURATION.md - 구성 문서
- DEVELOPMENT.md - 개발 문서
- PROTOCOL.md - 프로토콜 사양
- CHANGELOG.md - 변경 로그
- VERIFY_RELEASES.md - 릴리스 확인 방법
로드맵
현재 VPN은 TCP/UDP/ICMP 트래픽 터널링을 지원하지만, 향후 클라이언트 간 P2P 통신 지원을 추가할 계획입니다.
향후 릴리스에서 이 기능을 기대해 주세요.
라이선스
이 프로젝트는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE를 참조하세요.