(O+P)ut

(O+P)ut

(O+P)ut = Out + Put >> OutPut

【入門】Nutanix とは?

f:id:mtiit:20181114220205j:plain

はじめに

Hyper Converged Infrastructure (以下, HIC) の中で高いシェアを誇るNutanix
読み方はニュータニックスです。

そんなNutanixについてできるだけ分かりやすく理解するための記事を書いてみました。

ハイパーコンバージド*1とは?
Nutanixの特徴は?

というところをサクッと掴んでいただければと思います。

Nutanix とは?

まず初めに、以下の画像をご覧ください。

f:id:mtiit:20181114093251p:plain
https://www.nicpartners.co.jp/report/40193/ より抜粋

これを見れば、Nutanixが対象とするエリアが把握できます。

要は、従来のサーバーとストレージをSANスイッチで接続する構成を1つに統合して提供しています。

Nutanix以外にもHICは多々あります。例えばDell EMCも有名ですが、
それらの実態は主にx86サーバとローカルストレージを統合した基盤システムです。

ただし、IBM Hyperconverged Systems powered by Nutanixといったx86ではなくPOWERプロセッサを搭載したハイエンドなものもあるようです。



さて、HICの何が嬉しいのでしょうか。

HICのメリットとデメリット

メリット

オールインワンかつスケールアウト型なので導入/運用の作業量削減がメリットとして挙げられます。

既にハイパーバイザがインストールされた形で出荷されるので、
オンプレミスで構築する際の導入からサービスインまでのスパンが短くなります。

増強もイーサネットで接続することで対応可能、
もちろんサーバの内蔵ストレージは全サーバからアクセスできる仮想的な共有ストレージとして利用ができます。

また、細かい点ですがサーバとSANスイッチ、SANスイッチとストレージの接続サポートに頭を悩ませる必要がなくなります。
接続性を確認しながら各機器のファームウェアレベルを上げるといった保守作業もなくなります。


デメリット

これは仮想化のデメリットとも言えますが、従来の3層構造よりもパフォーマンスは落ちる場合があります。
SANスイッチが担っていた機能をサーバ側で実現する構造からも、高い性能を出すにはCPUやサーバ内蔵のハードディスクやメモリのスペックはより必要となります。

また、ストレージのみの増強といった際も新たなサーバ筐体が必要になってしまう点もデメリットとして挙げられます。
ちなみにNutanixの場合は、ストレージを重視したモデルは一応あるようです。少しくらいの容量拡張であればディスクを差し替えてより大きなものにすることも可能です。


Nutanixの特徴

Nutanixですが、2Uサイズの筐体の中にサーバとストレージが格納され、それぞれは10Gイーサネットスイッチで接続されている構成で、
以下がネットで公開されていたハイエンド用の仕様です。

CPU メモリ HDD SDD NIC
10core x 2 (2.4GHz) 256GB 1600GB 12TB 10G SFP+

ここからはNutanixの特徴を3つのキーワードで説明します。

専用のハイパーバイザであるAHV
専用の構成管理ツールであるPrism
そして分散ストレージ機能を受け持つControllerVMです。


AHV

AHVとはAcropolis*2 hypervisorの略で、
Nutanixに標準でついているKVMベースのハイパーバイザとなります。
ESXiやHyper-Vを利用することも可能ですが、AHVはNutanix製品に無償でバンドルされています。

WindowsLinuxなど一通りのOSはサポートされており、仮想マシンからストレージへのアクセスパフォーマンスが強みのようです。

Prism

こちらはNutanixの管理ツールです。システムのリソース状況の確認やハイパーバイザのアップグレードなどに利用します。
ESXiに対するvCenterが近いかもしれません。

ControllerVM

どこの資料を見ても、Nutanixの特長にはストレージ機能が記載されています。
細かい機構はそちらに譲るとして、そのIO要求を司るControllerVMというサーバ機能について説明します。

Nutanixでは、IO要求は全ControllerVMが処理を行います
f:id:mtiit:20181114225950p:plain
https://next.nutanix.com/blog-40/nutanix-enterprise-cloud-flexible-deployment-options-for-iaas-10614 より画像を抜粋

