津村彰氏によるコラム第13回Luaスクリプトで運用を簡略化しよう! – 第3回 外部インターフェースからスイッチを操作するヒント(津村彰)

1. はじめに

ヤマハ ルーターによるLuaスクリプト入門では、3回に分け、最終的にヤマハ ルーターからヤマハ スイッチ(SWX2200シリーズ)をスクリプトによりコントロールする事を目標に、Luaスクリプト実行機能を掘り下げてみたいと思います。

3回目は「外部インターフェースからのコントロール」です。ヤマハ ルーターでは、カスタムGUI(ユーザが作成したウェブUIでのコントロール)を実装しており、以下の2点の機能を使用することができます。

  • 内臓ウェブサーバによるコンテンツ配信
  • executeを用いた、クライアントからのコマンド実行

今回は既にRT Proにて公開されているサンプルをベースに、開発するために必要な要素を紐解きたいと思います。

【注意】
実運用中のルーターでのスクリプト実行は、通信障害などの障害となる可能性がある為、お止め下さい。検証用ルーターでの実行を推奨します。
本コラムに掲載のスクリプトを実行した結果について、一切の責任を負いかねます。
2. 対象となるサンプルプログラム

今回サンプルとして選んだものは、「PoE受電端末監視/自動再起動デモ  」です。

これは、ヤマハ ルーターおよびスイッチの機能を用いて、PoE(Power Over Ethernet/イーサケーブルを用いた電源供給)接続された機器をブラウザより監視し、自動もしくは手動でコマンドをexecuteインターフェースに対し発行し、機器の障害時に再起動を行う為のものです。

このサンプルで使用されている技術要素は、以下の通りです。

  • 基礎的なHTML・CSS・jQueryを用いたウェブ制作
  • JavaScriptによる、ヤマハ ルーターに対するコマンドの発行とレスポンスの処理
  • Luaスクリプトによるルーターサイドのプログラム
  • ヤマハ ルーターにおけるカスタムGUIの実装

このサンプルを実行するには、LuaスクリプトおよびL2MSをサポートしたヤマハ ルーター、およびSWX2200-8PoEが必要です。筆者はRTX1210を用いて実行および検証を行いました。

※厳密な電力制御を行ってはいないので、SWX2200シリーズであればいずれの機種でも動作すると思われます。

3. 内臓ウェブサーバによるファイルの公開とカスタムGUI

カスタムGUIを用いることにより、ヤマハ ルーターのウェブGUIをカスタマイズする事が可能です。カスタムGUIはユーザ毎に、Telnet/SSH/シリアルコンソールといったCUIは従来通り使用することが可能です。

サンプルでは、以下のコンフィグで定義されています。

httpd host any
httpd custom-gui use on
httpd custom-gui user poe directory=/poe index=index.html

これにより、ブラウザからユーザ「poe」でログインした際、/poe/index.htmlを表示するようになります。この際、URLはカスタマイズされ、例えば「http://192.168.100.1/custom/poe/」といったURLとなります。ルーター内部のパスとURLのパスが異なることに注意してください。

URLをブラウザで表示する際、2回BASIC認証を問われる事となります。これはCUIでのログインと同じで、1回目はGUIの出し分けの為のユーザ認証、2回目は管理者権限を用いたコマンドの発行を行う為の管理者権限の認証となります。

以上で静的コンテンツをヤマハ ルーターから行うことができました。

4. executeインターフェースを用いた管理者コマンドの発行

カスタムGUIからヤマハ ルーターをコントロールするために、executeインターフェース(例:http://192.168.100.1/custom/execute )を用意しています。このURLにアクセスすると、404ではなく、400エラーが表示されることから、何かしらの値が期待されている事がわかります。

RT Proからの引用ですが、以下のようなPOSTリクエストを送信することで、管理者権限でコマンドを実行し、レスポンスとして実行結果を返信します。

POST /custom/execute HTTP/1.1
Accept: */*
Accept-Language: ja
Referer: http://192.168.100.1/custom/poe/
Content-Type: text/plain
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)
Host: 192.168.100.1
Content-Length: 69
Connection: Keep-Alive
Cache-Control: no-cache
Authorization: Basic Og==
  
#2450035272
show config

実際にはこれらはJavaScript「monitor.js」内の関数「cmdExecute」でラップされており、非常に使いやすく実装されている事がわかります。

詳細は、以下のナレッジを参照してください。

5. これらの応用により、どのような実装ができるか

今回はPoE接続の機器の自動リブートを例としましたが、ほかにはどのようなものが考えられるでしょうか。

例えばRaspberry PiといったLinuxコンピュータとの組み合わせにより、小規模ビジネスホテル等におけるゲスト向けインターネット接続のソリューションなど考えられます。

現状、以下のようなシンプルな要件を満たすソリューションはとても少なく、ホテルのゲスト向けLANはとても脆弱であり、セキュアではありません。

  • 利用規約の表示と承認の記録を取る(MACアドレスの取得)
  • 退出時刻にLANを切り替え、利用を停止させる

しかし、Raspberry Pi上で承認およびVLANの切り替えをコントロールし、実際の処理をヤマハ ルーターおよびSWX 2200シリーズで実装することで、よりお客様に安心していただけるゲスト向けLANを提供することが可能かと思います。

6. おわりに

3回に渡り、LuaスクリプトおよびカスタムGUIを用いたヤマハ ルーターのカスタマイズをお届けいたしました。最後は少しハードルが高かったかもしれませんが、ヤマハ ネットワーク製品は日本語でのドキュメントの量、およびサンプルの量がとても豊富であり、理解にはさほど時間を要しないと思います。

ぜひこれらの情報をもとに、ヤマハ製品を応用して頂き新たなビジネスと造っていただきたいと思います。