はじめに
中国では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のプランで結構です。
従量課金制ですので、サーバーを動かしている時間に対して課金されます。注意点は、サーバーを停止していても「存在している」だけで課金は発生します。ですので、不要になったサーバーは破棄しましょう。
サーバーの作製
ダッシュボードからサーバーを作製します。リージョンですが、まずは東京で立てましょう。安いので。
サーバーは512MBが表示されていれば、そちらを利用してもらっても結構です。なぜか筆者のアカウントでは発見できず。以下の画像では1GBモデルで構築しました。
では、CentOS(7.5)を選択して下さい。その後、下部のroot パスワードに任意のパスワード(英数字と大文字と記号が必要です)を入力して、右の追加ボタンを押します。(ここで入力したパスワードは後で使うので、忘れないようにして下さい)
追加ボタンを押した後は、自動でサーバーリストに遷移します。構築したサーバーを見つけて、詳細を見てみましょう。
「Qiita-Demo-vps-2018-08-16-10-54」というサーバーが今回私が作製したサーバーです(サーバー構築時に名前を付けました)。
このサーバーは今回の執筆用に建てたので、早くこの記事を書き終わらないと、課金が止まりません。頑張ります。
サーバーの詳細は以下になります。ここに書いていあるIPアドレスは後でつかうので、ここに記載されていることを覚えておきましょう。
そしたら上部にあるコンソールとかかれた箇所をクリックして、サーバーにログインしましょう。
クリックすると別ウィンドウ(コンソール)が立ち上がります。昔でしたら、このコンソールというのは、自分のPCから繋いで、がちゃがちゃするものだったのですが、ブラウザ上で可能になっています。初心者には非常に便利です。
ログインユーザーは「root」、パスワードは先ほどサーバーを構築する際に指定した「rootパスワード」になります。
ちなみにパスワード欄で、キーボード打っても、何も表示されませんが、安心して下さい。見えないだけです。入力が終わったらEnterキーを押して下さい。
コンソールへの接続は多少不安定のようですので、うまく接続できていないようでしたら、一回ウィンドウを閉じて、再度コンソールを開いてみて下さい。
筆者がハマった点として、海外でPCを使っている人はキーボードが日本語配列でないことがあるかと思います。
ConoHaのコントロールパネルに入力する際には、デフォルトが日本語キーボードの配置になってしまっているようで、入力した値と別の値が入力されているときがあります。その際は、「テキスト送信」というところで入力して直接送信することができます。
筆者はパスワードの中で使っている記号が日本語と英語キーボードで配置が違くて、これに気づくのに5分かかりました。
うまくログインできましたでしょうか?pwd
やdate
など入力してみましょう。現在の場所や日時が表示されましたでしょうか?
以上でサーバーの作製は完了です。以降の作業は全て、このコンソール上で行っていきます。
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
クライアントアプリの導入
中国の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 ?
設定内容は以下のようになります。
サーバーにはConoHaでサーバー構築した際のIPをアドレスを入力して下さい。
Port・Password・EncryptionにはShadowsocksRをインストールした際に、入力(選択)した値を指定して下さい。
そしたら、Shadowsocks接続をONにしてください。Googleの検索や、Youtubeが見れたら接続成功です。
以下で案内しているAndroidやMac, Windowsでも設定の手順は一緒です。
Android
Android
https://shadowsocks.en.uptodown.com/android
Mac, Windows
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もその恩恵にあずかる