このCVMは各筐体で1台稼働し、その筐体に接続しているSSD/HDDに対してIOの処理を行ってくれます。
アクセス頻度の高いデータを高速なSSDに自動的に配置することで高速なデータ書き込みや読み込みを行う模様です。

冗長性はRAIDではなく、データを複数箇所に書き込むことで保ちます。(もちろん別の筐体のストレージに)



終わりに

Nutanixの基礎的な事項とキーワードとなる用語について説明しました。

HCIは今後も熱い分野なのでウォッチしていきたいと思います。

一方で、物理ディスクに比べてデータが分散してしまうことによる障害からのリカバリー等も気になります。
こういったカタログにはない知見なんかも、調査して情報をアップデートしていけたらと思います。

以上、適宜指摘等もお待ちしています。

*1:ハイパーがつくつかないは「ストレージがサーバー内蔵」か否からしいです。ストレージが独立したコンポーネントで単に出荷された時に接続されているものを元々コンバージドシステムと呼んでいたのだとか。

*2:Acropolis : 古代ギリシアの城砦

【感想】ボヘミアン・ラプソディが良かった話

はじめに

本記事では、ボヘミアン・ラプソディの感想をつらつらと書いてます。

伝記映画なのでネタバレというのもない気もしますが、
まっさらな状態で見たいという方は絶対見ない方が良いですね。


以下、あらすじです。
f:id:mtiit:20181114175803j:plain

ボヘミアン・ラプソディ』(Bohemian Rhapsody)は、2018年のイギリス・アメリカ合衆国の伝記映画。イギリスのロックバンド「クイーン」のフレディ・マーキュリーに焦点を当て、バンドの結成から1985年のライヴエイド・パフォーマンスまでを描いた伝記ミュージカル映画である。(あらすじより抜粋)


では、以後感想なので閲覧はご注意ください。



感想

ツカミ

本映画は20世紀フォックス配給で上映されています。
f:id:mtiit:20181114172631j:plain

こちらのオープニングが少し「クイーン」寄りにアレンジが加えられています。
こういう演出は、とても好きです。

そして、主人公フレディ・マーキュリーとメンバーとの出会いでフレディの「出っ歯」についてのやりとりがあります。
史実かどうかは分かりませんが、とても印象深いシーンで一気に映画に引き込まれました。

曲が素敵 ところどころ泣ける

少し中だるみもありましたが、全体として何気ないシーンも後ろに音楽が流れていることで集中力が維持できた気がします。

この音楽がテーマにあることを「ミュージカル映画」といっているんですかね?少なくともいきなり道端の人が歌い出したりはしません。

あとは、指輪を渡すシーンも、とても良かったです。隣に座っていたおじさまは声を押し殺して泣いてました。

個人的には、ツアーでのバス移動シーンでカメラ視点がバスを突き破るシーンが最高でした。
見た人なら分かってくれると思います。

ラスト20分

映画のラストは、アフリカ難民救済を目的に1985年に行われたチャリティーコンサート「ライヴ・エイド」での演奏シーンです。
約20分間、当時の「クイーン」を再現したライブ映像でした。セリフがないまま進むスラムダンクの最後みたいな美しさを感じました。


聴き入りながらも何故か涙が流れてきたのは、やはりこの20分に至るまでの過程で両親や恋人やメンバーとの関わりを見てきたからなんだろうなーと。

最後の20分だけをいきなり見ても、涙は流れないと思います。


所感

良かったです。

史実の詳細は知らないので「実際ここはこうだった」なんて言われても分からないですが、映像作品として2時間飽きることなく見れました。

実は、私はアーティストのライブというものに行ったことがないのですが、
迫力ある映像と音響を映画館で目の当たりにしてライブに実際に行った気分になれました。
今後も特に行く予定がないので、とても貴重な体験ができました。感謝。


エンドロールもクイーンの曲で締まるからか、途中で立ち上がって帰る人もいませんでした。
一人で行ったものの、他の観客と一体感が少し感じれて嬉しかったです(笑)


今回の映画とは関係ないですが、
フレディは亡くなる直前の2年間はスイスのモントルーに住んでいたそうで、
そこにはフレディ・マーキュリーの像があり観光スポットになっているようです。
いつか今回の映画を思い出しながら行ってみたいな、と思います。

