管理番号:YMHSW-4126
本設定例では、ルーターのL2MSマスター機能・Luaスクリプト機能と、L2スイッチのL2MSスレーブ機能を使用しています。L2MSを使って、ルーターから、スイッチが持つ機能の設定を行います。
ルーターの対応機種は、RTX1220、RTX1210、RTX1200(Rev.10.01.16以降)、RTX830、RTX810、NVR700W、NVR510、NVR500、FWX120です。
L2スイッチの対応機種は、SWX2322Pシリーズ、SWX2320シリーズ、SWX2310Pシリーズ、SWX2310シリーズ、SWX2300シリーズ、SWX2210Pシリーズ、SWX2210シリーズ、SWX2200シリーズ、SWX2110Pシリーズ、SWX2110シリーズ、SWX2100シリーズです。
L2MSマスター(ルーター)とL2MSスレーブ(L2スイッチ)の対応リビジョンは、技術資料「L2MS」でご確認ください。
SWX2200のポートを定期的に監視し、パケットの受信負荷率が閾値を超えた場合には、ポートを遮断してトラフィック量を制御します。
SWX2200-24Gを使用している場合は、ポートを遮断する前に受信帯域を絞り、トラフィック量を抑制します。それでもなお、受信負荷率が閾値を超える場合にはポートを遮断します。
光回線に接続するためには、別途ONUが必要です。
NVR700WとNVR510は、本体のONUポートに小型ONUを装着することで、光回線に接続できます。
対応機種のうち、設定例を掲載している機種は、以下のとおりです。
機種 | 掲載内容 | 備考 | |
---|---|---|---|
ルーター | RTX1220 RTX1210 RTX1200 RTX830 RTX810 NVR700W NVR510 NVR500 | コマンド設定例 Luaスクリプト例 |
L2MSマスター機能、 Luaスクリプト機能 |
L2スイッチ | SWX2200-8G SWX2200-24G SWX2200-8PoE | L2MSスレーブ機能 |
LANインターフェースの設定 (LAN1ポートを使用) |
ip lan1 address 192.168.0.1/24 |
---|---|
WANインターフェースの設定 (LAN2ポートを使用) |
pp select 1 pp always-on on pppoe use lan2 pp auth accept pap chap pp auth myname (ISPに接続するID) (ISPに接続するパスワード) ppp lcp mru on 1454 ppp ipcp ipaddress on ppp ipcp msext on ip pp mtu 1454 ip pp nat descriptor 1 ip pp secure filter in 1020 1030 2000 ip pp secure filter out 1010 1011 1012 1013 1014 1015 3000 dynamic 100 101 102 103 104 105 106 107 pp enable 1 ip route default gateway pp 1 |
NATの設定 | nat descriptor type 1 masquerade |
DHCPの設定 | dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.0.2-192.168.0.100/24 |
DNSの設定 | dns host lan1 dns server (ISPより指定されたDNSサーバーのIPアドレス) dns private address spoof on |
L2MSの設定 | switch control use lan1 on |
フィルターの設定 | ip filter source-route on ip filter directed-broadcast on ip filter 1010 reject * * udp,tcp 135 * ip filter 1011 reject * * udp,tcp * 135 ip filter 1012 reject * * udp,tcp netbios_ns-netbios_ssn * ip filter 1013 reject * * udp,tcp * netbios_ns-netbios_ssn ip filter 1014 reject * * udp,tcp 445 * ip filter 1015 reject * * udp,tcp * 445 ip filter 1020 reject 192.168.0.0/24 * ip filter 1030 pass * 192.168.0.0/24 icmp ip filter 2000 reject * * ip filter 3000 pass * * ip filter dynamic 100 * * ftp ip filter dynamic 101 * * www ip filter dynamic 102 * * domain ip filter dynamic 103 * * smtp ip filter dynamic 104 * * pop3 ip filter dynamic 105 * * submission ip filter dynamic 106 * * tcp ip filter dynamic 107 * * udp |
Luaスクリプトのスケジュール設定 | schedule at 1 startup * lua /swx2200_lua_traffic_ctl_rtx1200.lua |
設定値 | -- 監視間隔(1 - 864000 秒) idle_time = 60 -- 受信負荷率を計測する時間(1, 2 .. ) avr_sec = 1 -- 受信負荷率の閾値(1 - 99 %) rcv_th = 30 -- [[ 連続して閾値を超えたら受信帯域を絞る回数(1, 2, ..) SWX2200-24G のみ有効。down_countよりも少ない回数を指定する必要がある ]] shaping_cnt = 3 -- 連続して閾値を超えたらポートを閉じる回数(1, 2, ..) down_cnt = 5 --[[ 帯域を絞る場合のスピードレベル(1 - 31) switch control function set qos-speed-unit コマンドの設定値 (初期値 32M) に shaping_speed を掛けた値が実際の帯域幅となる SWX2200-24Gのみ有効 ]] shaping_speed = 10 -- このスクリプトが出力する SYSLOG のレベル (info, debug, notice) log_level = "info" --[[ 監視対象のスイッチと監視するポートをカンマで区切って列挙する MACアドレスかルーターからスイッチまでの接続ポートの経路情報で指定 ("00:a0:de:xx:xx:xx" または "lan1:2") 監視するポートを列挙する(port = "1, 3-5, 7") ]] sw_list = { { route = "lan1:1", port = "2-8"} } -- (送る: true / 送らない: false) mail = false -- メールの設定 mail_tbl = { smtp_address = "(SMTPサーバーのアドレス)", from = "(送信元メールアドレス)", to = "(宛先メールアドレス)" } |
---|---|
ポートの通信速度を求める関数 | function port_speed(num, route) rt.command("switch select " .. route) |
回線速度を数値に変換する関数 | function unitstr2num(str) val = tonumber(str) |
受信オクテット数を求める関数 | function port_rx_octet(num, route) rt.command("switch select " .. route) |
オクテット数の差分と回線速度から受信負荷率を求める | function calc_load(port) if (port.speed == 0) then if (port["octet1"] > port["octet2"]) then |
回線使用率が閾値を超えたとき、または正常に復帰したときのメッセージを返す関数 | function make_portmsg(port, route, load, stat) if (stat == "shaping") then |
閾値を超えた連続回数をカウントする関数 | function count_proc(t, val, port_num) if (val > rcv_th) then if (t.stat ~= "down") and (t.cnt == down_cnt) then |
ポートの受信帯域/ポートをダウンさせる関数 | function exec_sw_cmd(route, stat, port) if (rtn) then |
現在の日時を取得する関数 | function time_stamp() t = os.date("*t") |
メールを送信する関数 | function send_mail(port, route, load, stat) make_portmsg(port, route, load, stat) |
SWの検索および機種、ポート数の設定 | function set_sw_tbl(tbl) |
SWの各ポート情報を初期化 | function port_info_init(tbl, sw_num) for i=1, sw_num do |
SWの監視するポートを設定 | function set_check_port(tbl, sw_num) for i=1, sw_num do |
SWの各ポートのオクテット数の取得 | function get_port_info(sw, port_num, str) |
メインルーチン | local rtn, str, max -- 指定されたSWXを検索し、製品名を判別する。 while (true) do for j = 1, sw.port_num do if (rtn > 0) then if (check == nil) then |
ご相談・お問い合わせ