Skip to content

Trojan

Potatso が対応する Trojan のトランスポート、TLS オプション、リンク、機能。

Updated Markdown で表示

Trojan サーバは、パスワードと TLS 設定で表され、任意で WebSocket や gRPC など、接続を運ぶトランスポートも使えます。Trojan は常に TLS(または REALITY)の中で動作するため、傍受している第三者には通常の HTTPS アクセスのように見えます。Potatso は、サーバのトランスポートと TLS 設定に対応していれば、そのサーバに接続します。プロバイダが示す設定、またはサーバの trojan:// リンクを見ながら、以下の表でサーバの設定を確認してください。

Trojan サーバは、手動、trojan:// リンク、または次のものからの読み込みで追加できます。

  • Clash または Mihomo のサブスクリプション、
  • Xray または V2Ray の構成、
  • Surge の構成。

Potatso は、sing-box の構成からの Trojan サーバの読み込みにはまだ対応していません。代わりに、サーバの trojan:// リンクを使ってください。

トランスポート

トランスポート リンクの type 対応 テストに使用したもの
TLS のみ(トランスポートなし) tcp、または指定なし ✅ Xray、sing-box、trojan-go
WebSocket ws ✅ Early Data の有無は問いません Xray、sing-box、trojan-go
gRPC grpc ✅ Xray、sing-box
HTTP/2 http または h2 ✅ sing-box
HTTP Upgrade httpupgrade ✅ Xray、sing-box
XHTTP xhttp ❌
mKCP、QUIC kcp、quic ❌

どのトランスポートも UDP で動作します。Potatso は、対応していないトランスポートを使うサーバを読み込みません。

Xray は HTTP/2 を提供しなくなりました。HTTP/2 を使っていた Xray サーバは現在 XHTTP を使っていますが、Potatso はまだ XHTTP に対応していません。

TLS

設定 Clash のキー リンクのパラメータ 対応
サーバ名(SNI) sni sni、peer ✅ 指定がない場合、Potatso はサーバのアドレスを使います。
ALPN alpn alpn ✅ 指定がない場合、Potatso は h2, http/1.1 を送ります。WebSocket と HTTP Upgrade では http/1.1、gRPC と HTTP/2 では h2 です。
証明書の検証をスキップ skip-cert-verify allowInsecure、insecure ✅
証明書のピン留め(SHA-256) fingerprint ✅
ブラウザフィンガープリント client-fingerprint fp ✅ chrome、firefox、safari、ios、android、edge、random。それ以外の名前は、デフォルトのハンドシェイクで接続します。
REALITY reality-opts security=reality、pbk、sid ✅ トランスポートなし、または gRPC の場合
Encrypted Client Hello(ECH) ech-opts ech ✅ リンクまたはサブスクリプションに ECH 構成がある場合
カスタム CA 証明書 ❌
TLS クライアント証明書 certificate、private-key ❌

証明書の検証をオフにすると、あなたとサーバの間にいる誰でも、通信内容を読めてしまいます。サーバが自己署名証明書を使っている場合は、代わりにサーバの証明書をピン留めしてください。証明書のピンに、その証明書の SHA-256 を設定します。

ブラウザフィンガープリントを指定すると、接続の TLS ハンドシェイクがそのブラウザのものに見えます。サーバが対応しなければならない内容は変わりません。

REALITY

REALITY サーバは、別の Web サイトの TLS 証明書を借りるため、自前の証明書が不要です。サーバの Reality 公開鍵と Reality ショート ID をプロバイダの指定どおりに設定し、サーバ名にはサーバが借りている Web サイトを設定します。REALITY にはブラウザフィンガープリントが必要です。リンクや設定にない場合、Potatso は chrome を使います。

REALITY は、トランスポートなしと gRPC で動作します。Potatso は、それ以外のトランスポートを使う REALITY サーバを読み込みません。

多重化

Potatso は、sing-box の多重化(smux、yamux、h2mux)で、1 つの Trojan 接続の上に複数の接続を通せます。Clash のサブスクリプションでは smux で設定します。サーバ側で多重化がオンになっている必要があります。TCP も UDP も動作します。

trojan-go 独自の多重化(trojan-go サーバの mux)は別のプロトコルで、Potatso は対応していません。trojan-go サーバは、多重化なしでの Potatso からの接続も受け付けます。

UDP

Trojan は、TCP と同じ TLS 接続の上で UDP を運びます。Clash と同様に、UDP はデフォルトでオフです。サーバが UDP を中継する場合は、サーバの設定で UDP リレーをオンにしてください。Xray、sing-box、trojan-go はいずれも中継します。Clash のサブスクリプションでは udp: true でオンになります。