以上です。

Text2MindMapを使ってみた

はじめに

頭の整理を行うための枝分かれ図を、可視化する思考ツールにマインドマップがあります。

マインドマップはトニー・ブザン(Tony Buzan)が提唱した思考・発想法の一つ。

描き方は、表現したい概念の中心となるキーワードやイメージを中央に置き、そこから放射状にキーワードやイメージを広げ、つなげていく。
Wikipediaより抜粋)

これを

で提供してくれるサービスが「Text2MaindMap」です。

Text2MindMap



使ってみた

f:id:mtiit:20181112105113p:plain
こちらがホーム画面です。

既に左側赤枠にサンプルが入っており、そちらを元に右側にマインドマップが作成されています。
構造は改行とタブで記述できます。

入力例

囲碁
	二人	零和	有限	確定	完全	情報ゲーム

例えば、囲碁二人零和有限確定完全情報ゲームなので上のように入力してみました。

f:id:mtiit:20181112102744p:plain

こんな感じです。
行の中でタブを入れてもそれはただのタブとして認識されます。

囲碁
	二人	
	零和	
	有限	
	確定	
	完全	
	情報ゲーム

それぞれに改行を入れると、以下のようにばらけてくれます。

f:id:mtiit:20181112102825p:plain



属性を書いたりするのもいいですが、分類の可視化にも効果を発揮しそうです。

ゲーム
	プレイヤーの人数
		一人
		二人
		多人数	
	利害衝突度合い
		ゼロサム
		プラスサム
		マイナスサム	
	意思決定タイミング
		交互進行
		同時進行
	情報量
		情報対称
		情報非対照

上記は、ゲームの簡単な分類です。

f:id:mtiit:20181112105310p:plain

見やすいですね。


所感

ブラウザで完結しているのでとても便利です。

ただし、インタラクティブにテキストを編集していると結構重いです。
なので、エディタにまずは整理して書いてコピペでザッと可視化する使い方が良いと思いました。

巨大な情報が一気にマップ化されるさまは圧巻ですので、興味があれば一度試してみることをおススメします。

以上です。

【サルでも分かる】X11入門

はじめに

かけるじゅういち?

という方でも理解できるようX11に関する知識をざっくり整理しました。


X11とは

まず、意味と読み方ですが

意味

X Window System バージョン11のこと

読み方

通称「エックスイレブン」たまに「エックスじゅういち」
X windows System」「X」と誰かが言ってる場合も「X11」を指している場合あり


...X11を理解するには、X Windows Systemを理解すればよさそう。



X WIndow Systemとは

UNIX系を操作する場合は一般的にテキストベースのインターフェースで操作を行います。
これをCUIと言います。

一方、WindowsMacでは、グラフィカルなウィンドウをマウスの移動やクリックで操作します。
これをGUIと言います。


X Window System"X"というウィンドウシステム、という名の通りGUIを提供するためのシステムです。

UNIX系では標準的に採用されており、デスクトップ環境のGNOMEKDEX Window Systemで動作しています。


構成を確認するためのX Window Systemの全体像ですが、以下が分かりやすいです。
f:id:mtiit:20181107213700p:plain
https://www.kenschool.jp/blog/?p=3349 より図を抜粋



上の図ではサーバとクライアントが同一筐体のように見えますが、よくある構成はサーバが手元のPCでクライアントがリモートのサーバというものです。



次は、図の中にある

  • Xサーバ
  • Xクライアント
  • Xプロトコロル

というX Window Systemを語る上で重要な用語について説明します。

Xサーバ

ユーザが操作したキーボードやマウスの動作をXクライアントへ送信し、またXクライアントから送られてきた画面描画情報を解釈してディスブレイに表示するプログラム
主にローカルで実行される

Xクライアント

Xサーバから受信した動作を元にデータを処理し、結果を画面描画情報としてX サーバーへ送信するプログラム
主にリモートで実行される

Xプロトコル

X Window Systemの基本プロトコルでXサーバとXクライアントのやりとりを規定している
要求/応答/エラー/イベントと4種類のパケットがある。例を挙げれば、要求はクライアントからサーバに画面の描画を依頼、イベントはサーバからクライアントに操作の発生を知らせるなど
ボタンやメニューなどを規定していないため、クライアント(アプリケーション側)で規定している



