y2blog » IIJの仮想ルータアプライアンスSEIL/x86を試す(VPS編)

7

30

2017

IIJの仮想ルータアプライアンスSEIL/x86を試す(VPS編)

さくらインターネットのVPS上でSEIL/x86を稼働させてみた


前回に引き続き、IIJの仮想アプライアンス型ルータソフトウェア SEIL/x86 のインストールについて紹介することにする.SEIL/x86自体はルータソフトウェアなので基本的には様々な物理ハードウェア、仮想環境で動くように作られている.VMware、Hyper-V、KVM 環境用の仮想イメージが用意されているので動作させる仮想環境に合わせてインストールすれば良いので特に難しいことはない.


今回さくらインターネットのVPS上でSEIL/x86を動かす目的は、自前の IPv6/IPv4 ゲートウェイを構築したかったからだ.先の記事で IPv6(IPoE:DS-Lite)方式による高速インターネット接続環境の構築について紹介したが、インターネットマルチフィード社が提供する TransixサービスではIPv6/IPv4の変換がインターネットマルチフィード社で行われ、一つのグローバルIPv4アドレスに多数のユーザからのアクセスが紐付けられてしまう.同じグローバルIPアドレスの共有は困った問題を引き起こすので、できれば自分専用のグローバルIPv4アドレスを使いたいところだ.


IPv6/IPv4変換を行うルータが自分の管理下にあれば、IPv6/IPv4変換ルータを日本国内のみならず海外に置くことも可能だ.Apple TVなどのビデオコンテンツを観る際も、国外のサーバ上でIPv6/IPv4ゲートウェイを動かし、そこを経由させる事で各種コンテンツの国外アクセス制限を回避することも可能だ.インターリンク社のサービスでセカイVPNというサービスがあるが、同じような事が自分専用のサービスとして構築可能と言うことだ.


VPS環境での制約事項


IIJのSEILブログで、様々なSEIL/x86の事例が紹介されているので、どのような記事があるのか一度目を通しておいて欲しい.このブログの中に、『さくらのクラウドでSEIL/x86を動かす』という記事があり、さくらのクラウド環境でSEIL/x86をインストールする方法が紹介されている.


さくらのクラウドを用いれば簡単なのは分かっていても、さくらのVPSとクラウドではほぼ同じスペックの仮想マシンインスタンスでも数倍の値段の開きがある.仮想マシンインスタンス自体はKVMベースでほぼ共通の物だと思われるが、管理機能やオプションサービスなどで付加価値を付けたものと解釈すれば良いだろう.勿論、貧乏人の私は同じ性能であれば安い方を選択するのでVPSサービスという事になる.このブログも現在はさくらのVPSで動いているので、さくらのVPSの扱いには慣れている.


さくらのVPSに限らず、多くのVPSサービスはKVMベースの仮想システムを使っていると思われる.KVM環境の上でゲストOSを走らせ、その上でまたKVM環境を構築することも可能ではあるが、仮想環境の上にさらに仮想環境を構築するのは現実的では無いので、KVMイメージの利用は選択肢から外れる.また、VMWareもHyper-V環境も外部クラウド上に用意するのは費用的に観ても非現実的だ.


さて今回クラウドサービスではなく安価で手軽なVPSサービスを使うことで、SEIL/x86のインストールは一筋縄では行かなくなることを覚悟しなければならない.ブログ記事で紹介されているさくらのクラウドでは、物理マシン用のディスクイメージをクラウド管理コンソールを通じてアップロードして、それを対象となる仮想サーバインスタンスにサーバテンプレートとしてアタッチし、それをデプロイすれば済むのでとても簡単にSEIL/x86の構築が可能だ.


残念ながら、さくらのVPSにはユーザが自分用のサーバテンプレートを用意し、それをデプロイする機能は無い.有るのはさくらインターネットが予め用意したサーバテンプレートだけだ.勿論自分専用のISOイメージをアップロードしてそのISOイメージからブートさせOSをインストールることが可能なので、インストール用の専用カスタマイズISOイメージを作成すれば何とかなるかもしれない.今回はそんな大層な手間を掛けることは出来ないので、比較的楽な方法でVPS環境にSEIL/x86をインストール方法を紹介する.


