UbuntuにTrojanをインストールして快適な中国ネット環境を構築

Ubuntu
スポンサーリンク


中国でYoutubaやTwitterが利用できないのは有名な話
とは言え、それを何とか使えるようにするために在中国の日本人(だけではなく、外国人)が利用しているのがVPNです。

以前からAWSやAzureと言ったパブリッククラウドの無料枠や特典として付与されたクレジットを活用して、日本リージョンにVPNサーバを構築して「専用サーバ」として有効活用していました。

その際にV2RAYという通信方式でやっていたのですが、通信が不安定になることが増えてきた(中国の規制が強まった?)ので、今回重い腰を上げてTrojan(マルウェアではない方)で構築し直すことにしました。

スポンサーリンク

前提条件

今回のTrojan構築に当たって前提条件があります。

・WEBサーバ構築済み(Ubuntu+Nginxで構築しました)
GCPでインスタンスを作成してNginxをインストール
GCPにも無料枠や初回登録の特典である0クレジットがあるので、それをうまく使ってみようと思います。 以前もAWSやAzureの無料枠を使って中国で生活するうえで必要不可欠なV2RAYサーバを構築しましたが、同じようにGCPでも構築可能...
・WEBサーバにSSL設定済み(Lets Encryptを使用しました)
Nginxで構築したWEBサイトをLets EncryptでSSL化
WEBサイトを作るなら常時SSL化は当たり前ということで、「Let's Encrypt」と「certbot」を使用して無料でSSL化します。 「Let's Encrypt」は無料でSSL証明書を発行してくれるサービスですが、証明書の有効期限...

ここで使用したドメインがTrojanのURLになります。

インストール開始

Trojanをインストールします。

$ sudo apt install trojan -y

systemdのserviceファイルを作成します。

$ sudo vim /etc/systemd/system/trojan.service

この内容をそのままコピペします。

[Unit]
Description=trojan
Documentation=man:trojan(1) https://trojan-gfw.github.io/trojan/config https://trojan-gfw.github.io/trojan/
After=network.target network-online.target nss-lookup.target mysql.service mariadb.service mysqld.service

[Service]
Type=simple
StandardError=journal
User=nobody
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=/usr/bin/trojan /etc/trojan/config.json
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=1s

[Install]
WantedBy=multi-user.target

Trojanのconfigファイルを設定します。

$ sudo vim /etc/trojan/config.json

【変更する箇所】
password1 → 任意のパスワード(クライアントツールから接続する時に使用)
password2 → ブランク("")
cert → /etc/letsencrypt/live/www.example.com/fullchain.pem(前提条件にあるSSL設定のLetsencryptで設定したcertificate)
key → /etc/letsencrypt/live/www.example.com/privkey.pem(前提条件にあるSSL設定のLetsencryptで設定したkey)

{
"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:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384",
"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,
"session_ticket": false,
"session_timeout": 600,
"plain_http_response": "",
"curves": "",
"dhparam": ""
},
"tcp": {
"prefer_ipv4": false,
"no_delay": true,
"keep_alive": true,
"reuse_port": false,
"fast_open": false,
"fast_open_qlen": 20
},
"mysql": {
"enabled": false,
"server_addr": "127.0.0.1",
"server_port": 3306,
"database": "trojan",
"username": "trojan",
"password": "",
"key": "",
"cert": "",
"ca": ""
}
}

Trojanを有効化して、サービスを起動します。

$ sudo systemctl enable trojan
$ sudo systemctl start trojan

クライアントツールで接続

使用したアプリは「V2RayNG」です。
名前にV2RAYが含まれていて微妙ですが、Trojanの接続が可能なアプリです。

【Githubからダウンロード】

Releases · 2dust/v2rayNG
A V2Ray client for Android, support Xray core and v2fly core - 2dust/v2rayNG

【Google Playからダウンロード】

v2rayNG - Apps on Google Play
v2ray Android client

iOSの場合は有料版になりますが、Shadowrocketが有名でしょうか。

‎Shadowrocket
‎Rule based proxy utility client for iPhone/iPad. - Capture all HTTP/HTTPS/TCP traffic from any applications on your dev...

Trojanで接続してみた感じとしてはV2RAYより安定して接続できているような気がします。
このまま使い続けて様子を見てみようと思います。

V2RAY方式のサーバ構築

過去に構築したV2RAYサーバの手順です。

家の無線ルータ(NETGEAR)内のMerlinがShadowSocksかV2RAYにしか対応していないので今でもV2RAYサーバを運用しています。
これはいちいちPCやスマホにVPNクライアントをインストールして接続を切り替える必要がなく、Wifi接続を切り替えるだけでVPN接続できるので重宝しています。

V2RAYサーバをAWSのEC2で構築すれば1年間ほぼ無料のはず
コロナウイルスの影響で上海への道は閉ざされたままの状態が1か月以上続いています。 1年後には最近のこの状態を笑って振り返ることができれば幸せです。 中国と言えば「中国からTwitterやFacebookが利用できない」なんて話は有名な話です...