Azureで立てたShadowsocksが規制されたのでOpenConnectサーバーを立てた

前回までの7MC.ORG――――(海外ドラマ風

中国訪問時にインターネット規制をかいくぐるためAzureに導入したShadowsocksサーバー。これまで何度かお世話になっていて、前回訪中時にもMi SIMと組み合わせることで最高のコスパを発揮してくれた。

しばらく現地の協力員にも貸していたのだが、今日になって「使えなくなった」と連絡が。

 

 

中国のネット規制情報でいつもお世話になっているかべネコVPNさんによると、中国の全国サイバーセキュリティ推進週間ということで制限が厳しくなっているようだ。

しかし毎度のことながら「IKEv2方式及びOpenConnect方式は,通常どおり中国から利用可能」とのこと。特にOpenConnect方式は最も(現時点で)規制に強い」と紹介されている事もあって以前から気になっていた。

(かべネコVPNさんには毎度規制情報でお世話になっておきながらサービスを利用したことはないのが心苦しいが、自鯖をやめた際にはぜひ加入したいと思っている。迅速な情報共有と確かなサービスは非常に大きな安心材料だ。)

 

OpenConnectサーバーをAzureにインストールする

OpenConnectサーバーの立て方自体は分かりやすい記事が結構見つかる(例1例2)のだが、Azureに(できるだけ簡単に)インストールする方法はなかなか見つからない。

唯一見つかったのがこのページ。

DockerコンテナではなくUbuntu Linux VMを使うようだが、ほぼ一気通貫でインストールできるらしい。これは有能。

以下、上記サイトの説明に従い順に作業していく。

 

1.Create an Ubuntu Linux VM on Azure

まずはAzure上にUbuntuのVMを作成する。

基本的に公式のドキュメントを読みながら進めればよい(一部違いあり)。

azure_oc000.png

Azure Portalの左上「+リソースの追加」から「Ubuntu Server 18.04 LTS」を選択。

そしてリソースグループ名やら何やらを入力する。リージョンは東日本を指定(西日本は対応してなかった)。

azure_oc001.png

 

Smallest instance (~7$/month) is enough for normal workload

注意が必要なのは「サイズ」という項目。初期値はやたら強マシンに設定されているが、よく見たら一ヶ月一万円からということで即却下。

参考元サイトには「通常のワークロードなら最小構成でいい」と書いてあったが、念の為に上から2つ目の「B1ms」を選択。

 

Select password authentication

次の「管理者アカウント」はパスワードにしておき任意のものを設定する。

「受信ポートの規則」はHTTPHTTPSSSHも許可すること(画像ではSSHを忘れており後で手動設定した)

azure_oc002.png

2つの設定が完了したら「確認および作成」をクリック。

しばらくしたら「検証に成功しました」と表示され、スペック等の確認画面が表示される。

azure_oc0023.png

今回選んだB1msは1時間3円、1ヶ月つけっぱなしで2千円ちょい。使用頻度を考えたらやっぱり最小構成でも良かったかな、と思いつつ、今回はお試しということでそのまま続行。「作成」ボタンをクリックして暫く待つと仮想マシンが作成される。

 

Configure DNS name (FQDN)

Azureにはドメイン名を設定できる機能があるらしい。

先ほど作成した仮想マシンを選択して右下の「DNS名 : 構成」をクリック。

azure_oc0024.png

ここで「DNS名ラベル」に好きな文字列を入力すると、そのままDNS設定ができる。

azure_oc0025.png

やや長いが、わざわざDynamicDNSを登録する手間を考えたら便利なものだ。

これでIPアドレスが変わっても接続情報を変更する必要がなくなったため、ドメイン名で金盾ブロックされない限りずっとこのままで運用できそうだ。

 

2.Open Azure firewall

上の「受信ポートの規則」でHTTPHTTPSSSHを選択していれば不要のため割愛。

 

3.SSH to server

TeraTerm等のSSH接続ツールを使い先程の仮想マシンに接続する。私はcmdでそのまま叩いた。

ssh <USERNAME>@<SERVER_NAME>.cloudapp.azure.com

繋がらない場合はポートがちゃんと開けられているか再確認。ポート22、TCPが空いていないとSSH接続できない。

 

4.Create installation script

SSHで下の2行を叩く。Exampleは参考用。

wget https://raw.githubusercontent.com/luiscantero/azure-openconnect-vpn/master/installoc.sh && sudo chmod 755 installoc.sh
./installoc.sh <FQDN> <EMAIL>
Example: ./installoc.sh EXAMPLE.japaneast.cloudapp.azure.com example@example.com

EMAILは何に使うかわからんけど適当なメアドを入力。

こんな感じでinstalloc.shの実行が正常終了すればOK。

azure_oc0026.png

一度<FQDN>を間違えて<USERNAME>@<SERVER_NAME>.cloudapp.azure.comで指定してしまいエラーを吐いたが、指定し直して再度実行すればうまく行った。

これでサーバー側のセッティングは完了。

 

5.Clients

Windows用のクライアントはあるようだが今回はスルーしてAndroidに絞ることに。

GoogleでよくヒットするOpenConnectというアプリは残念ながらPlayストアから消えていた。

azure_oc0027.png

(画像引用元:AndroidのOpenConnect接続 ■セカイVPN■

 

仕方がないのでCiscoさん公式のAnyConnectをインストール。

サーバーアドレス欄にステップ1で設定したDNS名(FQDN)を設定したら接続。ユーザ名/パスワードを入力すれば接続成功。

azure_oc0028.png

Android側のVPNアクセス通知が表示され、Androidのステータスバーに鍵マークが追加された。

データの送受信は問題なく、IP Location Finderでもアクセス元が東京になっていることを確認。アッサリ成功だ。

azure_oc0030.png

 

パスワードが保存できない

ただ気になることが。このアプリ、接続する度にユーザ名・パスワードを要求してくる。

azure_oc0029.png

正直毎回パスワードを入力するのは面倒臭すぎるのだが、アプリ側で保存するなどのサクッと解決する方法はないらしい...。

 

結局OpenConnectに戻ってくる

他のアプリを探してみてたピンとくるものがなく、全く気は進まないがOpenConnectの野良APKを拾ってきてインストールすることに...。

azure_oc0031.png

こちらもサーバーアドレスにDNS名(FQDN)をセットして接続。ユーザIDとパスワードを入力すればいいところまで同じだが

azure_oc0032.png

こちらはパスワードを保存するオプションがある!いいね!

接続自体はAnyConnectと同様に問題なし。これで胸を張って現地協力員に提供できる。

 

ということで、

サーバー側は拍子抜けするぐらい簡単にセッティングができてしまった。先達の努力に感謝。

Androidクライアントについては、4年前の野良apkを使うのはかなり不安があるが、セキュリティ重視でAnyConnectを使う手もある、ということでお茶を濁しておくことにする。おそらくセキュリティ的にもID/PASSではなく認証鍵を使ってログインしろということなんだろうが、個人でチマチマ使う程度なのでこれで良しとする。

もっと良さげな方法やクライアントソフトがあればぜひコメントいただければ幸いだ。

 

現地協力員より中国からのアクセスも問題なく可能という報告があり、当初の目的も達成できた。

今後しばらく使ってみて接続の安定性や回線速度などを確認したい。Shadowsocksを上回るようなら置き換えることもやぶさかではない。

とはいえ念のため2系統は残しておきたいので、訪中の際は両方をオンにしてうまく使い分けていきたいと思う。

しばらくはテスト運用を続けてみることにする。また何か進展があれば更新する。

コメント(6)

三四郎 返信

中国在住の者です。
私もここ2ヶ月ほどOpenConnectを愛用しています。
これまでWebArenaやConohaやAWSなど色々サーバーを試してきましたが、AmazonのLightsailをアメリカ西海岸に立てるのが一番速い&簡単な気がします。
失礼ですが、参考までにAzureで運用されている理由を教えていただけるでしょうか?

三四郎からtakeruへの返信 返信

お返事ありがとうございます。
なるほど、ある意味の無料枠があるゆえに使ってらっしゃるんですね。
大手クラウドの多くが通信量に対して課金するので、takeruさんのような場合を除いてあまりVPNには向いていない感じですよね・・・

リージョンの件ですが、シリコンバレー近辺>アメリカの他の地域>日本 の順に回線が速い気がします。(AWS、Lightsail、Vultrでの体感)
完全に推測ですが、中国からの海底ケーブルが日本とよりアメリカとのほうが帯域が広いのだと思います。
あとLightsailの良いところは、Web画面からサーバーの終了&起動をするとIPアドレスが変化してくれるところです。
何となく2日前後でIPアドレスでの規制が入るので、その場合はこの方法で回避しています。
IPアドレスを変えるためにスナップショットを取る必要が無いので本当に楽です!

ところで、使ったことは無いのですがUCSSというVPN業者はKDDIの専用線プランもあるので、日本にあるサーバーとの通信も高速でかつ規制されにくいようです。
(専用線を使っていないプランは今回規制されたみたいですが・・・)
将来もしOpenConnectも規制されたらUCSSの専用線プラン一択になってしまうかも知れません。
宣伝みたいになってしまいましたが、回し者ではありません(笑)

三四郎 返信

度々失礼します。
以前に「回線速度はアメリカ西海岸が一番」と書いてしまいましたが、今日はなぜか非常に遅かったので、試しに日本にLightsailを立ててみたところ、昨日までの西海岸と同等の速度が出ました。
原因は不明ですが、タイミングや政策などによって速度が変化するのかも知れません。
断定的なことを書いて誤解を与えてしまい、申し訳ありませんでした!

コメントする