サーバとクライアント、どっちがどっちかややこしい。



X Windows Systemクライアント・サーバモデルではありますが、操作しているユーザではなくサーバ上で動作しているアプリ視点のアーキテクチャであるため画面を描画する機能側がサーバという風になっているようです。
確かに、「サーバはクライアントからの要求を待つ」というモデルから考えれば納得できます。

X Windows Systemの中でのX11

やっとX11に関してです。

歴史的な経緯は、1984年にマサチューセッツ工科大学(MIT)の中でX1が開発され、その後も続々と改良を重ねて1987年にX11がリリースされました。
ちなみに、XはOSに依存しないウインドウシステムであり、多言語化に対応した初めてのソフトウェアでもあります。
UNIXGUI操作を提供したことから、UNIXの普及に大きく貢献したとも言われています。

そんなX11の現在ですが、MITを離れてX.Orgという非営利団体が主に開発・メンテナンスを進めており、アップデートはリリースとして管理されています。
2018年現在は「X11R7」(バージョン11、リリース7)です。

また、Linuxの設定ファイルにある/etc/X11/xorg.confも、この団体名からきています。


使用例

X Window Systemが必要となる場面だと、例えばOracle製品のインストールなどがあります。
というのも、Oracleでは専用のインストーラであるOracle Universal Installerを起動するには、X Window Systemが利用できる環境が必要だからです。

同じような理由で、IBM製品でも IBM Installation ManagerでもX Windows SystemがあればGUIベースで操作が可能です。


そのような場面では、リモートはUNIX系のサーバでローカルがWIndowsのパソコンとなる事が多いです。



X Windows Systemを使用するには、サーバ上にX11がインストールされている事 そして パソコン上にXサーバシステムがインストールされている事 が必要です。

Xサーバシステムはフリーソフトや商用ソフト含めて多々ありますが、大体の流れはSSHからのX11 forwardingだと思います。

TeratermなどのSSHクライアントにはX11転送機能がついているので、SSHを通してXアプリケーションを利用できます。

ssh -X

なんて引数もあるので興味がある方はぜひ調べてみてください。


大事な点ですがXプロトコル自体は暗号化がなされていないので、SSH接続を介してX Window Systemアプリケーションを利用するのが良いとされています。


X WIndow Systemを使う際のポイントは、サーバ側でDISPLAY変数を設定で、こちらにはローカルにいるパソコンのIPアドレスを入力します。

$ export DISPLAY=XX.XX.XX.XX:0.0 

これらの準備が完了すれば、例えばデフォルトでOSに付属しているのX11プログラム、例えばxclockコマンドを実行すれば、パソコンに以下のような窓が出現します。

f:id:mtiit:20181107231534j:plain

xclockはアナログ時計のフォーマットで時刻を表示してくれるXアプリなんだね


最後に

必要に迫られないとなかなか触れることのないシステムだとは思いますが、構成や用語などを頭に入れておくと良いかと思います。

以上です。

コマンドのみでWASをアンインストールする

f:id:mtiit:20180806144643j:plain

コマンドベースでWASをアンインストール

タイトルの通りです。以下の記事で入れたWASをアンインストールをした際のメモとなります。
mti.hatenablog.com


全体として、応答ファイルを用いてWASをアンインストールを行い、その後にインストールマネージャーをアンインストール、という流れです。

環境

動作結果等を記載する環境ですが、UNIXとなります。

# uname
AIX
# oslevel
7.1.0.0

インストールされているパッケージは以下のようにimclコマンドで確認可能です。

# /opt/IBM/InstallationManager/eclipse/tools/imcl listInstalledPackaged
com.ibm.cic.agent_XXXX
com.ibm.java.jdk.XXXX
com.ibm.websphere.BASE.XXXX
com.ibm.java.jdk.XXXX
com.ibm.websphere.IHS.XXXX

WAS/IHSのアンインストール

インストールで用いた応答ファイルを加工しました。


install modify='false'タグの一行上にuninstallAllを、/installタグの一行下に/uninstallAllとして実行するとIIM以外は自動的にアンインストールされました

