Edited at

[中国金盾][VPN][ShadowsocksR][BBR] VPNを自分構築してみる


はじめに

中国では2018年7月から、一層ネットワークの検閲が厳しくなってきました。

以下はVPN大手VyprVPNを運営するgoldenfrogのブログです。

Chinese Government Increases VPN Blocking by 300%

筆者は、VyprVPNを使っていますが、同時に自分でGMOの運営するConoHaを使って、

日本にshadowsocksを使ってプロキシサーバーを立てています。

しかし、7月以降はどちらもパケットロスが多くなり、Youtubeをストレスなく見るのも困難になってきました。

改善を図るべく、色々探しました。その結果以下の記事に辿り着きました。

GoogleのTCP BBRでTCPを高速化しProxyもその恩恵にあずかる

BBRはTCPの輻輳制御アルゴリズムの一種です。「輻輳制御」とはTCP通信(パケット)が混雑したときにどう制御するかということです。

国外への通信はパケットが簡単にロストしたりして、通信が遅延しがちです。

中国から国外に通信するときは特に顕著です。

これを自前のプロキシサーバーに導入したところ2~3倍の効果が見られました。

そこで、中国でVPNに悩んでいる人に少しでもお役に立てればと、VPNサーバーの構築方法及び、BBRの導入方法について

説明したいと思います。

構成は以下のようになっています。


  • ConoHa VPS

  • CentOS

  • BBR

  • ShadowsocksR

サーバーはConoHaから借ります。メリットは、サーバーの場所を日本・シンガポール・アメリカから選べること。サーバーの再構築で、新しいIPアドレス付番されること。WEBコンソールがあることなどです。あと従量課金です。

VPNアプリは、ShadowsocksRを採用します。導入しやすく、安定性も高いです。

これにより、全ての作業をWEBブラウザ上で行うことが出来ます。

Shadowsocksのメリットは以下を参考にして下さい。

もうVPNは不要!?新接続方式Shadowsocksを使ってみたら驚愕した


ConoHa VPSの準備

ConoHaはGMOが運営するVPSサービスです。クラウド上のサーバーを貸してくれます。

サーバーは、執筆時点で東京、アメリカ、シンガポールから選べて、

東京の1GBモデルで、1時間1.3円となっています。1ヶ月最低900円と1000円未満でサーバーを1ヶ月運用することができます。

以下がConoHaのホームページです。

https://www.conoha.jp/

まず登録しましょう。


料金体系

今回はサーバースペックは貧弱でいいので、512MBのプランで結構です。

従量課金制ですので、サーバーを動かしている時間に対して課金されます。注意点は、サーバーを停止していても「存在している」だけで課金は発生します。ですので、不要になったサーバーは破棄しましょう。

ConoHa_fee.png


サーバーの作製

ダッシュボードからサーバーを作製します。リージョンですが、まずは東京で立てましょう。安いので。

サーバーは512MBが表示されていれば、そちらを利用してもらっても結構です。なぜか筆者のアカウントでは発見できず。以下の画像では1GBモデルで構築しました。

では、CentOS(7.5)を選択して下さい。その後、下部のroot パスワードに任意のパスワード(英数字と大文字と記号が必要です)を入力して、右の追加ボタンを押します。(ここで入力したパスワードは後で使うので、忘れないようにして下さい)

choose-server.png

追加ボタンを押した後は、自動でサーバーリストに遷移します。構築したサーバーを見つけて、詳細を見てみましょう。

serverlist.png

「Qiita-Demo-vps-2018-08-16-10-54」というサーバーが今回私が作製したサーバーです(サーバー構築時に名前を付けました)。

このサーバーは今回の執筆用に建てたので、早くこの記事を書き終わらないと、課金が止まりません。頑張ります。

サーバーの詳細は以下になります。ここに書いていあるIPアドレスは後でつかうので、ここに記載されていることを覚えておきましょう。

serverdetail.png

そしたら上部にあるコンソールとかかれた箇所をクリックして、サーバーにログインしましょう。

クリックすると別ウィンドウ(コンソール)が立ち上がります。昔でしたら、このコンソールというのは、自分のPCから繋いで、がちゃがちゃするものだったのですが、ブラウザ上で可能になっています。初心者には非常に便利です。

loginconsole.png

ログインユーザーは「root」、パスワードは先ほどサーバーを構築する際に指定した「rootパスワード」になります。

ちなみにパスワード欄で、キーボード打っても、何も表示されませんが、安心して下さい。見えないだけです。入力が終わったらEnterキーを押して下さい。

コンソールへの接続は多少不安定のようですので、うまく接続できていないようでしたら、一回ウィンドウを閉じて、再度コンソールを開いてみて下さい。

筆者がハマった点として、海外でPCを使っている人はキーボードが日本語配列でないことがあるかと思います。

ConoHaのコントロールパネルに入力する際には、デフォルトが日本語キーボードの配置になってしまっているようで、入力した値と別の値が入力されているときがあります。その際は、「テキスト送信」というところで入力して直接送信することができます。

