ヤマハ製スイッチ以外がルーターのLAN1に直接接続されることを防ぐ

本設定例では、ルーターのL2MSコントローラー機能・Luaスクリプト機能と、L2スイッチのL2MSスレーブ機能を使用しています。

ルーターの対応機種は、RTX1210RTX1200(Rev.10.01.16以降)、RTX810NVR700WNVR510NVR500FWX120です。

L2スイッチの対応機種は、SWX2300-8GSWX2300-16GSWX2300-24GSWX2200-8GSWX2200-24GSWX2200-8PoESWX2100-8GSWX2100-16GSWX2100-24GSWX2100-5PoESWX2100-10PoEです。

L2MSコントローラー(ルーター)とL2MSスレーブ(L2スイッチ)の対応リビジョンは、 技術資料「L2MS」でご確認ください。

図 ヤマハ製スイッチ以外がルーターのLAN1に直接接続されることを防ぐ (1) 図 矢印 図 ヤマハ製スイッチ以外がルーターのLAN1に直接接続されることを防ぐ (2)

ヤマハ製スイッチ以外がルーターのLAN1に直接接続されることを防ぐためのLuaスクリプトです。
ヤマハ製ルーターに直接接続するのはヤマハ製スイッチのみという運用ポリシーの元で、他の機材が接続されることによるネットワークトラブル(ループなど)の発生リスクを抑えることができます。

Luaスクリプトを実行する際は、luaコマンドを使用しLuaスクリプトファイル名を指定してください。
また、スクリプトを停止する際は、terminate luaコマンドを実行してください。

実行例:lua /swx_only.lua

対応機種のうち、設定例を掲載している機種は、以下のとおりです。

機種 掲載内容 備考
ルーター RTX1210 RTX1200 RTX810 NVR700W NVR510 NVR500 FWX120 コマンド設定例
Luaスクリプト例
L2MSコントローラー機能、
Luaスクリプト機能
L2スイッチ SWX2200-8G SWX2200-24G SWX2200-8PoE SWX2100-8G SWX2100-16G L2MSスレーブ機能

ルーターの設定例

LANインターフェースの設定
(LAN1ポートを使用)
ip lan1 address 192.168.100.1/24
DHCPの設定 dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
スイッチの設定 switch control use lan1 on

Luaスクリプト例

設定値

-- ログ表示
log_level = "info"
log_pfx = "[LUA_SWX_ONLY] "

-- 関連ログ/コマンド文字列
ptn1 = "LAN%d: PORT%d link up"
ptn2 = "\\[SWCTL\\] lan1:"
ptn3 = "\\((00:a0:de|ac:44:f2).+\\): find switch"
port_ptn = "PORT(%d)"
cmd1 = "switch control use lan1 on"
cmd2 = "lan shutdown lan1"

-- リンクアップからスイッチを認識するまでの最大待ち時間
wait1 = 10
-- コマンド実行後のリンクアップ待ち余裕時間
wait2 = 10

メインルーチン

local rtn, str
local port, sw_ptn
local dpt = {}
local cmd_port

rt.command(cmd1)

while true do

  -- link up待ち
  rtn, str = rt.syslogwatch(ptn1, 1)
  port = string.match(str[1], port_ptn)

  -- スイッチ認識待ち
  sw_ptn = string.regexp((ptn2 .. port .. ptn3))
  rtn, str = rt.syslogwatch(sw_ptn, 1, wait1)

  if not str then
    table.insert(dpt, port)
    cmd_port = " "
    for i = 1, #dpt do
      cmd_port = cmd_port .. dpt[i] .. " "
    end
    rt.command(cmd2 .. cmd_port)
    rt.syslog(log_level, log_pfx .. "PORT" .. cmd_port .."SHUTDOWN!")
    rt.sleep(wait2)
  else
    rt.syslog(log_level, log_pfx .. "switch found.")
  end

end

【ご注意】
本設定例は、設定の参考例を示したもので、動作を保証するものではございません。
ご利用いただく際には、十分に評価・検証を実施してください。