
Torネットワークを介してnftablesを使用し、すべてのシステムトラフィックを透過的にルーティングするLinux CLIユーティリティです。迅速なIPローテーションと、プライバシー関連タスク向けのグローバルプロキシ設定の簡単な切り替えを可能にします。
機能 • 要件 • インストール • 使用方法 • 仕組み • 検証 • コントリビュート
アプリケーションごとの設定は不要 - sudo ttp start を実行するだけで、すべての接続 が Tor を経由します。
[!CAUTION] TTP は、トラフィックを Tor 経由でルーティングすることでプライバシーを支援するために設計されたツールです。ただし、100% の匿名性を保証できるツールは存在しません。あなたの安全は、あなたの行動 (通常のブラウザと Tor Browser のどちらを使うか、アカウントにサインインするかどうかなど) にも依存します。常に多層的なセキュリティ戦略の一部として TTP を使用してください。
[!WARNING] 内部告発者である場合、または高リスクの活動に従事している場合は、TTP を使用しないでください。 代わりに、TailsOS や Tor Browser のような、公式に監査された信頼性の高いツールを直接使用してください。TTP の作者およびコントリビューターは、あなたの安全や本ソフトウェアの使用による結果について一切の責任を負いません。
従来の透過プロキシスクリプト (TorGhost、Anonsurf) は、設定ファイルを上書きし、オープン に失敗する iptables ルールセットを構築します。つまり、壊れたときにはトラフィックが平文で流出します。TTP は逆の発想で作られており、クローズドに失敗し、ディスク上に何も残しません。
transitions) によって管理されるウォッチドッグが、シンボリックリンクのターゲット差し替えを検知する二重 inotify ウォッチを介して Tor、nftables チェーン、DNS オーバーレイを監視します。1 回修復し、その後は緊急キルスイッチを適用します。--bypass-user、--bypass-group) するか、cgroups v2 スライスを介して ttp bypass <cmd> で単一のコマンドを Tor の外で実行できます。torrc でポイズニングされます。ttp-tor.service を実行し、既存の Tor インスタンスには手を付けません。ニーズに最適な方法を選択してください。システムの安定性、セキュリティ、クリーンなアンインストールのために、ネイティブパッケージを強く推奨します。
ネイティブパッケージ経由でインストールすると、すべてのシステム依存関係 (tor、nftables) とカーネルレベルの最適化 (SELinux) が OS のパッケージマネージャーによって管理されます。
最新リリース から希望するバージョンの .deb または .rpm をダウンロードし (パッケージはリリースアセットであり、リポジトリにはチェックインされていません)、インストールします:
sudo apt install ./transparent-tor-proxy_0.4.9_all.debsudo dnf install ./transparent-tor-proxy-0.4.9-1.noarch.rpmcd packaging && makepkg -si でビルドリリースアセットの完全性と真正性を検証する方法については、リリース検証ガイド を参照してください。
開発者である場合、またはリポジトリからインストールしたい場合:
git clone https://github.com/onyks-os/TransparentTorProxy.git
cd TransparentTorProxy
sudo ./scripts/install.sh
[!TIP] なぜ
./install.shを使うのか?
標準的な Python インストーラーとは異なり、このスクリプトは 「インテリジェント」 です。Red Hat ベースのシステムでは、SELinux が Enforcing モードかどうかを検出し、TTP が必要とする非標準ポート (9041、9054) に Tor をバインドできるようにカスタムポリシーモジュール (ttp_tor_policy.teから) を動的にコンパイルします。このカーネルレベルの最適化はpipでは実行できません。
Python 固有のパッケージマネージャー (pipx または仮想環境付きの pip) を介して TTP をインストールするには、代替インストール方法リファレンス を参照してください。
TTP はシンプルで軽量になるように設計されています。CLI コマンド、オプション、終了コード、技術仕様の完全なリストについては、外部インターフェースリファレンス を参照してください。
ネットワークを変更するほとんどのコマンドには root 権限 (sudo) が必要です:
プロキシを開始:
sudo ttp start
プロキシを停止:
sudo ttp stop
現在のセッションステータスを確認:
ttp status
Tor ルーティングとレイテンシを検証:
ttp check
新しい出口 IP を要求 (サーキットをローテート):
sudo ttp refresh
より高度なセットアップと回避プロファイルについては、高度なセキュリティと使用プロファイルリファレンス を参照するか、外部インターフェースリファレンス を参照してください。
トンネルが正しく機能しており、リークが存在しないことを確認するには:
Tor 出口 IP を検証:
curl -s https://check.torproject.org/api/ip
DNS ルーティングを検証:
# Should return a valid IP via Tor's DNSPort
dig +short A check.torproject.org
DNS リークテスト (ターミナル):
# This TXT query SHOULD return an EMPTY output
dig +short TXT whoami.ipv4.akahelp.net
注: 空の出力は Tor 下での 期待される 動作です。Tor の透過リゾルバは TXT レコードをサポートしていません。このコマンドが実際の ISP の IP を返す場合、DNS リークがあります。
Web ベースの検証: dnsleaktest.com と ipleak.net で常に追加のテストを実行してください。
システムから TTP を完全に削除するには:
sudo ./scripts/uninstall.sh
TTP は、標準的な Linux カーネルサブシステム、システムユーティリティ、および Tor の制御インターフェースをオーケストレーションすることで、すべてのネットワークトラフィックを透過的にルーティングします:
flowchart LR
App["Application"] --> Local["Local Network"]
Local --> DNS["systemd-resolved (Intercepted)"]
DNS --> NFT["nftables (inet ttp table)"]
NFT --> Tor["Tor Daemon"]
Tor --> Internet["Internet"]inet ttp nftables ルールセットをアトミックに生成・ロードして TCP と DNS トラフィックを傍受し、Tor にリダイレクトすると同時に IPv6 および DoT/DoH のリークを防止します。/etc/resolv.conf を揮発性の RAM バックエンド設定でオーバーレイし、DNS 呼び出しが Tor によって解決されるようにします。実行フロー、システムフック、セキュリティ境界、モジュラーコンポーネントの詳細なウォークスルーについては、以下を参照してください:
TTP は、エッジケースにおいても常にネットワークを復元するように設計されています:
[!WARNING]
- Tor Browser: 明示的な SOCKS5 プロキシを使用するアプリケーションは、二重の Tor ホップを作成します。TTP がアクティブな間は、代わりに通常のブラウザを使用してください。
- DNS-over-HTTPS (DoH): 通常のブラウザ (Firefox、Chrome、Brave、Edge) は DoH を使用してシステム DNS をバイパスする可能性があります。TTP は 3 層の防御で DoH を緩和します: (1) すべてのアウトバウンド TCP トラフィック (DoH を含む) が Tor TransPort にリダイレクトされます。(2) 一般的な DoH カナリアドメインが
torrcで0.0.0.0にマッピングされます。(3) パブリック DoH IP リゾルバが TCP/UDP ポート 443 でブロックされます (HTTP/3 QUIC DoH をブロック)。最大限のセキュリティのために、ブラウザ設定で DoH / 「Secure DNS」 を無効にしてください。- IPv6: 利用可能な場合は完全にサポートされます。TTP は IPv6 ループバックを動的に検出し、IPv6 トラフィックを Tor 経由でルーティングします。ホストが IPv6 ループバックサポートを欠いている場合、または
--no-ipv6オプションが渡された場合、TTP はリークを防ぐためにすべてのアウトバウンド IPv6 トラフィックをドロップします。- 出口 IP の変動: Tor ストリーム分離により、異なる接続で異なる出口 IP が表示される場合があります。
残存リスク、アーキテクチャ上の信頼境界、STRIDE 脅威モデルの完全な内訳については、以下を参照してください:
TTP は Makefile を使用してテストパイプラインを自動化および標準化しています。これにより、すべての変更がコミットされる前にユニットテストと統合テストで検証されることが保証されます。
[!IMPORTANT] コードをプッシュする前に必ず
make verifyを実行してください。 このコマンドが失敗した場合、コードは本番環境に対応していません。
TTP のゼロリークの主張は、断言ではなく測定されています。
Network Sandbox Engine は、
分離されたネットワーク名前空間を構築し、TTP の 実際の 生成されたルールセットをそこにロードし、
リークが構成するトラフィックを生成し、Scapy スニファーで境界の veth
インターフェースを監視します。
すべての封じ込めテストは 2 回実行されます。 assert no leaks は、スニファーが起動しなかった場合、インターフェース名が間違っている場合、またはトラフィックがプロセスを離れなかった場合にも真になります。そのため、各テストはまずルールセットを フラッシュ した状態で同じ刺激を実行し、パケットが観測されることを要求します。その後でのみ、TTP のルールセットがそれを停止すると主張します。リークを観測できないハーネスは、テストに合格するのではなく失敗します。
対象: プレーン DNS (UDP および TCP)、通常の TCP、853 の DoT、UDP/443 の QUIC DoH、ICMP、任意の UDP、IPv6 — さらに逆方向として、バイパスされた UID が依然として LAN に到達できること。すべてをブロックするファイアウォールは最初の 7 つに合格し、8 つ目に失敗します。
# libpcap is required: the sniffer compiles a BPF filter, and Scapy dlopen()s
# the unversioned libpcap.so that only the -devel/-dev package ships.
sudo apt install nftables iproute2 conntrack libpcap0.8 libpcap-dev # Debian/Ubuntu
sudo dnf install nftables iproute2 conntrack libpcap libpcap-devel # Fedora/RHEL
pip install -e ".[nse]"
make test-nse # runs as root; TTP_REQUIRE_NSE=1 so it cannot skip itself
これは、すべてのプッシュで CI (Zero-leak ruleset verification ジョブ) で実行され、リリース前の scripts/verify.sh のステップとしても実行されます。
Docker 統合テストは高速でアトミックですが、カーネル/systemd のニュアンスを 100% 捉えることはできません。重要な変更については、実際の QEMU VM でテストすることを 強く推奨します:
# Start a specific VM (e.g., arch)
./scripts/vm/start.sh arch
# Sync current code to the VM
./scripts/vm/send.sh
# Snapshot management for easy rollbacks
./scripts/vm/snapshot.sh arch save before-risky-test
何か問題が発生した場合は、診断コマンドを実行してください:
sudo ttp diagnose
├── pyproject.toml # Package metadata and dependencies
├── README.md
├── CONTRIBUTING.md # Contribution guidelines
├── SECURITY.md # Security policy
├── scripts/ # Installation, verification, and VM management scripts
├── assets/ # Branding and demo assets
├── packaging/ # Packaging configurations (.deb, .rpm, Arch PKGBUILD)
├── ttp/ # Main Python source package
│ └── resources/ # Internal package resources (SELinux policies, etc.)
├── tests/ # Unit, integration, and leak testing suites
└── docs/ # Technical documentation, threat models, and ADRs
コントリビューションは歓迎します。最も支援が重要な領域は狭く具体的です:
まず CONTRIBUTING.md から始めてください。このコードベースが基づいている 2 つのルールが記載されています: バグを捕捉するはずだったチェックを追加せずにバグを修正しないこと、および不在を主張するテストはまず存在を検知できることを証明しなければならないこと。
このプロジェクトは自由時間に維持されています。star は他の人が見つける助けになり、sponsorship は 継続を支えます。
MIT。詳細については LICENSE を参照してください。
| 構造的にフェイルクローズド | 分離された inet ttp nftables テーブルに、catch-all reject と転送時の policy drop を設定。クラッシュ、ウォッチドッグトリガー、または異常終了時には、トラフィックは Tor 経由でルーティングされるかブロックされるかのいずれかであり、決して解放されません。 |
| 何も永続化しない | セッション状態、torrc、ロックファイル、ログは tmpfs (/run/ttp/、/run/tor/ttp/) にのみ存在します。再起動しても残留物も古いロックも残りません。 |
| アプリケーションごとの設定が不要 | TCP と DNS はネットワーク層で傍受されます。SOCKS5 設定も、プロキシ環境変数も、アプリケーションのサポートも必要ありません。 |
| システムを書き換えずに DNS を処理 | /etc/resolv.conf を編集するのではなく mount --bind でオーバーレイし、さらに systemd-resolved を無効化する揮発性の drop-in を追加し、非ループバックのリゾルバトラフィックをカーネルレベルでドロップします。 |
| リークの主張は測定されている | すべての封じ込めルールは、実際に生成されたルールセットに対して分離されたネットワーク名前空間でテストされ、各テストはリークが存在しないと主張する前に、まずリークを 検知できる ことを証明します。検証 を参照してください。 |
| シナリオ | 何が起こるか |
|---|
ttp stop | ゼロリーククリーンアップ: ティアダウンロックダウンを適用し、Tor を正常にシャットダウンし、アクティブソケットスローターを実行し、1.5 秒待機し、コネクショントラッキングをフラッシュし、ファイアウォールと DNS を復元し (テーブルのフラッシュと削除を介して)、ロックファイルを削除します |
Ctrl+C / kill | シグナルハンドラーが SIGINT/SIGTERM を捕捉し、終了前に通常のクリーンアップを実行します |
kill -9 / 電源断 | 次回の ttp start が孤立したロックファイルを検出し、古いマウントスタックをクリアし、自動復元します |
| 手動緊急時 | sudo ./scripts/restore-network.sh を実行して、すべての nftables ルールをフラッシュし、DNS をリセットし、ロックファイルを削除します |
| コマンド | 目的 |
|---|
make test | ローカルで高速な ユニットテスト を実行します (root 不要、完全にモック化)。 |
make integration-debian | 特権 Docker コンテナ (Debian) 内で完全なシステムテストを実行します。 |
make integration-all | サポートされているすべてのディストロ (Debian、Fedora、Arch) の統合テストを実行します。 |
make verify | ユニットテスト + すべての統合テストを実行します。 |
make build | ネイティブの .deb および .rpm パッケージを生成します。 |
make clean | すべてのビルド成果物、キャッシュ、一時ファイルを削除します。 |
| バグと機能リクエスト | GitHub Issues |
| セキュリティ脆弱性 | SECURITY.md - 公開 issue を開かないでください |
| バージョンサポートと EOL | SUPPORT.md |
| リリースとパッケージ | GitHub Releases · PyPI |