仮想プライベートネットワーク(VPN)サービスは、インターネットサービスプロバイダーや政府の監視といった詮索好きなものからウェブトラフィックを保護し、プライバシーを守る優れた方法です。しかし、VPNサービスの問題点の一つは、VPNプロバイダーがアクセスしたサイトを監視するといった不正行為を行っていないことを暗黙的に信頼しなければならないことです。
[さらに読む: 2018年のベストVPNサービス]
そのため、プライバシーを特に重視する方には、サードパーティ製のVPNは適していません。代替案としては、セキュリティ企業Trail of BitsのAlgoなどのプロジェクトを利用して、自分で管理するプライベート仮想サーバー上に独自のVPNを作成することが挙げられます。
基本的な考え方は、自分でVPNを管理すれば不正行為の可能性が低くなるということです。使用するソフトウェアを開発している人々を信頼する必要はありますが、VPNプロバイダーと比較すると、そうした人々があなたのサーバーに監視ツールをこっそりと侵入する動機は少ないと言えるでしょう。すべてのVPNサービスプロバイダーがあなたのデータを狙っているわけではありませんが、その可能性は常に存在します。
このチュートリアルで使用しているプロジェクトであるAlgoについては、より深く知りたい方のためにすべてのコードがGitHubで公開されています(ただし、技術的な知識は必要です)。このチュートリアルを完了すると、IKEv2プロトコルを使用したVPNサービスを自分で制御できるようになります。
独自の VPN サービスを実行することの欠点は、Netflix の VPN 禁止を回避するなど、通常の VPN の一部の機能が利用できなくなることです。
もう一つの問題は、独自のサーバーでVPNを運用する場合、高いレベルのオンライン匿名性は期待できないことです。オンラインプライバシーは確保できますが、匿名性は完全には確保できません。サーバーとそのIPアドレスはあなたの本当の身元と結び付けられるため、あなたを探している当局にとって、あなたの身元を特定するのは比較的容易です。したがって、政府から身を隠す必要がある場合や、著作権侵害などの違法行為を行っている場合は、このチュートリアルを使用して独自のVPNを運用しないでください。
Algo は、Web トラフィックを覗き見から守るための手段としてのみ使用してください。それが Algo で実際にできることのすべてです。
Algo とは何ですか?

セキュリティ会社 Trail of Bits が Algo を開発しました。
Algoは、VPNサーバーのセットアップを自動化するコマンドラインスクリプトのセットです。Amazon EC2やDigitalOceanといった有名な仮想サーバープロバイダーと連携できます。このチュートリアルでは、非常に使いやすく、月額5ドルのDigitalOceanを使用します。年間60ドルは、商用VPNサービスにかかる費用とほぼ同じです。
アルゴリズムの前提条件
Algoを使うには、いくつか必要なものがあります。まず、Windows 10マシンでBash for Ubuntu on Windowsが動作している必要があります。ここではその手順を説明する時間がありませんが、WindowsでBashを設定する方法についてはチュートリアルをご用意していますので、そちらで手順をご確認いただけます。
Windows 7をお使いの場合は、Windowsで動作するBashのバージョンであるCygwinを使用するのが最適です。Cygwinは、様々なコンポーネントのインストール方法が少し分かりにくい場合があります。そのため、Windows 10の使用をお勧めします。
Bash が起動したら、いよいよ使い始めましょう。コマンドラインを使ったことがない方もご安心ください。プロセスの各ステップを丁寧に解説し、入力するコマンドとその意味を解説します。大変そうに思えるかもしれませんが、実際はそうではありません。経験豊富なユーザーであれば、Algo で構築したサーバーを 20 分以内に起動して実行できます。その時間のほとんどは、Algo の自動処理が完了するまでの待ち時間です。

