Trojan

提供: ArchWiki
2020年5月28日 (木) 12:33時点におけるYukiko05 (トーク | 投稿記録)による版 (→‎サーバー)
ナビゲーションに移動 検索に移動

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"],
    "append_payload": true,
    "log_level": 1,
    "ssl": {
        "verify": true,
        "verify_hostname": true,
        "cert": "",
        "sni": "example.com",
        "alpn": [
            "h2",
            "http/1.1"
        ],
        "reuse_session": true,
        "curves": "",
        "sigalgs": ""
    },
    "tcp": {
        "keep_alive": true,
        "no_delay": true,
        "fast_open": true,
        "fast_open_qlen": 5
    }
}

サーバー

サーバーの設定例:

/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:AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384: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:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384",
        "prefer_server_cipher": true,
        "alpn": [
            "http/1.1"
        ],
        "reuse_session": true,
        "session_timeout": 300,
        "curves": "",
        "sigalgs": "",
        "dhparam": ""
    },
    "tcp": {
        "keep_alive": true,
        "no_delay": true,
        "fast_open": true,
        "fast_open_qlen": 5
    }
}

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_addrremote_port フィールドをサーバーのアドレスとポートに設定してください。

実行

Systemd サービス

Trojan は trojan.servicetrojan@.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 はログを標準エラーに出力するため、ログを記録したい場合はリダイレクトしてください

参照