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

[中国金盾][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の導入方法について
説明したいと思います。

ちなみに、個人のはてなブログにはAWS上にshadowsocksサーバーを構築する記事を書きましたので、エンジニアの方はそちらもどうぞ参考にされてください。
https://nishiyama.hatenablog.com/entry/shadowsocks-on-aws

では話を戻しまして、構成は以下のようになっています。

  • 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もその恩恵にあずかる

xishan
上海に駐在して、エンタープライズ向けのソフトウェアエンジニアをしています。 WEBアプリ開発から、CI/CD、SREまでなんでも幅広く。 中国人エンジニアに囲まれ日々奮闘。
https://nishiyama.hatenablog.com/
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