「wget」プログラムを使用して、Algo をコンピューターにダウンロードします。
Algoとその他のツールをインストールする
まず、Algoをダウンロードして使えるように準備しましょう。bashターミナルに以下を入力してくださいwget https://github.com/trailofbits/algo/archive/master.zip
。
Wget はインターネットからファイルをダウンロードするために使用されるプログラムであり、URL は Algo ファイルを含む ZIP ファイルのアドレスです。
さて、Algoを解凍する必要があります。解凍するには unzip master.zip
完了したら と入力するとls
、コマンドラインのホームディレクトリにあるすべてのディレクトリ(フォルダ)とファイルが一覧表示されます。 という名前のディレクトリがあるはずですalgo-master
。そのディレクトリに移動するには と入力してくださいcd algo-master
。これは「algo-master にディレクトリを変更する」という意味です。
Algo を使用する前に、このフォルダ内にいくつかのコマンドラインツールをインストールする必要があります。Algo の GitHub ページではこれらを一度にインストールすることを推奨していますが、ここでは一つずつインストールしていきます。
まず、次のコマンドを入力しますsudo apt-get update && sudo apt-get install
。sudo は管理者権限を呼び出すもので、Linux コマンドラインで作業する際に最初に使用する一般的なコマンドです。apt-get は、コマンドライン環境にパッケージ(プログラム)をインストールするプログラムです。&& 記号は、その前のコマンドが正常に完了した場合、その記号の後のコマンドを実行するように Bash に指示します。
update コマンドは、コマンドライン環境で利用可能なパッケージのリストを更新し、古いパッケージをマークします。その後、install コマンドが新しいソフトウェアを実際にマシンにインストールします。

Algo では、コマンドライン経由でいくつかの Python ツールをインストールする必要があります。
次に、Pythonツールをいくつかインストールします。Pythonは多くの開発者が使用する人気のスクリプト言語です。コマンドラインに各行を入力し、Enterキーを押して、実行が完了したら次の行を入力してください。
sudo apt-get install build-essential -y
sudo apt-get install libssl-dev -y
sudo apt-get install libffi-dev -y
sudo apt-get install python-dev -y
sudo apt-get install python-pip -y
sudo apt-get install python-setuptools -y
sudo apt-get install python-virtualenv -y
この方法は非常に細かい作業ですが、何か問題が発生した場合のトラブルシューティングが最終的に簡単になります。一般ユーザーにとって最も役立つのは、python-pipです。pipは、Pythonパッケージをマシンに簡単にインストールできる特別なツールです。Python版apt-getのようなものです。PythonやPythonで書かれたコマンドラインツールを試してみることがあれば、pipはきっと使い慣れたツールになるでしょう。
各行の末尾の -y は「yes」を意味し、これを含めると、コンピューターがソフトウェアを 本当にインストールするかどうかを尋ねるたびに入力する必要がなくなります。
ここまでの作業が完了したら、Algoに必要な追加機能をいくつかインストールする必要があります。コマンドラインに以下のコマンドを入力または貼り付けてください。
python -m virtualenv env && source env/bin/activate && python -m pip install -U pip && python -m pip install -r requirements.txt
。
これは、pip を使用して Algo に必要な一連の依存関係をインストールします。
DigitalOceanの準備
次は、楽しい部分、DigitalOcean アカウントの設定です。
すでに DigitalOcean アカウントをお持ちの場合は、このセクションをスキップできます。ただし、これまでに API キーを生成したことがない場合は、読み続けてその方法を学んでください。
DigitalOcean の Web サイトにアクセスしてサインアップします。サーバーを実行するには、支払いの詳細を追加する必要があります。
サインアップが完了したら、Algoがサーバー(DigitalOceanの用語では「ドロップレット」)のセットアップを行えるように、APIキーを生成する必要があります。APIキーは、Algoがユーザーとしてログインし、アカウントに変更を加えるために必要な、文字と数字の長い文字列です。
DigitalOcean の API ページに移動し、「新しいトークンの生成」をクリックします。


