Trojan
Trojan は金盾の突破を補助する特定不可能なシステムです。プロキシクライアントとプロキシサーバーから構成されます。
目次
インストール
Trojan は trojan パッケージでインストールすることができます。
設定
Trojan は適切に設定を行わないと動作しません。設定フォーマットとしては JSON が使われます。設定は全て /etc/trojan/
で行います。設定ファイルの各フィールドの詳しい説明は こちら を参照。また、便利な設定ジェネレータが こちら に存在します。
クライアント
クライアントの設定例:
/etc/trojan/config.json
{ "run_type": "client", "local_addr": "127.0.0.1", "local_port": 1080, "remote_addr": "example.com", "remote_port": 443, "password": ["password1"], "log_level": 1, "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256", "cipher": "ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA", "ssl": { "verify": true, "verify_hostname": true, "cert": "", "sni": "", "alpn": [ "h2", "http/1.1" ], "reuse_session": true, "curves": "", }, "tcp": { "keep_alive": true, "no_delay": true, "fast_open": false, "fast_open_qlen": 20 } }
サーバー
サーバーの設定例:
/etc/trojan/config.json
{ "run_type": "server", "local_addr": "0.0.0.0", "local_port": 443, "remote_addr": "127.0.0.1", "remote_port": 80, "password": [ "password1", "password2" ], "log_level": 1, "ssl": { "cert": "/path/to/certificate.crt", "key": "/path/to/private.key", "key_password": "", "cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA", "cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256", "prefer_server_cipher": false, "alpn": [ "http/1.1" ], "reuse_session": true, "curves": "X25519:P-256:P-384", "dhparam": "" }, "tcp": { "keep_alive": true, "no_delay": true, "fast_open": false, "fast_open_qlen": 20 } }
TLS 証明書
Trojan を使うには TLS 証明書と秘密鍵が必要です。Let's Encrypt のフリー証明書を使うか こちら に書かれているように自己署名証明書を使うことができます (非推奨)。用意できたら cert
, key
, key_password
フィールドを適用に設定してください。
TCP Fast Open
サーバー側で TCP Fast Open を使うには、以下のようにオンにする必要があります:
# echo 3 > /proc/sys/net/ipv4/tcp_fastopen
偽装
Trojan サーバーは TLS 上で他のサービスに偽装することができ、アクティブ測定を回避できます。例えば、nginx でウェブサーバーを立ち上げて remote_addr
と remote_port
フィールドをサーバーのアドレスとポートに設定してください。
実行
Systemd サービス
Trojan は trojan.service
と trojan@.service
で制御できます。例えば、設定ファイル /etc/trojan/xxx.json
を使って Trojan を起動・有効化したい場合:
# systemctl start trojan@xxx # systemctl enable trojan@xxx
/etc/trojan/config.json
を使用する場合:
# systemctl start trojan # systemctl enable trojan
手動
Trojan は以下のコマンドを使ってシェルで起動することもできます:
$ trojan /etc/trojan/config.json
/etc/trojan/config.json
は他の設定ファイルに置き換えることができます。Trojan はログを標準エラーに出力するため、ログを記録したい場合はリダイレクトしてください