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,
"ssl": {
"verify": true,
"verify_hostname": true,
"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-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA",
"cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256",
"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": true,
"alpn": [
"http/1.1"
],
"reuse_session": true,
"curves": "X25519:P-256",
"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 はログを標準エラーに出力するため、ログを記録したい場合はリダイレクトしてください