ポップアップウィンドウでトークン名を入力します。「スコープの選択」で「読み取り」と「書き込み」にチェックが入っていることを確認し、 「トークンを生成」をクリックします。表示される文字列をコピーして、後で使用できるようにどこかに保存してください。このページを離れるとキーは消え、再度コピーすることはできません。

アルゴリズムを実行する
さて、Algo を動かすにはコマンドラインに戻りましょう。まあ、ほぼ完了です。最後にもう一つ設定が必要です。nano config.cfg
コマンドラインに入力してください。すると、Algo のメイン設定ファイルが Nano という非常に使いやすいテキストエディタで開きます。Nano を使うには、矢印キーでファイル内を移動し、キーボードで通常通り入力します。

ここにVPNユーザー名を追加してください。お好きな名前を選んでください。
「users:」の下に表示されている名前を消し、VPNを使用するユーザーの名前をそれぞれ前にダッシュを付けてリストアップします。また、名前ごとに1行ずつ入力してください。私の設定ファイルは上記の例です。終了するには、Ctrl + Oを押して変更を保存し、Ctrl + X を押して終了します。
ついに、いよいよ本番です。サーバーの設定を始めましょう。algo-masterフォルダにいることを確認してください。そうでないなら、cd algo-master
もう一度入力してください。

次に、Algo のセットアップ プロセスを開始します。
次に、 ./algo
Algoのセットアッププロセスを実行するために入力します。名前の前のピリオドとスラッシュは、コンピューターにBashのスクリプトを実行するように指示します。
ここからは、Algoからいくつか質問されます。最初の質問では、どのサーバープロバイダーを使っているかと尋ねられ、選択肢のリストが表示されます。この記事の執筆時点でリストの一番上に表示されていたDigitalOceanを選択したいので、「1」と入力してEnterキーを押します。
ここで、先ほど保存したDigitalOcean APIトークンの入力を求められます。カーソルがある場所を右クリックして、トークンをターミナルに貼り付けてください。セキュリティ上の理由から、貼り付けたAPIキーは表示されません。正しく機能していることを確認する必要があります。もう一度Enterキーを押してください。
次に、VPNサーバーに名前を付けます。好きな名前を付けてください。この例では「TestAlgo」と名付け、Enterキーを押します。

VPN を設置するデータ センターの場所を選択します。
次に、サーバーの場所を選択します。最寄りの場所を選択するか、必要に応じて他の国の場所を選択してください。ただし、VPNサーバーから遠いほどVPN接続が遅くなることに注意してください。この例では、ニューヨークのサーバーのいずれかを選択し、Enterキーを押します。
次はmacOS/iOS特有の3つの質問です。Appleデバイスをお持ちでない限り、最初の2つの質問には「はい」と答えて選択肢を広げておくことをお勧めします。
次に、Appleデバイスが使用する、VPN接続を必要としない信頼できるWi-Fiネットワークの名前を入力します。各ネットワークの間にはカンマを入れますが、項目間にスペースを入れないでください。入力するネットワークがない場合は、Enterキーを押してください。
VPN使用中に広告をブロックしたい場合(オンライントラッキングを減らすには良いアイデアです)、入力してEnterキーy
を押します。セキュリティ上の理由から、次の2つの質問にも答えてください。これにより 、各ユーザーが独自のSSHトンネルを持ち、サーバーにセキュリティ強化を適用できるようになります。y

質問はたくさんありますが、ほとんどの場合、答えは「はい」の「y」です。
ここで、Windows 10 または Linux PC をサポートするかどうかを尋ねられます。サポートする場合は「はい」を選択します。次に、証明機関のキーを保持するかどうかを尋ねられます。将来ユーザーを追加する場合は「」と入力してくださいy
。このキーは最終段階で受け取ります。
これで完了です。すべてがうまくいけば、15分以内にVPNサーバーが利用可能になります。うまくいかない場合は、別のサーバーロケーションでもう一度お試しください。Algoは、DigitalOceanのデータセンターによっては時々問題が発生することが分かりました。