筆者はパスワードの中で使っている記号が日本語と英語キーボードで配置が違くて、これに気づくのに5分かかりました。

うまくログインできましたでしょうか?pwddateなど入力してみましょう。現在の場所や日時が表示されましたでしょうか?

Selection_563.png

以上でサーバーの作製は完了です。以降の作業は全て、このコンソール上で行っていきます。


CentOSのUpdate

まずは肩慣らしに、CentOSを更新しましょう。

$ yum update

というコマンドをテキスト送信の欄に入力して、送信ボタンを押すと、コンソールに入力されますので、Enterで確定させて下さい。

今後は、コマンドをこのように入力していきましょう。(テキスト送信欄にしかコピペができないためです。)

ちなみに$の部分は入力する必要ありません。これはコマンドを示す記述用の記号です。

途中で、yes/no聞かれたら全てy(yes)で結構です。

Updateにはしばらく時間(5分程度)がかかるので、休憩していて下さい。


BBRの導入

BBRに導入に関しては、以下の記事をそのまま実行していきます。

GoogleのTCP BBRでTCPを高速化しProxyもその恩恵にあずかる

以上の記事をまとめると、以下のコマンドを実行することになります。

$ wget https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x ./bbr.sh && ./bbr.sh

あまり深く考えずに、こちらを実行してインストールして下さい。インストール時に再起動が走りますので、

再起動して再度ログインしましょう。

そして以下のようになっていれば、BBRの導入成功です。

$ sysctl net.ipv4.tcp_congestion_control

net.ipv4.tcp_congestion_control = bbr


ShadowsocksRの導入

この記事のまま導入しましょう。

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

先ほど同様に一括入力コマンドは以下のようになります。

wget https://github.com/teddysun/shadowsocks_install/raw/master/shadowsocksR.sh && chmod +x ./shadowsocksR.sh && ./shadowsocksR.sh

導入時に入力していった内容は全て控えておいて下さい。

クライアントアプリの設定時に必要になります。

以下のように入力して、画像のようにShadowsocksR(pid xxxx) is runningと表示されたら、ShadowsocksRの導入完了です。

$ /etc/init.d/shadowsocks status

Selection_568.png


クライアントアプリの導入

中国のAppleStoreではVPNクライアントアプリが締めだされています。

アップル、中国のApp StoreからVPNアプリ削除か

いたちごっこにはなりますが、ここは頑張りどころです。

「shadowsocks クライアントアプリ」などで検索してなんとかインストール頑張って下さい。

以下は、筆者が利用した取得先です。なお筆者はiPhone, Andorid, Mac, Windows, Amazon Fire HDに

アプリをインストールして、利用しています。中国でインストールが難しい場合は、VPNアプリを利用してダウンロードしたり、日本に居る時などにインストールしましょう(VPNアプリをインストールするのにVPNが必要という悲しい状況ですが)。


iPhone

Shadowsocksサーバーに接続するためのアプリはいくつかあるのですが、筆者はWaterdropを使っています。

中国AppleStoreでは出てこない場合は、日本などに切り替えて探してみて下さい。

How Do I Download and Install Water Drop for Shadowsocks Using iPhone ?

設定内容は以下のようになります。

Image from iOS.png

サーバーにはConoHaでサーバー構築した際のIPをアドレスを入力して下さい。

Port・Password・EncryptionにはShadowsocksRをインストールした際に、入力(選択)した値を指定して下さい。

そしたら、Shadowsocks接続をONにしてください。Googleの検索や、Youtubeが見れたら接続成功です。

以下で案内しているAndroidやMac, Windowsでも設定の手順は一緒です。


Android

Android

https://shadowsocks.en.uptodown.com/android


Mac, Windows

https://shadowsocks.org/en/download/clients.html


Tips


ShadowsockR構築時の情報

以下のように入力するとshadowsockrをinstallした際に入力した情報を見ることが出来ます。

$ cat /etc/shadowsocks.json

{
"server":"0.0.0.0",
"server_port":"17335",
"password":"your-password",
"method":"xchacha20",
...
}


ShadowsocksRサーバーの再インストール

以下のコマンドでShadowsocksRのインストールと起動を再度行うことができます。パスワードを入力しなおしたりなどの再に利用下さい。

$ ./shadowsocksR.sh


サーバーのSnapshot

ConoHaにはサーバーのスナップショットを取って、イメージを作製する機能があります。

今回のサーバー作製が無事終わりましたら、一度スナップショットを取っておきましょう。

そうすれば、それから再度サーバーを構築することができます。IPアドレスそのものが金盾にブロックされたときなどは、

ボタン一つで同じサーバーを新しいIPアドレスで構築することができます。


参考

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

一つのコードが中国のインターネットを変えた | Shadowsocksに纏わるストーリー

もうVPNは不要!?新接続方式Shadowsocksを使ってみたら驚愕した

GoogleのTCP BBRでTCPを高速化しProxyもその恩恵にあずかる