OpenVPN&セキュリティ情報
2014-11-10
シングルボードPC VPNパフォーマンス対決
OpenVPNはLinuxをはじめとした幅広いプラットフォームで動作実績があるのが特徴の一つです。今回は、最近の電子工作ブームでも話題のシングルボードPC 3機種をOpenVPNサーバーとしてセットアップし、OpenVPNのVPNパフォーマンスを測定してみましょう。
[追記(2015/6/2)] こちらに、Raspberry Pi 2を含めた結果をまとめました。
Raspberry Pi B+
泣く子も黙る、最近注目を浴びているシングルボードPCで、国内でも広く知られた機種です。もともとは教育用途での活用を想定して開発が進められてきましたが、その低価格と応用性の広さを強みに、電子工作などの分野で使用されてきています。今回は、今年6月から出荷開始されたRaspberry Pi B+を使って測定しています。テスト環境のOSとしては、Raspberry Piでは標準的なRaspbianを使用しています。このOSはDebianベースなので、OpenVPNはAPTを使ってインストールできます。
Raspberry Pi B+は国内でも¥4,000程度で購入できます。この低価格はやはり魅力ですね。
pcDuino 3
Arduino互換の入出力コネクタを備えたシングルボードPCです。OSとしてLinux(Debian)だけでなく、Androidも使用できることが特徴です。SoCとしてAllwinner A20を搭載。CPUコアはARM Cortex A7 ディアルコア(1GHz)です。このボードもRaspberry PIと同様、HDMIポートやUSBポートを備えており、小型PCとしても利用できます。
pcDuinoではOSとしてUbuntuを使用できますので、APTを使ったOpenVPNのインストールが可能です。OSのインストールは、こちらで公開されているカーネルとOSをSDカードを使ってインストールします。
国内では¥8,000程度で購入できます。
PCEngines APU
他の2機種とは別カテゴリーのプロダクトで、ネットワークアプライアンスのプラットフォームが想定されたボードです。
製造元であるPCEnginesは以前からこのカテゴリーの製品を販売しており、IPPBXであるAsteriskを組み込んだアプライアンスやFAXサーバー、セキュリティ機器などに広く使用されたALIXが有名です。このAPUは、その後継として製品化されたボードです。ALIXと同様、このAPUもあくまでもアプライアンス用途を前提としており、ディスプレイやキーボードなどを直接接続することはできないので、厳密な意味でシングルボードPCとは呼べませんが、BSDやLinuxなどのOSを入れたSDカードを使ってブートすることができます。
CPUとしてはAMD T40E デュアルコア(1GHz)を搭載しています。ネットワークアプライアンスでの用途を想定し、ギガビット対応のEthernetポートを3つ備えており、アプライアンスサーバーとしてだけではなく、ルータやファイアウォールなどでの使用も可能です。
今回は4GBのメモリを搭載したapu1c4にvoyage Linuxをインストールして計測しました。voyage LinuxもDebianベースのため、OpenVPNのインストールにAPTが使用できます。
公式サイトのオンラインショップでは $130 程度で、国内では ¥20,000 程度で購入できます。
サイズ比較
この3つを並べると、このような大きさになります。
最も小さいのがRaspberry Pi、次にpcDuinoですが、この両者のサイズの違いはそれほど大きくありません。これらと比べるとAPUはだいぶ大きめで、CDジャケットよりも少し大きいぐらいのサイズです。こうやって並べてみると、Raspberry Piの小ささが際立ちますね。
ネットワークスループット
各ボードでiperfをサーバーとして起動し、ギガビット対応のスイッチングハブだけを介したクライアントPC(Windows 7)がiperfクライアントとして接続します。
このような結果になりました。ギガビット対応のAPUが930Mbps程度のスループットを出しています。Raspberry PIとpcDuinoはいずれも100Baseのインターフェイスなので、95Mbps程度の値になっています。
Raspberry PI | pcDuino | APU | |
---|---|---|---|
No.1 | 94.9 | 94.8 | 935.0 |
No.2 | 94.7 | 94.9 | 935.0 |
No.3 | 94.8 | 94.9 | 931.0 |
No.4 | 94.9 | 94.9 | 930.0 |
No.5 | 94.9 | 94.9 | 931.0 |
No.6 | 94.8 | 94.9 | 931.0 |
平均 | 94.8 | 94.9 | 932.7 |
このような結果になりました。ギガビット対応のAPUが930Mbps程度のスループットを出しています。Raspberry PIとpcDuinoはいずれも100Baseのインターフェイスなので、95Mbps程度の値になっています。
OpenVPNスループット
次に今回の目的であるOpenVPNを使用した場合のスループットを計測してみましょう。ネットワーク構成は直接接続時と同様ですが、各ボードでOpenVPNサーバーを起動し、クライアントPCからOpenVPNを使って接続した上で、VPNアドレスに対してiperfを実行します。
なお、以下のような条件で測定しました。
- 各ボードの標準的なOSを使用し、標準のパッケージマネージャ(今回はすべてAPT)でOpenVPNをインストール
- サーバー設定ファイルはすべてのボードで同一のものを使用
- クライアント設定ファイルは同一のものを使用し、接続先アドレスだけを変更して使用
- MTUの調整などのチューンナップはなし
- AES-NIなどのOpenSSLアクセラレータは使用しない
Raspberry PI | pcDuino | APU | |
---|---|---|---|
No.1 | 12.8 | 37.9 | 63.8 |
No.2 | 12.8 | 44.8 | 57.4 |
No.3 | 12.9 | 40.1 | 63.0 |
No.4 | 13.0 | 42.7 | 53.3 |
No.5 | 13.0 | 43.8 | 56.7 |
No.6 | 12.9 | 47.7 | 58.5 |
平均 | 12.9 | 42.8 | 58.8 |
まとめ
OpenVPNのスループットは、Raspberry Pi < pcDuino < APUという結果になりました。OpenVPNのようなソフトウェアVPNの場合、暗号化や署名処理などのパフォーマンスはCPUのスペックに大きく依存するため、CPUのパフォーマンスにほぼ比例します。
ギガビットへの対応も含め、ネットワークアプライアンスへの利用をメインターゲットとしているAPUのパフォーマンスはやはり頭ひとつ抜けていますが、Raspberry PiとpcDuinoのスループットの差が意外に大きいのも興味深い点です。VPNパフォーマンス上ではpcDuinoがなかなか善戦していると言えるかもしれません。
VPNサーバーとして利用する場合で、社内LANへのルーティングなどで柔軟なネットワーク構成を行いたい場合は、ギガビット対応+複数LANポートのAPUはかなり強力な選択肢になりそうです。
あまりトラフィックが多くなく、高いスループットが要求されないちょっとしたVPNサーバーとして、また拠点間接続時のサテライト側のVPNクライアントとしてなどの用途などでは、低価格+低消費電力のシングルボードPCは魅力です。これらのシングルボードPCを活用したVPN構築も十分に検討候補になると言えるでしょう。
[追記(2015/6/2)] こちらに、Raspberry Pi 2を含めた結果をまとめました。
Profile
- 山崎 太郎 (Taro Yamazaki)
- プラムシステムズ株式会社所属。 主にVPN(OpenVPN)やセキュリティ関連技術、Webアプリケーションを手がけています。
Page Views
Popular Posts
-
「VPNっていろいろあるけど、OpenVPNのメリットって何?」 という疑問は多くの方が持たれますよね。この点は公式サイトなどにもいろいろ書かれているのですが、実際に使ってきたユーザー側としてメリットと思う部分をまとめてみました。
-
現在ダウンロードできるOpenVPNでは、今まで認証局の構築で使用していたeasy-rsaが含まれなくなっています。 OpenVPN.netのダウンロードページ にも Note that easy-rsa is no longer bundled with OpenVPN...
-
Jan Just Keijser氏の記事「 Optimizing performance on gigabit networks 」については こちら でも概要を取り上げましたが、記事全体にいろいろなヒントが含まれていますので、全文の日本語訳を掲載しています。意訳している部分も...
-
OpenVPNでは、接続してきたクライアントのVPNアドレスは動的に割り振られます(その際に割り振られる際のアドレス範囲はOpenVPNサーバー側設定ファイルに基づきます)。特定のVPNクライアントに特定のVPNアドレスを割り振りたい場合、OpenVPNでは以下の2つの方法で設定...
-
では、いよいよiPhone構成ユーティリティでVoDの設定をしてみましょう。あ、 前の記事 での準備はきちんとやっておいてくださいね!
-
前回 は2つのワンタイムパスワードの生成方法について取り上げました。今回はいよいよ実際の生成アルゴリズムを取り上げましょう。TOTPをベースに説明します(ただ、前回も解説したように、基本的なロジックはTOTPとHOTPで同じです)。 参考としてpythonのコードも併記してみま...
-
現時点においてはマニュアルやHowToにも記載されていない(ChangeLogにちょっとだけ出てきます)あまり知られていない機能なのですが、「設定ファイルで鍵ファイルや証明書ファイルのパスを記載する」という通常の方法とは別に、「鍵ファイルや証明書ファイル内のデータをそのまま設定フ...
-
OpenVPNはLinuxをはじめとした幅広いプラットフォームで動作実績があるのが特徴の一つです。 今回は、最近の電子工作ブームでも話題のシングルボードPC 3機種をOpenVPNサーバーとしてセットアップし、OpenVPNのVPNパフォーマンスを測定してみましょう。 ...
-
前回 はワンタイムパスワードの基本的な仕組みについて説明しました。サーバー側とクライアント側で、それぞれ共通のルールに基づいてパスワードを生成させる必要があることを取り上げましたが、今回は OATH が規定しているその生成ルールについて具体的に説明します。 ワンタ...
-
OpenVPNを使用している方ならよくご存知だと思いますが、通常OpenVPNでは証明書認証を使用します。証明書認証はID/パスワード認証に比較すると安全性が高いとされます(もちろん、秘密鍵の管理方法に大きく依存します)が、証明書認証の概念を理解しにくいユーザーが秘密鍵や証明...
© yamata::memo 2013 . Powered by Bootstrap , WebLyb