Algo の成功メッセージ。
Algo が完了すると、上図のような成功メッセージが表示されます。p12 キーと SSH キーのパスワード、CA キーのパスワード(保持する場合)、そしてシェルアクセス情報を必ずコピーしておいてください。これらの情報は、パスワードマネージャーなどの安全な場所に保存してください。
PCをセットアップする
大変な部分は終わりました。しかし、PCの新しいVPN接続を設定するための最後のコマンドラインタスクがまだ残っています。接続時には、デスクトッププログラムではなく、Windowsに内蔵されたVPNクライアントを使用します。幸いなことに、2つのファイルをコピーして、PowerShellに1行のコマンドを与えるだけで済みます。
ファイルをコピーするには、Algoフォルダにいることを確認してください。そうでない場合は、次のコマンドを入力してください。
cd algo-master/configs/
それ以外の場合は次のように入力します。
cd configs
入力して、ls
そこにリストされているファイルを確認してください。XX.XXX.XXX.XX や XXX.XXX.XX.XXX などの形式の IP アドレスを使ったフォルダ名が 1 つ表示されるはずです。そのフォルダに移動する必要があります。私の場合、IP アドレスは 104.131.36.207 だったので、 と入力しますcd 104.131.36.207
。あなたの場合は、「cd」と入力して、表示されている IP アドレスを使用してください。
それでは、BashのホームフォルダからWindowsのユーザーフォルダのルートにファイルをコピーしましょう。これを行うには、先ほど設定ファイルに入力したユーザー名を覚えておく必要があります。私の場合は「Ian」なので、コピーするファイルは「windows_Ian.ps1」と「Ian.p12」という名前です。これらのファイルをコピーするには、以下のコマンドを入力します。
cp windows_Ian.ps1 Ian.p12 /mnt/c/Users/[your Windows username]/
さて、ここで何が起こっているのでしょうか?まず、cp ビットは「コピー」を意味し、次にコピーするファイルの名前、そして最後にファイルのコピー先の場所が続きます。
Windowsマシン上のLinuxユーザースペースと通常のWindowsスペースの間でファイルをコピーするには /mnt/c/
、 を使用する必要があります。これは、LinuxにファイルをプライマリWindowsパーティションにコピーするよう指示します。Dドライブがある場合は、 にコピーする必要があります/mnt/d/
。
ファイルがコピーされたので、Bash for Windows を閉じます。

PowerShell を使用して Windows に Algo VPN 資格情報をインストールします。
次に、デスクトップでWindowsキーをタップし、 Cortanaの検索バーに「Powershell」と入力します。一番上のオプション(Windows PowerShell)を選択します。ウィンドウが開いたら、入力してEnterキーcd $home
を押します。
さて、最後のステップです。ユーザーフォルダからPowerShellに以下を入力してください。
powershell -ExecutionPolicy ByPass -File windows_Ian.ps1 Add
私の ps1 ファイルの名前をあなたのものに置き換えることを忘れないでください。
試してみる
これで完了です!設定は完了です。VPN接続をテストしてみましょう。まず、Googleに「私のIPアドレスは?」と入力し、検索結果ページの上部に表示される番号をメモしてください。
Windows 10のタスクバー右下にあるWi-Fiまたはイーサネットアイコンをタップすると、「Algo」という名前の新しい接続とIPアドレスが表示されます。それをクリックすると、数秒以内に接続完了のメッセージが表示されます。
最後に、接続が完了していることを確認しましょう。ipleak.net にアクセスしてください。しばらく待つと、IP アドレスが変更されているはずです。上級者の方は、DNSleaktest.com にアクセスし、「Extended test」を選択してDNS サーバーも変更されているか確認することもできます。
おめでとうございます!これで完了です。サードパーティのサービスに頼ることなく、ご自身で管理できるVPN接続ができました。AndroidまたはiOSデバイスでもVPN接続を利用したい場合は、GithubにあるAlgoのチュートリアルドキュメントで手順をご確認ください。