先ずは、VPS上で物理サーバ用のディスクイメージ “bootdisk.img” をブートさせることができるかどうか試してみることにする.さくらのVPSでのISOアップロードはイメージファイルの拡張子が “.iso” でなければ認識してくれないので、とりあえず “bootdisk.img”ファイルの拡張子だけを変更してアップロードし、Fake ISOイメージからの起動起動を試みた.


VPS ISO Boot Failure
ディスクイメージ “bootdisk.img” の拡張子を “.iso” に変えてもブートさせることはできない

結果はご覧の通りで、このFake ISOイメージからは起動させることはできなかった.”bootdisk.img”はNetBSDの物理的な起動ディスクイメージでファイル形式は “UFS” だ.通常のISOブータブルディスクイメージではないのでこれをブートさせるのは困難だろう.


ddコマンドによる強制ディスク領域書き換え方法


“bootdisk.img” から起動させることができないのであれば、NetBSDのインストーラディスクイメージを使ってインストーラーを起動し、インストールユーティリティーに含まれているシェルを起動して、ddコマンドで”bootdisk.img”をディスク領域に直接書き込んでしまう方法を考えた.


残念ながらこの方法はまだ試行錯誤中で、上手く行ったり行かなかったりしてきちんとしたインストール手順が確立できていない.後日上手く行ったら具体的な手順を紹介することにする.


…という訳で今回はもう少し穏やかなSEIL/x86のインストール方法を紹介することにしよう.


NetBSDを通常インストールしてから、OS設定を変更してSEIL/x86のOSイメージを起動させる方法


さくらのVPSでのISOイメージディスクのアップロード方法やOSインストールの方法については今回は紹介しないので、分からない場合はさくらのホームページのマニュアルがあるのでそれを参考にすると良いだろう.
  ・ 『VPS ISOイメージインストール


SEIL/x86でベースとなるOSはNetBSDなので、とりあえず最新のNetBSD7系列のISOイメージをダウンロードしておく.今回は64bit版の “amd64” を選択した.このNetBSD7は初期起動環境の構築が目的なのでとりあえずNetBSDが起動すれば良い.


 ・“How to get NetBSD”

インストールする構成は “Minimal Install” で十分だ.とりあえずインストールが終わったら rootのパスワード設定などの最低限の設定を済ませておく.さくらのVPSのVNCコンソールはコピー&ペーストができなかったり、画面が80×24キャラクタしかないので、とりあえずsshでアクセスできるようにしておくとこの後の作業が楽だ.一旦仮想サーバをシャットダウンさせて、必要に応じてセカンド仮想NIC(eth1) を内部ネットワークに接続しておく.



Minimal Setup
再起動の前にrootパスワードやsshなどの最低限の設定を済ませておく

Assign the 2nd IF
仮想マシンをシャットダウンし、必要に応じて 2nd 仮想NICを設定しておく

この後、NetBSDを通常起動させ root アカウントでログインし、SEIL/x86を起動させるための設定を行うことになるが、その前に少し面倒な作業が必要だ.面倒な作業というのは、SEIL/x86のディスクイメージ “bootdisk.img” をUFS形式のディスクを取り扱える(読み込める)環境を用意し、ディスクイメージからルートパーティション配下の幾つかのファイルを救い出す作業が必要になる.


イメージファイルの中身を取り出す方法は色々とあるが、今回は前の記事『IIJの仮想ルータアプライアンスSEIL/x86を試す(APU2C4編)』で紹介した、Mac上のVMWare仮想環境にインストールしたNetBSD環境にディスクイメージをマウントして取り出した.



SD Card Contents
“boot”, “seilfirm.img” の2つが今回必要なファイル(”boot.cfg”はAPU2C4用の追加設定なので不要)

