
TrustTunnel v1.1.0
TCP、UDP、ICMPトラフィックをHTTPS経由でトンネリングし、DPIやスロットリングを回避するオープンソースVPNプロトコル。スプリットトンネリング、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 アップストリーム: ユーザーはカスタム DNS アップストリームを指定でき、VPN エンドポイント経由でルーティングされる 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
クライアント設定のエクスポート
エンドポイントバイナリは、2 つの形式でクライアント設定を生成できます。
ディープリンク形式(デフォルト)
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 をバイパスする、または 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 — Windows GUI クライアント。TrustTunnel クライアント の Python ラッパーとして実装されています。
Surge — (商用)macOS および iOS 向けネットワークツールボックス。実験的な TrustTunnel サポートを搭載。
FireTunnel - 修正版 TrustTunnel クライアント を使用した QT 製クロスプラットフォームクライアント。
関連情報
- CONFIGURATION.md - 設定ドキュメント
- DEVELOPMENT.md - 開発ドキュメント
- PROTOCOL.md - プロトコル仕様
- CHANGELOG.md - 変更履歴
- VERIFY_RELEASES.md - リリースの検証方法
ロードマップ
現在の VPN は TCP/UDP/ICMP トラフィックのトンネリングをサポートしていますが、今後はクライアント間のピアツーピア通信のサポートを追加する予定です。
今後のリリースでこの機能にご期待ください。
ライセンス
このプロジェクトは Apache 2.0 ライセンスの下でライセンスされています。詳細は LICENSE を参照してください。