前回までの7MC.ORG――――(海外ドラマ風
中国訪問時にインターネット規制をかいくぐるためAzureに導入したShadowsocksサーバー。これまで何度かお世話になっていて、前回訪中時にもMi SIMと組み合わせることで最高のコスパを発揮してくれた。
しばらく現地の協力員にも貸していたのだが、今日になって「使えなくなった」と連絡が。
コンピューター、プログラミング、モバイル、ガジェットなどエレクトロニクス分野を中心にネタを提供するウェブサイトです。最近は中国ネタにも注力中。かつてはHWD15向けのAndroidアプリ「HWD15 Status Notifier」を作ってたりしていました。
前回までの7MC.ORG――――(海外ドラマ風
中国訪問時にインターネット規制をかいくぐるためAzureに導入したShadowsocksサーバー。これまで何度かお世話になっていて、前回訪中時にもMi SIMと組み合わせることで最高のコスパを発揮してくれた。
しばらく現地の協力員にも貸していたのだが、今日になって「使えなくなった」と連絡が。
中国のネット規制情報でいつもお世話になっているかべネコVPNさんによると、中国の全国サイバーセキュリティ推進週間ということで制限が厳しくなっているようだ。
しかし毎度のことながら「IKEv2方式及びOpenConnect方式は,通常どおり中国から利用可能」とのこと。特にOpenConnect方式は「最も(現時点で)規制に強い」と紹介されている事もあって以前から気になっていた。
(かべネコVPNさんには毎度規制情報でお世話になっておきながらサービスを利用したことはないのが心苦しいが、自鯖をやめた際にはぜひ加入したいと思っている。迅速な情報共有と確かなサービスは非常に大きな安心材料だ。)
OpenConnectサーバーの立て方自体は分かりやすい記事が結構見つかる(例1、例2)のだが、Azureに(できるだけ簡単に)インストールする方法はなかなか見つからない。
唯一見つかったのがこのページ。
DockerコンテナではなくUbuntu Linux VMを使うようだが、ほぼ一気通貫でインストールできるらしい。これは有能。
以下、上記サイトの説明に従い順に作業していく。
まずはAzure上にUbuntuのVMを作成する。
基本的に公式のドキュメントを読みながら進めればよい(一部違いあり)。
Azure Portalの左上「+リソースの追加」から「Ubuntu Server 18.04 LTS」を選択。
そしてリソースグループ名やら何やらを入力する。リージョンは東日本を指定(西日本は対応してなかった)。
注意が必要なのは「サイズ」という項目。初期値はやたら強マシンに設定されているが、よく見たら一ヶ月一万円からということで即却下。
参考元サイトには「通常のワークロードなら最小構成でいい」と書いてあったが、念の為に上から2つ目の「B1ms」を選択。
次の「管理者アカウント」はパスワードにしておき任意のものを設定する。
「受信ポートの規則」はHTTP、HTTPS、SSHも許可すること(画像ではSSHを忘れており後で手動設定した)
2つの設定が完了したら「確認および作成」をクリック。
しばらくしたら「検証に成功しました」と表示され、スペック等の確認画面が表示される。
今回選んだB1msは1時間3円、1ヶ月つけっぱなしで2千円ちょい。使用頻度を考えたらやっぱり最小構成でも良かったかな、と思いつつ、今回はお試しということでそのまま続行。「作成」ボタンをクリックして暫く待つと仮想マシンが作成される。
Azureにはドメイン名を設定できる機能があるらしい。
先ほど作成した仮想マシンを選択して右下の「DNS名 : 構成」をクリック。
ここで「DNS名ラベル」に好きな文字列を入力すると、そのままDNS設定ができる。
やや長いが、わざわざDynamicDNSを登録する手間を考えたら便利なものだ。
これでIPアドレスが変わっても接続情報を変更する必要がなくなったため、ドメイン名で金盾ブロックされない限りずっとこのままで運用できそうだ。
上の「受信ポートの規則」でHTTP、HTTPS、SSHを選択していれば不要のため割愛。
TeraTerm等のSSH接続ツールを使い先程の仮想マシンに接続する。私はcmdでそのまま叩いた。
ssh <USERNAME>@<SERVER_NAME>.cloudapp.azure.com
繋がらない場合はポートがちゃんと開けられているか再確認。ポート22、TCPが空いていないとSSH接続できない。
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。
一度<FQDN>
を間違えて<USERNAME>@<SERVER_NAME>.cloudapp.azure.com
で指定してしまいエラーを吐いたが、指定し直して再度実行すればうまく行った。
これでサーバー側のセッティングは完了。
Windows用のクライアントはあるようだが今回はスルーしてAndroidに絞ることに。
GoogleでよくヒットするOpenConnectというアプリは残念ながらPlayストアから消えていた。
(画像引用元:AndroidのOpenConnect接続 ■セカイVPN■)
仕方がないのでCiscoさん公式のAnyConnectをインストール。
サーバーアドレス欄にステップ1で設定したDNS名(FQDN)を設定したら接続。ユーザ名/パスワードを入力すれば接続成功。
Android側のVPNアクセス通知が表示され、Androidのステータスバーに鍵マークが追加された。
データの送受信は問題なく、IP Location Finderでもアクセス元が東京になっていることを確認。アッサリ成功だ。
ただ気になることが。このアプリ、接続する度にユーザ名・パスワードを要求してくる。
正直毎回パスワードを入力するのは面倒臭すぎるのだが、アプリ側で保存するなどのサクッと解決する方法はないらしい...。
他のアプリを探してみてたピンとくるものがなく、全く気は進まないがOpenConnectの野良APKを拾ってきてインストールすることに...。
こちらもサーバーアドレスにDNS名(FQDN)をセットして接続。ユーザIDとパスワードを入力すればいいところまで同じだが
こちらはパスワードを保存するオプションがある!いいね!
接続自体はAnyConnectと同様に問題なし。これで胸を張って現地協力員に提供できる。
サーバー側は拍子抜けするぐらい簡単にセッティングができてしまった。先達の努力に感謝。
Androidクライアントについては、4年前の野良apkを使うのはかなり不安があるが、セキュリティ重視でAnyConnectを使う手もある、ということでお茶を濁しておくことにする。おそらくセキュリティ的にもID/PASSではなく認証鍵を使ってログインしろということなんだろうが、個人でチマチマ使う程度なのでこれで良しとする。
もっと良さげな方法やクライアントソフトがあればぜひコメントいただければ幸いだ。
現地協力員より中国からのアクセスも問題なく可能という報告があり、当初の目的も達成できた。
今後しばらく使ってみて接続の安定性や回線速度などを確認したい。Shadowsocksを上回るようなら置き換えることもやぶさかではない。
とはいえ念のため2系統は残しておきたいので、訪中の際は両方をオンにしてうまく使い分けていきたいと思う。
しばらくはテスト運用を続けてみることにする。また何か進展があれば更新する。
三四郎 返信
中国在住の者です。
私もここ2ヶ月ほどOpenConnectを愛用しています。
これまでWebArenaやConohaやAWSなど色々サーバーを試してきましたが、AmazonのLightsailをアメリカ西海岸に立てるのが一番速い&簡単な気がします。
失礼ですが、参考までにAzureで運用されている理由を教えていただけるでしょうか?
takeru 返信
はじめまして。OpenConnectいい感じですよね。
ご質問の件、自分でVPN鯖を建てるならコスト的にもAmazon Lightsailが最強ですよね。
実は私の場合はレアケースで、仕事上Microsoftとの契約で毎月1万円分のAzureクレジットを貰っており、それを活用するために敢えてAzureを使っているのです(なので1万円まではコスト度外視でザルに使っていますw)
ちなみに、Amazon Lightsailには日本のリージョンもあったような気がしますが、アメリカ西海岸のほうが良いのでしょうか。将来Azure契約が切れたらLightsailに移行しようと思っており、後学のためご教示いただければ嬉しいです。
三四郎からtakeruへの返信 返信
お返事ありがとうございます。
なるほど、ある意味の無料枠があるゆえに使ってらっしゃるんですね。
大手クラウドの多くが通信量に対して課金するので、takeruさんのような場合を除いてあまりVPNには向いていない感じですよね・・・
リージョンの件ですが、シリコンバレー近辺>アメリカの他の地域>日本 の順に回線が速い気がします。(AWS、Lightsail、Vultrでの体感)
完全に推測ですが、中国からの海底ケーブルが日本とよりアメリカとのほうが帯域が広いのだと思います。
あとLightsailの良いところは、Web画面からサーバーの終了&起動をするとIPアドレスが変化してくれるところです。
何となく2日前後でIPアドレスでの規制が入るので、その場合はこの方法で回避しています。
IPアドレスを変えるためにスナップショットを取る必要が無いので本当に楽です!
ところで、使ったことは無いのですがUCSSというVPN業者はKDDIの専用線プランもあるので、日本にあるサーバーとの通信も高速でかつ規制されにくいようです。
(専用線を使っていないプランは今回規制されたみたいですが・・・)
将来もしOpenConnectも規制されたらUCSSの専用線プラン一択になってしまうかも知れません。
宣伝みたいになってしまいましたが、回し者ではありません(笑)
takeruから三四郎への返信 返信
そうなんです…正直AzureはVPNには向いていないので記事にするか迷ったのですが、逆に他に試されてる方がいないのでいい人柱になるかなと思った次第で(笑)
Lightsailのリージョンの件、回線速度に有意差があるなら西海岸一択ですね!Azureでも何も考えず日本リージョンで立てちゃいましたが、ちゃんとリージョンも考慮した方が良さそうですね…勉強になります。
UCSSの件も初耳でした。勉強になります。
Shadowsocksの規制の早さを考えるとOpenConnectも決して安心できないでしょうから、いざと言う時の頼みの綱は欲しいですよね(在住の方は特に)。
中国VPNについてまだまだ知識も経験も足りておらず日々手探りですが、いただいた助言を参考にしながら色々チャレンジしてみたいと思います。ありがとうございます。
三四郎 返信
度々失礼します。
以前に「回線速度はアメリカ西海岸が一番」と書いてしまいましたが、今日はなぜか非常に遅かったので、試しに日本にLightsailを立ててみたところ、昨日までの西海岸と同等の速度が出ました。
原因は不明ですが、タイミングや政策などによって速度が変化するのかも知れません。
断定的なことを書いて誤解を与えてしまい、申し訳ありませんでした!
takeru 返信
おお、そうでしたか。
国慶節があって規制がかなり厳しくなっているでしょうから状況も流動的なんでしょうね。
地域によって、また時期によって速度が違うことが分かれば、状況に応じて地域を切り替えながら最適な回線を探すことで快適なネット環境を整えることができそうです!
いつもご丁寧にありがとうございます。とても助かります。