Help us understand the problem. What is going on with this article?

CentOSでのShadowsocksRサーバー構築(安全性の高いProxyを簡単に)

More than 1 year has passed since last update.

Shadowsocksは、元々は中国の金盾(グレート・ファイアウォール)対策として生み出されたものですが、安全性の高いProxyとしての利用価値も高い仕組みです。

日本では知名度が低く日本語の情報も皆無のため、サーバーの構築方法やクライアントを紹介してみる事にしました。


対象としている人

  • 中国の方が開発した技術への偏見がない人
  • 最低限のLinuxの知識がある人
  • Proxyを構築する事に興味がある人
  • 中国やエジプト等でのインターネット規制に困っている人

Shadowsocksとは?

Shadowsocks(通称SS) は、SSHトンネル を Socks5 によって行うクライアント ⇔ サーバー型のプロトコルで、中国の金盾によるインターネット規制に対抗する仕組みとして、中国の Clowwindy氏 によって開発されました。

ShadowsocksR(通称SSR) は、その Shadowsocks を元に、互換性を保ちつつ主にセキュリティ面の機能を追加した派生バージョンで、中国の breakwa11氏 によって開発されました。

両者とも、GitHub上で自由に閲覧できるオープンソースプロジェクトです。

図解も含めた詳説は、コチラのページが分かりやすいと思います。私も中国語は全くできませんが、Google翻訳等を活用して英語に翻訳1すれば、何となく意味は分かるかと思います。


ShadowsocksRサーバーの構築

  • さくらインターネットのVPS「さくらのVPS」を利用しています。

  • CentOS6.8で検証しました。

    • 6.9や7系でも問題ないと思いますが、未検証です。
  • インストールはGitHubでteddysun氏が公開しているシェルスクリプトを利用しています。

    • Python版のShadowsocksRをインストールします。Python実行環境が未インストールの場合は自動でインストールします。
    • iptablesによるポート開放なども行いますので、内容が気になる方はよく確認してください。

インストールスクリプトのダウンロード ~ 実行

#-- インストールスクリプトをダウンロード
$ wget https://github.com/teddysun/shadowsocks_install/raw/master/shadowsocksR.sh

#-- 実行権限を与える
$ chmod +x ./shadowsocksR.sh

#-- インストールスクリプトを実行(shadowsocksR.logとしてログを残す)
$ ./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):

---------------------------
password = 
---------------------------

Please enter a port for ShadowsocksR [1-65535]:
(Default port: 8989):

---------------------------
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) rc4-md5
14) rc4-md5-6
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
Which protocol you'd select(Default: origin):1

---------------------------
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):1

---------------------------
obfs = plain
---------------------------
  • password

    • 任意のものを入力
  • port(使用するport番号)

    • デフォルトは8989ですが、変更した方が良いと思います。
  • cipher(TLSのストリーム暗号方式)

    • RFC 7905で標準化された chacha20 にしました。
  • protocol と obfs

    • 「R」のみにある設定ですが、クライアントが対応していない事があるので、デフォルトの値(=オリジナル版と同じ)にしました。

以上を入力すると…

Press any key to start...or Press Ctrl+C to cancel

…と表示されますので、問題がなければEnterを押せばインストールが始まります。キャンセルしたい場合はCtrl+Cでやり直せます。

Starting ShadowsocksR success

Congratulations, ShadowsocksR server install completed!
Your Server IP        :
Your Server Port      :
Your Password         :
Your Protocol         :
Your obfs             :
Your Encryption Method:

インストールが成功するとShadowsocksRが起動し、設定した内容の確認が表示されます。

#-- ShadowsocksRが起動している事を確認
$ /etc/init.d/shadowsocks status
ShadowsocksR (pid 23456) is running...

$ ps aux | grep shadowsocks | grep -v grep
python /usr/local/shadowsocks/server.py -c /etc/shadowsocks.json -d start

設定の変更

上記からも分かる通り、設定ファイルは /etc/shadowsocks.json にあります。

$ vi /etc/shadowsocks.json
$ /etc/init.d/shadowsocks restart

設定を変更する際は、適当なエディタで編集後、再起動すればOKです。


アンインストール

$ ./shadowsocksR.sh uninstall

その他の情報

  • サービス操作スクリプト:/etc/init.d/shadowsocks

    • start stop restart status 等の主要なコマンドを使えます。
  • ログファイル:/var/log/shadowsocksr.log


ShadowsocksRサーバーの高速化

GoogleのTCP BBRを利用して高速化する記事を作成しました。SquidでProxyを構築している場合でも十分試す価値はあると思いますので、興味がある方は併せてご参考ください。


Shadowsocksクライアント

ここまでの内容が理解できる方であれば、クライアントの設定や構築したサーバーへの接続テストは簡単にできると思います。

クライアントを設定後は下記サイトにアクセスし、IPアドレスが構築したサーバーのものになっている事を確認してください。Proxy関連の環境変数は何も吐き出さない筈です。

この記事を作成した2017年10月31日は中国に居ましたが、Windows版とiPhone版で問題なく接続できる事を確認しました。その他のクライアントは未調査です。


余談:Shadowsocks開発者への圧力

中国は経済のみが自由化されましたが、今でも共産党の一党独裁制によって成り立っている社会主義国家であり、インターネットの検閲手段である金盾を回避するような技術には圧力がかけられています。

非常に残念な事ですが、Clowwindy氏 breakwa11氏 共に、現在はShadowsocksの開発には参加していません。詳しくは以下のサイトをご覧ください。


参考URL


  1. 中国語の専門的な文章は、日本語よりも英語に翻訳した方が理解しやすい場合が多いです。 

fallout
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした