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

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

ルーターの対応機種は、RTX1210RTX1200(Open in new windowRev.10.01.16以降)、RTX810NVR700WNVR510NVR500
FWX120です。

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

L2MSコントローラー(ルーター)とL2MSスレーブ(L2スイッチ)の対応リビジョンは、Open in new window 技術資料「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

設定値

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

-- 関連ログ/コマンド文字列
ptn1 = "LAN%d: PORT%d link up"
ptn2 = "%[SWCTL%] lan1:"
ptn3 = "%(00:a0:de:.+%): 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 = 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

【ご注意】

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

ページトップへ戻るReturn to Top