定期的にLANインタフェース(CATV型接続など)の回線使用率を監視し、送信負荷率または受信負荷率が閾値を超えた場合にメールで通知するLuaスクリプトです。
LANの インタフェースの設定 (LAN1ポートを使用) |
ip lan1 address 192.168.0.1/24 |
---|---|
WANの インタフェースの設定 (LAN2ポートを使用) |
ip lan2 address dhcp ip lan2 nat descriptor 1 ip route default gateway dhcp lan2 |
NATの設定 | nat descriptor type 1 masquerade nat descriptor address outer 1 primary |
DHCPの設定 | dhcp service server dhcp scope 1 192.168.0.2-192.168.0.100/24 |
DNSの設定 | dns server (ISPより指定されたDNSサーバーのIPアドレス) dns private address spoof on |
フィルタの設定 | ip inbound filter 1001 reject-nolog * * tcp,udp * 135 ip inbound filter 1002 reject-nolog * * tcp,udp 135 * ip inbound filter 1003 reject-nolog * * tcp,udp * netbios_ns-netbios_ssn ip inbound filter 1004 reject-nolog * * tcp,udp netbios_ns-netbios_ssn * ip inbound filter 1005 reject-nolog * * tcp,udp * 445 ip inbound filter 1006 reject-nolog * * tcp,udp 445 * ip inbound filter 1007 reject-nolog 192.168.0.0/24 * * * * ip inbound filter 1099 pass-nolog * * * * * ip policy interface group 101 name=Private local lan1 ip policy address group 101 name=Private 192.168.0.0/24 ip policy address group 102 name=Any * ip policy service group 101 name="Open Services" ip policy service group 102 name=General dns ip policy service group 103 name=Mail pop3 smtp ip policy filter 1100 reject-nolog lan1 * * * * ip policy filter 1110 pass-nolog * * * * 102 ip policy filter 1122 static-pass-nolog * lan1 * * * ip policy filter 1123 static-pass-nolog * local * * * ip policy filter 1124 static-pass-log * * 192.168.0.0/24 * http ip policy filter 1150 pass-nolog * pp1 * * * ip policy filter 1500 reject-nolog pp* * * * * ip policy filter 1520 pass-log * lan1 * * 101 ip policy filter 1700 pass-nolog local * * * * ip policy filter 1710 static-pass-nolog * lan1 * * * ip policy filter 3000 reject-nolog * * * * * ip policy filter set 101 name="Internet Access" 1100 [1110 1123 [1124] 1122 1150] 1500 [1520] 1700 [1710] 3000 ip policy filter set enable 101 ip lan2 inbound filter list 1001 1002 1003 1004 1005 1006 1007 1099 |
Luaスクリプトのスケジュール設定 | schedule at 1 startup * lua (Luaスクリプトファイル名) |
設定値 | -- 監視間隔 (1-864000 秒) -- 回線使用率を計測する時間(1, 2 .. 秒) -- 監視するLANインターフェイスの番号 -- 送信負荷率の閾値(1 - 99 %) -- 受信負荷率の閾値(1 - 99 %) -- 連続で閾値を超えたら異常と判断する回数、または正常な状態に復帰したと判断する回数(1, 2 ..) -- 正常な状態に復帰した場合にもメールを送るか否か(送る:true / 送らない:false) -- メールの設定 -- メールの送信に失敗した時に出力する SYSLOG のレベル(info, debug, notice) |
---|---|
LANインターフェイスの速度を求める関数 | function interface_speed(num) rtn, str = rt.command(cmd) if (not val) or (val == 0) then if (rt_name == "RTX1200") or (rt_name == "NVR500") or (rt_name == "FWX120") then return val |
回線速度を数値に変換する関数 | function unitstr2num(str) val = tonumber(str:match("%d+")) return val |
show status lan コマンドの 実行結果から回線使用率を求める関数 |
function lan_load_info(num, sec) rtn, str1 = rt.command(cmd) rtn, str2 = rt.command(cmd) n = 1 if (t[1]) and (t[3]) then return rtn, rcv, snd, str1 |
回線使用率が閾値を超えた時、 または正常に復帰した時に メッセージを返す関数 |
function make_lanmsg(tbl, val, th, down) if (val) then return str |
閾値を超えた、または下がった 連続回数をカウントする関数 |
function count_proc(t, val, th) if (val > th) then return rtn |
現在の日時を取得する関数 | function time_stamp() t = os.date("*t") |
メインルーチン | local rtn, str, max while (true) do rtn, rcv, snd, str = lan_load_info(lan_num, avr_sec) if (mail_tbl.text:len() > 0) then rt.sleep(idle_time) |
ご相談・お問い合わせ