2015年2月22日日曜日

LXCとSoftEtherを利用してサーバー上にセキュアな作業システムを作る その2

今回はSoftEther用のLXCコンテナの作成方法についてメモします。

コンテナの作成とSoftEtherのインストール

まずコンテナを作成し、起動します。

sudo lxc-create -n コンテナ名 -t ubuntu
sudo lxc-start -n コンテナ名

その後、以下のコマンドをコンテナ内で実行することでSoftEtherがインストールされます。

sudo apt-add-repository ppa:dajhorn/softether -y
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install softether -y

なお、本コマンドでインストールされるSoftEtherは本家が配布しているdebパッケージではありません。本家からインストールする場合、makeから必要になります。 ※本debパッケージの配布元:https://launchpad.net/~paskal-07/+archive/ubuntu/softethervpn

また、lxc-wrapperをインストールしている場合は以下のコマンドでインストールできます。

sudo lxc-wrapper -c -n コンテナ名 -t softether-ubuntu

初期設定

作成したコンテナ上で下記を実行します。

sudo vpncmd /server localhost /CMD HubCreate lxcvpn /password:
sudo vpncmd /server localhost /CMD BridgeCreate lxcvpn /DEVICE:eth0
sudo vpncmd /server localhost /CMD HubDelete DEFAULT
sudo vpncmd /server localhost /CMD VpnAzureSetEnable yes
sudo vpncmd /server localhost /CMD Flush
sudo vpncmd /server localhost /CMD VpnAzureGetStatus

一番最後のコマンドでazureのサブドメインが表示されるので、SoftEther管理マネージャーからアクセスしてください。 なお、この状態ではパスワード等が設定されていないため、早めに設定変更してください。

設定のバックアップとリストア

設定のバックアップはSoftEtherの管理マネージャーから行えるので、そちらから行う方が楽でしょう。
リストアを行う場合、設定ファイルを上書きし、SoftEtherサービスを再起動してください。

sudo cp vpn_server.config /var/lib/softether/vpn_server.config
sudo service softether restart

LXCとSoftEtherを利用してサーバー上にセキュアな作業システムを作る その1

プログラム作成やシステム構築を行っていると、jenkinsなんかのツールが欲しくなってきますが、家のマシンで動かすと電源を落とせなくなりますし、クラウド上のサーバーで動かしてそのままインターネットでアクセスできる状態にするのもセキュリティ上、好ましくありません。

そこで、クラウド(今回は「さくらのVPS」を利用)上のサーバーにLXCをインストールした上で仮想マシン(正確にはコンテナ)にSoftEtherをインストールし、VPN接続することで比較的セキュアな環境を用意することにしました。

構成概要

まず、一番土台となっているlxc serverについては「さくらのVPS」の2コア・HDD100GBを利用しています。ここは、lxcが入っているだけで他は何も入っていません。
次に、lxc上で動いている「SoftEther」ですが、こちらはlxc上で動いているubuntuイメージのコンテナに、SoftEtherをインストールしたものです。
PCをVPNで接続すると、lxcのネットワークに接続され、DHCPでIPが割り振られます。また、lxc serverに直接VPN接続を行い、SoftEtherまでリダイレクトするとIPアドレス変更時等に設定変更が必要となるため、SoftEther側で用意されているAzureを経由する方式にしています。
なお、SoftEtherをホストに直接インストールする場合、lxc用に自動生成されるnicとは別にSoftEther用の仮想nicを用意しないとDHCPが正常に動作しません。
最後に自動化ツールのベースとして、jenkinsを用意し、バックアップを行わせています。

2015年2月7日土曜日

lxc-wrapper

最近、dockerの説明で「コンテナ型」とか「差分ディスク」と言うところにフォーカスされていることが多いんですが、それ自身はdockerのベースとなっているlxcでもできることで、dockerのコアではない、と個人的に思っています。ただ、lxcで差分ディスクを利用するのも結構面倒なので、ちょっとしたwrapperを作成しました。なお、ubuntu用なのでubuntu以外では動作しません。

概要説明

lxcでコンテナを作成すると、デフォルトでは「/var/lib/lxc/コンテナ名/rootfs」にシステム一式を保存します。
lxc-wrapperを利用すると、「/var/lib/lxc/images/イメージ名/rootfs」にシステム一式を保存し、「/var/lib/lxc/コンテナ名/diff」に差分を保存するコンテナを作成できます。
1つのイメージから複数コンテナ作成すれば、dockerの時と同様に、差分のみでコンテナを作成できるわけです。

