中国の金盾を乗り越えるSOCKSプロキシ「Shadowsocks R」サーバーを構築する -VPNより良い?

2019年11月8日金盾対策Linux, Ubuntu, Shadowsocks, VPN, プロキシ, 金盾対策

 

中国では「金盾」によりTwitterやGoogleへのアクセスが禁止されている。これを回避するために、よく香港SIMの利用やVPNサービスの利用が謳われていたが、最近は「Shadowsocks」「ShadowsocksR」という、Socksプロキシの利用が盛んらしい。
オープンソースで公開されているので、今回はこちらをインストールしてみることにする。

Shadowsocks Rとは

ShadowSocksRは、Shadowsocksの後継となっているプロジェクトで、これはShadowSocksプロジェクトが中国当局の圧力を受けて中止になったためにフォークされた、という形のようだ。
プロトコルは若干異なっているものの、匿名性や秘匿性はShadowSocksRのほうが優れているらしい。

Shadowsock Rのインストール

非常に簡単である。
teddysunという方が公開しているインストールスクリプトを利用して、インストールを進めていく。

$ wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR.sh
$ chmod 755 shadowsocksR.sh
$ sudo ./shadowsocksR.sh 2>&1 | tee shadowsocksR.log

これで、設定ウィザードが開始となる。
設定はこんな感じにした。

<br />#############################################################
# One click Install ShadowsocksR Server                     #
# Intro: https://shadowsocks.be/9.html                      #
# Author: Teddysun <i@teddysun.com>                         #
# Github: https://github.com/shadowsocksr/shadowsocksr      #
#############################################################
Please enter password for ShadowsocksR:
(Default password: teddysun.com)
---------------------------
password =
---------------------------
Please enter a port for ShadowsocksR [1-65535]
(Default port: 14386):19890
---------------------------
port =
---------------------------
Please select stream cipher for ShadowsocksR:
1) none
2) aes-256-cfb
3) aes-192-cfb
4) aes-128-cfb
5) aes-256-cfb8
6) aes-192-cfb8
7) aes-128-cfb8
8) aes-256-ctr
9) aes-192-ctr
10) aes-128-ctr
11) chacha20-ietf
12) chacha20
13) salsa20
14) xchacha20
15) xsalsa20
16) rc4-md5
Which cipher you'd select(Default: aes-256-cfb):12      
---------------------------
cipher = chacha20
---------------------------
Please select protocol for ShadowsocksR:
1) origin
2) verify_deflate
3) auth_sha1_v4
4) auth_sha1_v4_compatible
5) auth_aes128_md5
6) auth_aes128_sha1
7) auth_chain_a
8) auth_chain_b
9) auth_chain_c
10) auth_chain_d
11) auth_chain_e
12) auth_chain_f
Which protocol you'd select(Default: origin):
---------------------------
protocol = origin
---------------------------
Please select obfs for ShadowsocksR:
1) plain
2) http_simple
3) http_simple_compatible
4) http_post
5) http_post_compatible
6) tls1.2_ticket_auth
7) tls1.2_ticket_auth_compatible
8) tls1.2_ticket_fastauth
9) tls1.2_ticket_fastauth_compatible
Which obfs you'd select(Default: plain):
---------------------------
obfs = plain
---------------------------

プロトコルとOBFSは、クライアント側で対応していない可能性があるので、Origin(=ShadowSocksと同じ)で。ストリームの暗号化方式のみ、chacha20を採用。
これで、インストール作業が始まる。

ちなみに、設定ファイルは/etc/shadowsocks.jsonにあるので、後からこちらをいじって設定を変更することも可能。

ShadowSocksを起動する

init.dスクリプトが用意されているので、こちらを用いればすんなりと起動をすることができる。

/etc/init.d/shadowsocks start

これで、ShadowSocksRサーバーの構築が完了した。

クライアントソフトから接続する

iPhoneで利用するので、Mume VPNというソフトを利用してみた。

このように、サーバー側で設定した情報を設定情報に入れてやる。

mume-vpn-w562

これで実際に接続が可能となるはずだ。

日本国内で使用してみたところ、割とサクサク動作してくれた。プロキシを通すため、正直スピードテストはアテにならない(だいたい、60Mbpsのソフトバンク回線で、3Mbps程度。サーバー側は上下ともに200Mbps)。ただ、YouTube等は通常通り閲覧が可能で、使用することに対して不便はあまりなさそうだ。
ただし、パスワードのみのセキュリティというのは若干不安があるため、fail2ban等を用いてきちんと対策を行うことをおすすめする。
あとは中国へ渡航した際に動いてくれるかどうかが見物である。その点は渡航後にレポートする予定。


執筆者紹介

Thir

購入したガジェットの紹介やサーバーの構築方法、スマートホーム化等、そのときハマっていたもののメモ書き・趣味の備忘録ではありますが、お役に立つ情報があれば幸いです。最近はYouTubeでもレビュー動画やVlogをあげています。サイト紹介・プロフィールはこちら。依頼・お問い合わせはこちらから。