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

管理番号:YMHSW-3939

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

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

L2スイッチの対応機種は、SWX2322PシリーズSWX2320シリーズSWX2310PシリーズSWX2310シリーズSWX2300シリーズSWX2210PシリーズSWX2210シリーズSWX2200シリーズSWX2110PシリーズSWX2110シリーズSWX2100シリーズです。

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

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

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

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

実行例:lua /swx_only.lua

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

機種 掲載内容 備考
ルーター RTX1220 RTX1210 RTX1200 RTX830 RTX810 NVR700W NVR510 NVR500 FWX120 コマンド設定例
Luaスクリプト例
L2MSマスター機能、
Luaスクリプト機能
L2スイッチ SWX2210P SWX2210 SWX2200 SWX2110P SWX2110 SWX2100 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
L2MSの設定 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

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

メール

ご相談・お問い合わせ