[Network][Virtualization] IIJ SEIL/x86 Ayameに手を出す

SEIL/x86の新バージョンが出た。

知る人ぞ知るIIJのネットワークルーター、SEILシリーズ。その中でも有名なのは仮想版で激安販売されている「SEIL/x86 Fuji」という製品。今回その後継製品となる「SEIL/x86 Ayame」という製品がリリースされました。

今までのFujiはIIJのオンラインショップの一つであるLaIT(ライト)で販売されていましたが、今回Ayameは2つのEditionに分けて販売され、

  • Standard:個人用途にも使えるリーズナブルなもの
  • Enterprise:商用システム用途を想定した高性能版

と言う風になっています。違いとしては、Standardはシングルコア動作に制限される点、SR-IOVが使えない点など、制約があり、Enterpriseに関してはこれらの制約がすっかり取っ払われて、より大きなトラフィックにもめげないと言う特性があります。

とは言え、Standard版もVMXNET3のNICで10GbEリンクさせることが可能で、性能面でFujiを上回るのではないかと予想したり。ちなみにStandardが税抜き5,000円、Enterpriseは税抜き250,000円ぐらい・・・だったかな?かなーり値段としては上昇してます。

加えて、Standardはなんとまぁ、Amazonで販売されていると言うね・・・

てなわけで、早速買って試してみることにしました。今回、これまでFujiで対応してたIPv6コアルーター部分をそのままAyameに置き換えようと思います。

注文した。

そして注文した翌々日ぐらいにブツが来ました。

まさかの物納

メールベースでキーを貰えたFujiとは異なり、まさかの物納でした。この紙には、インストールに必要となるプロダクトキーが記録されています。

OVFテンプレートをゲットする

OVFテンプレートはSEIL/x86のサイトからダウンロードする形をとります。

KVM用のものとVMware用のもの、2種類が提供されているようです。私はこれをダウンロード・解凍した上で、VMware用イメージのOVFテンプレートをインポートしました。
1vCPU/1GB RAM/120MB VHD/1NIC構成のVMが誕生します。必要に応じてNICを追加してPowerOnすることでセットアップを開始することが出来ます。

インタフェースはge0,ge1,ge2・・・という感じのインタフェースになりました(Fujiだとlan0,lan1,lan2・・・)

初期セットアップの流れ

セットアップの流れとしては以下の通りです。

ログインID:admin/初期パスワードは無し->これを用いてまずはログイン。

プロダクトキーの入力を行います。プロダクトキーは送付されてきたパンフレットの中に記載されており、ハイフンは自動で入力されます。ライセンスキーが登録されると一度リブートを行います。
続いて起動すると、adminユーザのパスワード変更を求められます。
パスワード変更が完了すると、

<hostname># 
と言う形式でプロンプトが出ます。これで設定準備が完了となります。

コマンドラインの特性

コマンドラインの基本的な流れとしては以下の通りです。

  • パラメタの設定は「set文」を使用する
  • パラメータの取り消しは「delete文」を使用する
  • 設定パラメータはKey-Value形式で保存される

具体的には以下のような感じです。

■set文
値は以下のような形式で保存される
interface.ge0.ipv4.address: 192.168.100.25/24

設定するには、set文を入力して、定義を行う。
set interface ge0 ipv4 address 192.168.100.25/24

■delete文
値を削除したい場合は、setの代わりにdelete文を使用する
delete interface ge0 ipv4 address

要は、正式なパラメータはドットをデリミタとする設定項目と、コロンで挟んだ設定値の対応漬けで決まります。set文/delete文はデリミタを空白文字で区切る方式で記載をする形になります。

これを繰り返して設定を実装していく感じになっています。

Commitで確定

Fujiでは設定した時点でその設定が即時反映されていましたが、AyameではCommitコマンドを実行した段階で設定が確定します。

設定の保存は以下のコマンドで行います。

save-to flashrom

showコマンドも少し変わってる

showコマンドを実行する際ですが、通常は「 show <パラメータ> 」と言う形で記述することが多いんですが、Ayameは「 show status <パラメータ> 」という書き方をします。また、そのパラメータはKeyを指定する形になるので、パラメータ項目はドット区切り形式で指定する形になります。

show statusコマンドで後に続くパラメータ値を以下の通り列挙します。