なお、コンテナからイメージも作成することができますが、dockerとは異なり、差分の差分の差分の・・・と言うような構造は取らず、イメージにする時に全部コピーします。

インストール

以下の方法でインストールします。

git clone https://github.com/ccat/lxc-wrapper.git
cd lxc-wrapper
sudo sh ./install.sh

使い方

  • lxcテンプレートからイメージ作成
    sudo lxc-wrapper -m -t テンプレート名 -i イメージ名
    例:sudo lxc-wrapper -m -t ubuntu -i ubuntu_0001
  • コンテナからイメージ作成
    sudo lxc-wrapper -m -n コンテナ名 -i イメージ名
    例:sudo lxc-wrapper -m -n server1 -i server_0001
  • イメージからコンテナ作成
    sudo lxc-wrapper -c -n コンテナ名 -i イメージ名
    例:sudo lxc-wrapper -c -n server2 -i server_0001
  • なお、作成したコンテナは普通にlxcとして動作するため、lxc-start等で起動できます。

    2015年2月1日日曜日

    「売れる確信を持ってから作る」と言うこと 【Lean Startupの注意点】

    • 対象読者:Lean Startupについて調べている人
    • 概要:Lean Startupについて気づいた注意点を列挙しました

    本記事ではLean Startupの注意点をつらつらと記載しました。私自身が勉強中なので、増えたり減ったり修正したりしていくと思います。
    TOC

    Lean Startupの目標は「手元資金が尽きる前に新しい商売を立ち上げる」こと

    Lean Startupの目標は「手元資金が尽きる前に新しい商売を立ち上げる」こと。この前提がずれている場面ではあまり役に立たない。

    顧客が「お金を払ってでも入手したい」と思っていることを可能な限り確認してから生産を開始すること

    顧客が「お金を払ってでも入手したい」と思っていることを可能な限り確認してから生産を開始すること。Kickstarter等のクラウドファウンディングはその確認に最適。もし、クラウドファウンディングに出してもムダだと思えるなら、アイデアに問題があるのかもしれない。

    「誰に(Customer)」、「どんな価値を提供し(Value Proposition)」、「どう利益を得るか(Revenue)」の3点を重視すること

    ビジネスモデルキャンバスは考えの整理には良いが、全部を埋めることばかりに注力してもしょうがない。最低限、「誰に(Customer)」、「どんな価値を提供し(Value Proposition)」、「どう利益を得るか(Revenue)」の3点が考えられていれば良い。

    競合優位性が提供価値であると言うこと

    ビジネスモデルキャンバスには「競合」と言う概念は出てこないが、実際には「提供価値(Value Proposition)」は「競合」に大きく左右される。競合を知っている顧客に取って、「提供価値」は競合との差別化ポイントだけだからだ。そこに十分な魅力が無ければ競合からは移ってこない。

    競合優位性は模倣しにくい方が望ましいが、絶対条件ではないと言うこと

    競合との差別化ポイントが簡単に模倣できると、その差別化に価値があると判明した瞬間に模倣されてしまう。そのため、模倣しにく方が望ましいが、模倣を極端に恐れるのも馬鹿げている。 模倣を恐れるよりも、まずはニーズとのかい離を恐れるべきだ。

    顧客の話はよく見極めること

    顧客に話を聞くと、「こんな機能があったら欲しい」と言う意見が頻繁に出てくるが、その機能を実装するかはよく検討するべきだ。十中八九はそのような機能を実装しても結局買ってくれない。と、同時に十中一二は機能を追加すれば買ってくれる。

    Lean Startupが常に最善と言うわけではないと言うこと

    Lean Startupは設計や製造に時間がかかることを前提としている。設計や製造に時間がかかるから、先にニーズをとことん検証しよう、と言うわけだ。そのため、もし設計や製造が極端に短い時間で終わる(例えば1日とか)なら、考えるより先に作ってしまうと言う方式も成立する。

    利用する人とお金を払う人が同一とは限らないと言うこと

    実際に利用する人とお金を払う人が同一とは限らない。企業向けのシステムや子供向けのおもちゃ等はその最たる例だ。両方のニーズを満たして初めて製品が売れる。