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

2018年6月5日金盾対策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

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


############################################################# # 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):tq32swno9 --------------------------- 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」をApp Storeで
‎「Mume VPN」のレビューをチェック、カスタマー評価を比較、スクリーンショットと詳細情報を確認することができます。「Mume VPN」をダウンロードしてiPhone、iPad、iPod touchでお楽しみください。

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

mume-vpn-w562

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

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