# ./imcl input "アンインストール用の応答ファイルのパス" -log "ログファイルを作成するパス"
/usr/IBM/WebSphere/AppServer ディレクトリから com.ibm.java.jdk.XXXX がアンインストールされました。
/usr/IBM/WebSphere/AppServer ディレクトリから com.ibm.websphere.BASE.XXXX がアンインストールされました。
/usr/IBM/HTTPServer ディレクトリから com.ibm.java.jdk.XXXX がアンインストールされました。
/usr/IBM/HTTPServer ディレクトリから com.ibm.websphere.IHS.XXXX がアンインストールされました。
警告: "アンインストール用の応答ファイルのパス"で行X に問題が発生しました: 予期しないエレメントがあります。


警告ですが、"install"であったり"offering"のタグが不要というエラーだと思います。ただ、パッケージはアンインストールできた模様です。

# /opt/IBM/InstallationManager/eclipse/tools/imcl listInstalledPackaged
com.ibm.cic.agent_XXXX

インストールマネージャーのパッケージ以外すべて消えました。個別に消したい方はご注意ください。


IIMのアンインストール

こちらですが、/var/ibm/InstallationManager/uninstall配下にあるuninstallcを実行すれば、問題なく消えました。

# /var/ibm/InstallationManager/uninstall/uninstallc
om.ibm.cic.agent_XXXX がアンインストールされました。


以上です。インストールよりは簡単でした。

【R言語】getSymbolsで取得した日経平均終値をplotする

はじめに

Yahoo Finance から株価データをとってきてくれるgetSymbolsを使って、こちらをPlotするまでの備忘録です。

動作環境
OS Windows 10.0
Rstudio Ver Version 1.0.153

準備

quantmodのインストール

quantmodパッケージが必要ですので、library読み込みが失敗した場合はインストールから始める必要があります。

> library(quantmod)
Error in library(quantmod) : 
   ‘quantmod’ という名前のパッケージはありません 

以下のコマンドでインストールを行います。

> install.packages("quantmod")
also installing the dependencies ‘xts’, ‘zoo’, ‘TTR’, ‘curl’

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/xts_0.11-1.zip'
Content type 'application/zip' length 755153 bytes (737 KB)
downloaded 737 KB

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/zoo_1.8-4.zip'
Content type 'application/zip' length 920127 bytes (898 KB)
downloaded 898 KB

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/TTR_0.23-4.zip'
Content type 'application/zip' length 443610 bytes (433 KB)
downloaded 433 KB

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/curl_3.2.zip'
Content type 'application/zip' length 2965604 bytes (2.8 MB)
downloaded 2.8 MB

trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.4/quantmod_0.4-13.zip'
Content type 'application/zip' length 491999 bytes (480 KB)
downloaded 480 KB

package ‘xts’ successfully unpacked and MD5 sums checked
package ‘zoo’ successfully unpacked and MD5 sums checked
package ‘TTR’ successfully unpacked and MD5 sums checked
package ‘curl’ successfully unpacked and MD5 sums checked
package ‘quantmod’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
	C:\Users\XXXX\AppData\Local\Temp\Rtmp8ej77i\downloaded_packages


依存していた4パッケージも併せてインストールされました。

簡単に説明すると、

  • xtsパッケージは、eXtensible Time Seriesの略で、時系列データ用のデータフレームです。
  • zooパッケージは、時系列を扱うクラス及び関数を提供するライブラリです。
  • TTRパッケージは、Technical Trading Rulesの略でトレーディングに関するを計算を行う関数を提供するライブラリです。
  • curlパッケージはLinuxのコマンドにもあります、ファイルのダウンロードを実施するライブラリです。

ライブラリ読み込み

getSymbolsを使用するために改めて読み込みを行います。

> library(quantmod)
 要求されたパッケージ xts をロード中です 
 要求されたパッケージ zoo をロード中です 

 次のパッケージを付け加えます: ‘zoo’ 

 以下のオブジェクトは ‘package:base’ からマスクされています: 

     as.Date, as.Date.numeric 

 要求されたパッケージ TTR をロード中です 
