透過キャプチャ
透過キャプチャは、アプリケーションを一切変更することなく、TCP コネクションをカーネルレベルで直接 mqproxy へリダイレクトします — SOCKS5 の設定も、プロキシ設定も、アプリ側の認識も不要です。デフォルトでは、キャプチャされた各コネクションは MPQUIC トンネル上で単一ストリームとして 不透明に(バイト単位で、復号せずに)リレーされ、フローレベルのマルチパスアグリゲーションを提供します。このとき、エンドツーエンドの TLS はアプリケーションとオリジンの間で完全に保たれ、mqproxy は平文を一切見ません。--mitm を追加すると、代わりに TLS を HTTP/2 として終端・検査します — このオプトインモードは TLS MITM モード で説明します。
Linux + IPv4 のみ
透過キャプチャはカーネルのファイアウォールルールをインストールするため、root または CAP_NET_ADMIN が必要です。
2 つのカーネルキャプチャ方式
redirect(デフォルト) —nft nat OUTPUT(REDIRECT ターゲット)を使用します。ローカルマシン自身の外向き TCP をキャプチャします。ソケットにIP_TRANSPARENTを必要としません。mqproxy と高速化対象のアプリが同じホストで動く場合に適したモードです。tproxy—nft mangle PREROUTING(TPROXY ターゲット)を、待ち受けソケットのIP_TRANSPARENTとともに使用します。ルータゲートウェイのように、下流の LAN ホストからの 転送 トラフィックをキャプチャします。ローカル TCP スタックの応答パケットを正しいインターフェースから送り返すために、fwmark+ ポリシールーティングテーブルが必要です。これは標準的な Linux TPROXY セットアップで、パケットをマークしてリスナーへ誘導できる任意のルータ/ポリシールーティングスタックと組み合わせられます — OpenMPTCProuter(OMR)はそうしたデプロイの一例であって、必須ではありません。
単一ホストのクイックスタート(redirect モード、--setup-redirect)
# サーバー — 通常の設定から変更なし。
./build/mqproxy server --listen 0.0.0.0:4433 --token secret123
# クライアント — :12443 で透過リスナー。nft ルールを自己インストール (root が必要)。
sudo ./build/mqproxy client \
--server 127.0.0.1:4433 --token secret123 \
--tproxy 127.0.0.1:12443 \
--setup-redirect
# このホスト上で TCP :443 へ外向き接続するアプリは、透過的にキャプチャされ、
# MPQUIC でアグリゲーションされ、オリジンへ転送されます。
# curl の --socks5 / --proxy フラグは不要です。
curl https://example.com/--setup-redirect は、起動時に nft ルールをインストールし終了時に削除するよう mqproxy に指示します。root または CAP_NET_ADMIN が必要です。自己インストールされるルールは デフォルトで TCP 宛先ポート 443 をキャプチャします。別のポートをキャプチャするには --tproxy-dport <port> を使います。複数ポートやより細かい制御が必要な場合は、ファイアウォールルールを自分でインストールし、トラフィックをリスナーへ向けるだけにしてください — mqproxy は、ルールがリダイレクトしたものの元の宛先を読み取ります。
ルータ/ゲートウェイのデプロイ(tproxy モード)
ルータスタックが既にファイアウォールとポリシールーティングのルールを所有している場合(例: OpenMPTCProuter、または PREROUTING に TPROXY ターゲットを置きパケットをマークする任意のセットアップ)、--setup-redirect を OFF のままにし、mqproxy にはリスナーの提供だけをさせます — その --tproxy-fwmark/--tproxy-table をルールが使う値に合わせてください。
sudo ./build/mqproxy client \
--server <server>:4433 --token secret123 \
--tproxy 0.0.0.0:12443 \
--tproxy-mode tproxy \
--tproxy-fwmark 1 \
--tproxy-table 100
# --setup-redirect なし — ルータスタックがルールを所有ループ回避とセキュリティ上の注意
--tproxy-uid <uid>は、自身の外向き トラフィックがリダイレクトから除外される UID を 1 つ指定します(mqproxy 自身のサーバーへの接続が自分自身に再キャプチャされないように)。デフォルトはプロセスのgeteuid()です。専用の非 root サービスアカウントとして実行することを推奨します。uid 0 を使うと全 root トラフィックが除外され、意図より広くなります。- デフォルトで透過キャプチャは 不透明 です。mqproxy は生の TLS バイトをリレーし、決して復号しません。証明書ピンニングを行うアプリケーションも引き続き動作します。
--mitmを追加すると、このキャプチャ経路が TLS 終端の L7 プロキシになります — TLS MITM モード を参照してください。MITM は--mitmが渡されない限り OFF です。