中国でYoutubaやTwitterが利用できないのは有名な話
とは言え、それを何とか使えるようにするために在中国の日本人(だけではなく、外国人)が利用しているのがVPNです。
以前からAWSやAzureと言ったパブリッククラウドの無料枠や特典として付与されたクレジットを活用して、日本リージョンにVPNサーバを構築して「専用サーバ」として有効活用していました。
その際にV2RAYという通信方式でやっていたのですが、通信が不安定になることが増えてきた(中国の規制が強まった?)ので、今回重い腰を上げてTrojan(マルウェアではない方)で構築し直すことにしました。
前提条件
今回のTrojan構築に当たって前提条件があります。
ここで使用したドメインが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からダウンロード】
【Google Playからダウンロード】
iOSの場合は有料版になりますが、Shadowrocketが有名でしょうか。
Trojanで接続してみた感じとしてはV2RAYより安定して接続できているような気がします。
このまま使い続けて様子を見てみようと思います。
V2RAY方式のサーバ構築
過去に構築したV2RAYサーバの手順です。
家の無線ルータ(NETGEAR)内のMerlinがShadowSocksかV2RAYにしか対応していないので今でもV2RAYサーバを運用しています。
これはいちいちPCやスマホにVPNクライアントをインストールして接続を切り替える必要がなく、Wifi接続を切り替えるだけでVPN接続できるので重宝しています。