Version 0.4-0 included new data defaults. See ?getSymbols.
Learn from a quantmod author: https://www.datacamp.com/courses/importing-and-managing-financial-data-in-r
Warning messages:
1:  パッケージ ‘quantmod’ はバージョン 3.4.4 の R の下で造られました  
2:  パッケージ ‘xts’ はバージョン 3.4.4 の R の下で造られました  
3:  パッケージ ‘zoo’ はバージョン 3.4.4 の R の下で造られました  
4:  パッケージ ‘TTR’ はバージョン 3.4.4 の R の下で造られました  
> 

ちなみに「以下のオブジェクトは ‘package:XXXX’ からマスクされています」というのは、同名の関数のパスが変わったことを示していますが今回は特に気にしなくてよいです。
また、不要な場合はdetachを行ったりRを再起動すれば解消します。


実際にPlotを行う

getSymbols日経平均株価データを取得していきます。

> getSymbols
function (Symbols = NULL, env = parent.frame(), reload.Symbols = FALSE, 
    verbose = FALSE, warnings = TRUE, src = "yahoo", symbol.lookup = TRUE, 
    auto.assign = getOption("getSymbols.auto.assign", TRUE)


getSymbolsにて必要情報を取得しますが、ひとまずは以下でnikkeiにデータが格納されます。
最初の引数でINDEXNIKKEIを取得すべく、先頭が「N225」でひっかけます。

> nikkei <- getSymbols("^N225",src="yahoo",from="2017-01-01", to = "2018-11-4", auto.assign = FALSE)
Warning message:
^N225 contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them. 

構造と中身をちらっと見てみました。ちゃんと値が格納されています。

> class(nikkei)
[1] "xts" "zoo"
>
> head(nikkei)
           N225.Open N225.High N225.Low N225.Close N225.Volume N225.Adjusted
2017-01-04  19298.68  19594.16 19277.93   19594.16      163500      19594.16
2017-01-05  19602.10  19615.40 19473.28   19520.69      134500      19520.69
2017-01-06  19393.55  19472.37 19354.44   19454.33      119100      19454.33
2017-01-10  19414.83  19484.90 19255.35   19301.44      119100      19301.44
2017-01-11  19358.64  19402.17 19325.46   19364.67      119100      19364.67
2017-01-12  19300.19  19300.19 19069.02   19134.70      119100      19134.70


あとは、終値が入っている列を選択してPlotします。

> plot(nikkei[,4] , main = "N225-Close")

f:id:mtiit:20181104235948p:plain

以上です。かなり簡単なので別記事で応用してみたいと思います。

【サルでも分かる】OpenVPN入門

はじめに


OpenVPN?言われるがままにWindowsにインストールした事あるかも?


程度の知識でもOpenVPNについて理解できるよう、わかりやすい入門記事を書いてみました。


所要時間目安 : 10分


OpenVPNとは

OpenVPNは、オープンソースVPNソフトウェアです。

公式サイトでも、以下のように説明されています。

OpenVPN Technologies Inc.を中心とした開発者によってオープンソースで開発されている、VPNを構築するためのアプリケーションです。VPNを利用することにより、インターネット上に仮想的にネットワークを構築し、場所の離れた拠点間、またモバイル環境とオフィス内LANの間などを安全に接続することができます。(openvpn.jpより抜粋)

ここではOpenVPNの特徴を紹介する前に、入門記事らしくVPNの役割について見ていきます。


VPNの役割

そもそもですが、拠点Aと拠点Bを結ぶ際に接続性やセキュリティの観点で最も高いレベルにいるのが専用線です。新たに線を引き、通信事業者が管理しているエリアのみを通って拠点間通信を行います。

ただし、専用線というのはランニングコストや敷設費用は高くなってしまいます。

そんな中で、物理的には共有ネットワークを用いながらも、ソフトウェアの力で専用線に近いネットワークを構築するための技術が求められました。(実は技術からすれば似た概念が昔からあったのですが...)


それがVPNです。



ちなみに、VPNVirtual Private Networkの略です。


Virtual(仮想的な)Private Network(専用線)。そのままだ。



補足ですが、VPNを用いた通信は専用線を用いたそれと比べると通信速度の変動リスクセキュリティリスクのランクは落ちます。

また、VPNの通信網にインターネットを用いるか通信事業者のIP網を使うかなどでも変わってきます。
簡単に整理した表は以下になります。

専用線/IP網/インターネット
専用線 IP-VPN インターネットVPN
速度変動 帯域全てを占有 混雑時も一定の帯域が確保等 混雑時は帯域不足
セキュリティ 専用線のため高い クローズなネットワークを利用するため比較的高い 回線としては低いがVPNの暗号化によっては確保可能
コスト

こちらはおまけ程度で、理解いただければと思います。


OpenVPNとは

一般的なVPNについて見てきましたが、いよいよOpenVPNにフォーカスします。

改めて、OpenVPNGNU General Public LicenseというオープンソースSSL/TLSを用いたVPNソフトウェアです。


また新しい用語が2つでてきました。


一つ目のGNU General Public Licenseとは、GPLとも略される二次的著作物についてもオープンであることを求めるライセンスです。
つまり、GPLで提供されるプログラムを元にしたプログラムはGPLとなります。一方、例えばBSDライセンスであれば、ソースコードを複製・改変して作成したプログラムは、ソースコードを公開せずに頒布できます。

GPLは、配布の時にソースコードの公開が必須なんだね。



二つ目のSSL/TLSというのは、VPNを実現する手法です。
Secure Sockets Layer(SSL)/Transport Layer Security(TLS)というプロトコルを用いてVPNを実現します。

ネットサーフィンをしている時にURLが「https」から始まっている場合がありますが、それと同じ種類の暗号化通信ということもあり、馴染みが深いプロトコルです。

具体的には以下のようにパケットを付加し、トンネル化+暗号化を実現します。
f:id:mtiit:20181029194356j:plain

VPNっていっても結局はヘッダをつけてるだけなのか。


補足ですが、クライアント/サーバー型でVPNを行う場合には、手軽に利用できるSSL/TLS-VPNを使用するケースが一般的です。
何と比較して手軽かというとIPSec-VPNです。IPSec-VPNの話は割愛しますが、SSL/TLS-VPNと比較してパフォーマンスが高いというのも記憶の片隅に置いておくと良いかもしれません。


OpenVPNを実際に使用するにあたって

OpenVPNの特徴にクライアント側とサーバ側が同じプログラムで実行される点が挙げられます。設定ファイルで、クライアントかサーバかを設定します。

そのプログラムのインストールを行う際には
OpenSSLLZOが前提となっています。

OpenSSLとは、これまたオープンソースで開発されているソフトウェアで、実体はC言語で書かれている暗号化通信のプログラムです。

LZOとは、可逆データ圧縮アルゴリズムのライブラリです。これを用いることによりVPNの通信量削減を実現します。伸張速度の速さが特徴でいろんな場面で使われているアルゴリズムです。

OpenVPNのインストールが完了すれば、互いにクライアントとサーバで設定ファイル(client.conf/server.conf)を編集します。


イメージを掴んでいただくために、クライアント側の設定ファイルの一部を記載します。
以下のようなテキストファイルです。

client #クライアント側
dev tun #トンネルモード
remote 100.101.102.103 1194 #サーバ側のIPアドレス ポート番号
comp-lzo #LZO圧縮を有効に
...

そして、設定ファイルの次は認証のための鍵や証明書を配置してやる必要があります。
以下がそれぞれに配置するリストです。

サーバ側に必要な鍵/証明書

クライアント側に必要な鍵/証明書


ここでの味噌は、サーバ側はクライアント側の鍵であったりグローバルIPアドレスを管理していない点にあります。

そうすることで、クライアントが不特定多数となってもVPN機能を提供することができます。

クライアントに必要な証明書や鍵は、インストールする際に既に梱包されているケースが多いです。

Windowsにインストールしたフォルダの中に確かにいくつか鍵があった気がする!


まとめ

OpenVPNですが、SSL-VPNを使用するVPNソフトでは第一候補にあがるくらいにシェアも実績も高いです。

実際、パソコンだけでなくスマートフォンでも使用可能な身近な技術であるため今回は入門レベルの解説記事を書いてみました。理解の一助になれば幸いです。

以上、サルでも分かるOpenVPN概説でした。