機能の対応状況

機能 対応
Trojan プロトコル:パスワードのハッシュ、CONNECT ✅
Trojan の UDP ASSOCIATE ✅
TLS なしの Trojan(security=none) ❌
1 つのサーバでの複数ユーザ ✅ それぞれ自分のパスワードを使用
WebSocket、gRPC、HTTP/2、HTTP Upgrade トランスポート ✅ トランスポートを参照してください
XHTTP、mKCP、QUIC トランスポート ❌
REALITY ✅ トランスポートなし、または gRPC の場合
ECH ✅
sing-box の多重化(smux、yamux、h2mux) ✅
trojan-go の多重化 ❌
trojan-go の Shadowsocks 暗号化(ss-opts、encryption=ss;…) ❌
Trojan を包む ShadowTLS、Restls、JLS ❌
trojan:// と trojan-go:// のリンク ✅

対応しているすべての機能は、実際の Trojan サーバ(Xray、sing-box、trojan-go)のうち、少なくとも 1 つに対してテスト済みです。

パスワードが間違っていると、Trojan サーバは、通常の Web サイトとして応答します(フォールバック)。そのため Potatso は接続できず、パスワードのエラーも表示しません。Trojan サーバにまったく接続できない場合は、まずパスワードを確認してください。

Potatso は、trojan-go の Shadowsocks 暗号化、または Trojan を包む ShadowTLS、Restls、JLS を使うサーバを読み込みません。それらなしで接続しても、サーバが応答しないためです。

trojan-go の機能の一部は、そのクライアントプログラム自体の設定で、Potatso は同じ役割を独自の方法で果たしています。

  • ルーティング:プロファイルのルールを使ってください。
  • ローカルの SOCKS5 / HTTP サーバ、フォワーディング:Potatso がデバイスの通信を自分で取り込みます。

trojan:// リンクは、1 行にサーバ全体の情報をまとめたものです。

trojan://password@host:port?parameters#name
部分 説明
password パスワード(パーセントエンコード)。@ より前のすべてがパスワードで、: も含まれます。
host サーバのアドレス。IPv6 アドレスは [2001:db8::1] のように角括弧で囲みます。
port サーバのポート。省略した場合、Potatso は 443 を使います。
name 任意。Potatso でのサーバ名。

パラメータは、Xray と v2rayN が使う形式に従います。

パラメータ 説明
security tls(デフォルト)または reality。
type トランスポート:tcp、ws、grpc、http(HTTP/2)、httpupgrade。
sni、peer TLS のサーバ名。
alpn ALPN のリスト。カンマ区切りで、パーセントエンコードします。
fp ブラウザフィンガープリント。
allowInsecure 1 で証明書の検証をオフにします。
host WebSocket、HTTP/2、HTTP Upgrade の HTTP Host。
path WebSocket、HTTP/2、HTTP Upgrade のパス。/ws?ed=2048 のような WebSocket のパスは、Early Data をオンにします。
serviceName gRPC のサービス名。
pbk、sid REALITY の公開鍵とショート ID。
ech ECH 構成(Base64 エンコードしたうえでパーセントエンコード)。

Potatso は、type=original(トランスポートなし)または type=ws の trojan-go:// リンクも読み込みます。trojan-go の Shadowsocks 暗号化が必要になる encryption パラメータを持つリンクは読み込みません。

Potatso が Trojan サーバを共有するときは、同じパラメータを持つ trojan:// リンクを提供します。

各例は、読み込むリンクを示しています。パスワードは secret です。

基本的なサーバ:

trojan://secret@trojan.example.com:443?sni=trojan.example.com#Basic

cdn.example.com 経由の WebSocket:

trojan://secret@trojan.example.com:443?security=tls&type=ws&host=cdn.example.com&path=%2Fws#WebSocket

サービス名 TrojanGun の gRPC:

trojan://secret@trojan.example.com:443?security=tls&type=grpc&serviceName=TrojanGun#gRPC

HTTP/2:

trojan://secret@trojan.example.com:443?security=tls&type=http&host=cdn.example.com&path=%2Fh2#HTTP2

HTTP Upgrade:

trojan://secret@trojan.example.com:443?security=tls&type=httpupgrade&host=cdn.example.com&path=%2Fup#Upgrade

www.example.com を借りる REALITY:

trojan://secret@trojan.example.com:443?security=reality&sni=www.example.com&pbk=Z84J2IelR9ch3k8VtlVhhs5ycBUlXA7wHBWcBrjqnAw&sid=0123abcd&fp=chrome#REALITY
ナビゲーション

Type to search…

↑↓ navigate↵ selectEsc close