取り出した “boot”, “seilfirm.img” の2つのファイルを、VPS上のNetBSDに転送しておく.NetBSDのルートファイル直下には、OS起動を制御するファイル群が置かれている.”boot” がセカンダリブートローダーで “boot.cfg” ファイルに設定してあるメニュー項目に従ってNetBSDカーネルを起動している.


SEIL/x86では独自の”boot” とイメージファイル “seilfirm.img” の組みあわせで、組み込み用途の独自NetBSD系システムを稼働させているようだ.通常のNetBSDのブーティングを行う代わりに、SEIL/x86イメージファイルをメモリ上に展開して起動させるための独自セカンドブートローダ”boot”が必要だ.


これらのファイルを書き換えて通常のNetBSDではなく、SEIL/x86が直接起動するように変更する.


NetBSD の”/” 配下のファイル設定


NetBSD の”/” 配下に、 “boot” 、”boot.cfg” があるので、これらのファイルのバックアップコピーを取得してオリジナルファイルであることが分かるような名前に付け替えておく.


“boot” => “boot.org” 、”boot.cfg” => “boot.cfg.org”

予め転送してあったSEIL/x86の起動イメージ(”seilfirm.img”)と専用ブートローダ?(”boot”)を “/” 直下に配置する.”boot”はNetBSD起動用と SEIL/x86起動用共に同じ名前なので間違えないように注意して欲しい.この2つのファイルを配置したら、起動制御ファイルである “boot.cfg” の中身を書き換える.



“boot.cfg” ファイルの設定では様々なパラメータを設定出来るが、今回はSEIL/x86を強制的に起動させるので、NetBSD自体は起動できなくしている.工夫すれば NetBSDとSEIL/x86 をブートメニューで切り替える事も可能かもしれない.この辺の仕組みは勉強不足のため、詳しい設定の仕方については勘弁して欲しい.




“boot.cfg” ファイルの中身次の様に書き換える


先頭に SEIL/x86 起動用の項目を追加し、”timeout” の秒数を少し長めに設定しておく



起動直後に起動メニューが10秒ほど表示されるので、NetBSDなどもメニュー切り替えで起動できそうな気もするが、”boot” ファイルを置き換えてしまっているので、NetBSDはまともに起動しないだろう.




SEIL/x86 boot sequence
SEIL/x86の初期起動画面

SEIL/x86 on Sakura VPS
SEIL/x86がさくらのVPS上で稼働した

無事SEIL/x86がさくらのVPS上で稼働するようになったが、SEIL/x86が使えるようになるまでにはまだ色々と設定しなくてはならない.先ずは、SEIL/x86のインタフェース名とVPSの仮想NICのMACアドレスを確認して “lan0″/”lan1″が仮想NIC “eth0″/”eth1” のどちらと結びついているのか確認しておく.この時点では “lan0″側には仮のIPアドレス 192.168.0.1 が割り当てられているので変更が必要だ.



Check IF Names
SEIL/x86のインタフェース名とMACアドレスの組みあわせを確認する( #show status interface )

check the NIC's MAC address
仮想NIC側のMACアドレスは管理コンソールで確認する

“lan0”, “lan1” のIPアドレス設定が終わったら、デフォルトルートやDNSなどの設定を行い、SEIL/x86がインターネットや内部ネットワークと通信可能であることを確認する.問題がなければsshの有効化とtelnetの無効化を行い、adminパスワードの設定などの基本設定を行う.


SEIL/x86は起動キーと機能キーという2つのキーファイルを設定しないと殆ど何も出来ないので、この2つのキーは必ず設定しておかなければならない.機能キーの取得は有料(1ライセンス 800円)なので、予め購入して用意して置く必要がある.機能キーが設定されていないと、苦労して設定したコンフィグ情報がルータの再起動と共に消えてしまうので、けちらずに購入しておこう.


Local Search

Calendar

August 2017
S M T W T F S
« Jul    
 12345
6789101112
13141516171819
20212223242526
2728293031  
  • Blogroll

  • Meta