KAEDE# show status
    admission-control                    interface.pppac[0-7]                 ospf6.interface.bridge[0-31]
    arp                                  interface.pppoe*                     ospf6.interface.detail
    bgp.ipv4.route                       interface.pppoe[0-7]                 ospf6.interface.ge[0-1]
    bgp.ipv4.summary                     interface.tunnel*                    ospf6.interface.ipsec[0-511]
    bgp.neighbor                         interface.tunnel[0-511]              ospf6.interface.tunnel[0-511]
    bgp.neighbor.password                interface.vlan*                      ospf6.interface.vlan[0-31]
    dhcp                                 interface.vlan[0-31]                 ospf6.neighbor
    dhcp.external                        ipsec                                ospf6.neighbor.detail
    dhcp6                                ipsec.anonymous                      ospf6.protocol
    dns-forwarder                        ipsec.security-policy                ospf6.route
    filter.hostname                      led                                  ospf6.route.detail
    filter.ipv4                          lldp                                 pppac
    filter.ipv4.keepalive                mac-address-table                    radius-server
    filter.ipv6                          macfilter                            radius-server.statistics
    filter.summary                       nat.ipv4                             resolver
    filter.table                         nat.ipv6                             rip.protocol
    floatlink                            nat.summary                          rip.route
    floatlink.interface                  ndp                                  ripng.protocol
    floatlink.interface.ipsec[0-511]     netflow                              ripng.route
    floatlink.interface.l2tp[0-255]      ntp                                  route.ipv4
    floatlink.interface.tunnel[0-511]    option                               route.ipv4.keepalive
    floatlink.summary                    ospf.database                        route.ipv6
    ike                                  ospf.database.detail                 route.ipv6.keepalive
    interface                            ospf.interface                       router-advertisement
    interface.bridge*                    ospf.interface.detail                sensor
    interface.bridge[0-31]               ospf.neighbor                        snmp
    interface.ge*                        ospf.neighbor.detail                 sshd
    interface.ge[0-1]                    ospf.route                           storage
    interface.ipsec*                     ospf.route.detail                    syslog
    interface.ipsec[0-511]               ospf6.database                       telnetd
    interface.l2tp*                      ospf6.database.detail                upnp
    interface.l2tp[0-255]                ospf6.interface                      vrrp
    interface.pppac*

面白いのは、ワイルドカードが指定できることではないかなーと思います。ワイルドカードを指定することによって全てのインタフェースや設定項目の表示をさせることが可能になります。

フィルタリング構文

フィルタリング設定ももちろん「set文/delete文」で設定をしていったりするわけですが、KeyValue形式で設定されるが故に少し面倒です。Fujiでは1行で定義できたフィルタリングルールですが、例として以下の通りになります。

set filter ipv6 800 direction  in
set filter ipv6 800 interface  ge1
set filter ipv6 800 action  block
set filter ipv6 800 logging  on
set filter ipv6 800 state  enable

↑個別にパラメータを設定する必要がある。
 順序を間違うと設定を拒否されることがあるので注意。
 direction->interface->action->その他って感じ

複数行で指定する形になります。また、設定項目間には依存関係があり、依存関係が満たされない場合、ケースによっては設定が受け付けられないケースもあります。

フィルタリングログの内容をFujiのそれと見比べましたが、こちらは細かい差異はあるものの、特に大きな違いまではなさそうです・・

【Fujiのログ】
Feb  9 14:37:28 kaede   
	filter.info    
	lan1 @0:0[OUTGOING] 
	p 
	fe80::250:56ff:fea7:af64 -> fe80::2c1:64ff:fed1:4962 
	PR ipv6-icmp type 136 code 0 len 64 40/24 OUT

【Ayameのログ】
Feb  9 19:56:41 192.168.100.25   
	system[-]: ipf.info 
	ge1 @2:9[ipv6.600-00000520] 
	p 
	2403:bd80:c102:221:9d4d:89a6:e4bb:c963,55868 -> 2600:1408:5c00:6::17c8:9347,80 
	PR tcp len 61 40/21 OUT

多分、ぱっと見た感じだと理解が難しいので

Fujiでゴリゴリやってた人は以下のようなツールで一度部分的な変換などを行ってみた方がわかりやすいんじゃないかと思います。

どういうKeyが存在しているかというのを、以下のサイトのドキュメントを参照しながら、理解を含めていくというのも重要かなと思います。

意外とSEILシリーズは色んな所でコンフィグ例が載っていたりするような代物で、知る人ぞ知るなのに広くこっそり出回ってるルーターなので、まずは触れてみて、おもしろそーだなーと感じられるものがあったらなぁと感じる次第です。

取り敢えず私の環境では無事リプレイスできたわけですが、コンフィグ変換ツールはかなり役に立ちました。

現状の負荷状況

AYAME# show system
SEIL/x86 Ayame Ver. 2.01 (Release)
SEIL/x86 Ayame BIOS Phoenix Technologies LTD Ver. 6.00 (20181212)

CPU      : Intel(R) Xeon(R) CPU E5-2420 0 @ 1.90GHz
DistID   : 

Host     : "AYAME"
Bootdev  : dk1

Date     : 2020/02/09 21:47:47 (JST)
Uptime   : 07:55 (since 2020/02/09 13:52:42)

Users    : 1 user
Loadavg  : 0.08 (1min) 0.08 (5min) 0.03 (15min)
CPU0stat : User 21.9%, Nice 0.0%, System 11.9%, Interrupt 0.3%, Idle 65.9%
Memory   : Total 1023.56MB, Used 496.12MB (48.47%), Avail 527.44MB (51.53%)