「Trojan」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「Category:プロキシサーバー en:Trojan [https://trojan-gfw.github.io/trojan/ Trojan] は金盾の突破を補助する特定不可能なシステムです。...」)
 
(Update Related)
 
(同じ利用者による、間の23版が非表示)
1行目: 1行目:
 
[[Category:プロキシサーバー]]
 
[[Category:プロキシサーバー]]
 
[[en:Trojan]]
 
[[en:Trojan]]
  +
{{Related articles start}}
  +
{{Related|Shadowsocks}}
  +
{{Related|乱数生成}}
  +
{{Related articles end}}
 
[https://trojan-gfw.github.io/trojan/ Trojan] は金盾の突破を補助する特定不可能なシステムです。プロキシクライアントと[[プロキシ設定|プロキシサーバー]]から構成されます。
 
[https://trojan-gfw.github.io/trojan/ Trojan] は金盾の突破を補助する特定不可能なシステムです。プロキシクライアントと[[プロキシ設定|プロキシサーバー]]から構成されます。
   
22行目: 26行目:
 
"remote_port": 443,
 
"remote_port": 443,
 
"password": ["password1"],
 
"password": ["password1"],
"append_payload": true,
 
 
"log_level": 1,
 
"log_level": 1,
 
"ssl": {
 
"ssl": {
 
"verify": true,
 
"verify": true,
 
"verify_hostname": true,
 
"verify_hostname": true,
"cert": "",
 
 
"cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA",
 
"cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA",
  +
"cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
"sni": "example.com",
 
  +
"cert": "",
  +
"sni": "",
 
"alpn": [
 
"alpn": [
 
"h2",
 
"h2",
36行目: 40行目:
 
"reuse_session": true,
 
"reuse_session": true,
 
"curves": "",
 
"curves": "",
"sigalgs": ""
 
 
},
 
},
 
"tcp": {
 
"tcp": {
 
"keep_alive": true,
 
"keep_alive": true,
 
"no_delay": true,
 
"no_delay": true,
"fast_open": true,
+
"fast_open": false,
"fast_open_qlen": 5
+
"fast_open_qlen": 20
 
}
 
}
 
}
 
}
66行目: 69行目:
 
"key": "/path/to/private.key",
 
"key": "/path/to/private.key",
 
"key_password": "",
 
"key_password": "",
"cipher": "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS",
+
"cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384: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_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
 
"prefer_server_cipher": true,
 
"prefer_server_cipher": true,
 
"alpn": [
 
"alpn": [
72行目: 76行目:
 
],
 
],
 
"reuse_session": true,
 
"reuse_session": true,
"session_timeout": 300,
+
"curves": "P-256",
"curves": "",
 
"sigalgs": "",
 
 
"dhparam": ""
 
"dhparam": ""
 
},
 
},
80行目: 82行目:
 
"keep_alive": true,
 
"keep_alive": true,
 
"no_delay": true,
 
"no_delay": true,
"fast_open": true,
+
"fast_open": false,
"fast_open_qlen": 5
+
"fast_open_qlen": 20
 
}
 
}
 
}
 
}

2020年9月15日 (火) 23:37時点における最新版

関連記事

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

参照