管理番号:YMHRT-4580
(最終更新日: 2023/7/26)
Luaスクリプト機能の対応機種は、RTX5000、RTX3510、RTX3500、RTX1300、RTX1220、RTX1210、RTX1200(Rev.10.01.16以降)、RTX830、RTX810、NVR700W、NVR510、NVR500、FWX120、SRT100(Rev.10.00.52以降)、vRXです。
IPマスカレードの使用ポート数を監視し、閾値を超えた場合にメールで通知するLuaスクリプトです。
使用するポート数の多い内側IPアドレスを抽出し、それぞれのIPアドレスが使用するポート数を通知します。
通知された内側IPアドレスが非常に多くのポートを占有している場合、そのアドレスに対してIPマスカレード変換セッション数制限機能で使用可能なポート数に制限をかけることにより、各ホストが均等にIPマスカレード変換を利用できるようになります。
NAT動作タイプによって、使用するLuaスクリプトが異なります。ご注意ください。
NAT動作タイプについての詳細は、NAT動作タイプの違いについて をご参照ください。
光回線に接続するためには、別途ONUが必要です。
NVR700WとNVR510は、本体のONUポートに小型ONUを装着することで、光回線に接続できます。
対応機種のうち、設定例を掲載している機種は、以下のとおりです。
機種 | 掲載内容 | 備考 | |
---|---|---|---|
NAT動作タイプ1 | RTX5000 RTX3500 RTX1200 RTX810 NVR500 SRT100 | コマンド設定例 Luaスクリプト例 |
|
NAT動作タイプ2 | RTX3510 RTX1300 RTX1220 RTX1210 RTX830 NVR700W NVR510 | コマンド設定例 Luaスクリプト例 |
ゲートウェイの設定 | ip route default gateway pp 1 |
---|---|
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 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 |
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 |
Luaスクリプトのスケジュール設定 | schedule at 1 startup * lua (Luaスクリプトファイル名) |
設定値 | -- 監視間隔 (1-864000 秒) -- 使用状況を監視するIPマスカレードのNATディスクリプター番号(1 - 2147483647) -- 使用ポート数の閾値(1 - NAT同時セッション数の最大値) -- 抽出する内側IPアドレスの個数(1, 2 ..) -- メールの設定 -- メールの送信に失敗したときに出力する SYSLOG のレベル(info, debug, notice) |
---|---|
IPマスカレードの使用ポート数を返す関数 | function natmsq_use_status(id) return rtn, num, str |
IPマスカレードの使用ポート数を内側IPアドレスごとに求める関数 | function nattbl_info(str, num) rt_name = string.match(_RT_FIRM_REVISION, "(%w+) ") |
IPマスカレードの使用ポート数を内側IPアドレスごとに求める関数 (RTX5000、RTX3500、RTX1200、RTX810、NVR500) |
function nattbl_info_rtx1200(str, num) n = 1 if (n + 1 > num) then if (n < num) then result = string.format("ポート使用数の多い内側IPアドレス(上位%d個)\r\n", num) return result |
IPマスカレードの使用ポート数を内側IPアドレスごとに求める関数 (SRT100) |
function nattbl_info_srt100(str, num) for v in string.gmatch(str, ptn) do n = 0 bubble_sort(a, true) if (n < num) then result = string.format("ポート使用数の多い内側IPアドレス(上位%d個)\r\n", num) return result |
配列の並び替えを行う関数 | function bubble_sort(t, reverse) for i = 1, #t do |
2つの値を入れ替える関数 | function swap(x, y) temp = x |
現在の日時を取得する関数 | function time_stamp() t = os.date("*t") |
メインルーチン | local rtn, nat_use, str while (true) do rtn, nat_use, str = natmsq_use_status(nat_descriptor) if (mail_tbl.text:len() > 0) then rt.sleep(idle_time) |
設定値 | -- 監視間隔 (1-864000 秒) -- 使用状況を監視するIPマスカレードのNATディスクリプター番号(1 - 2147483647) -- 使用ポート数の閾値(1 - NAT同時セッション数の最大値) -- 抽出する内側IPアドレスの個数(1, 2 ..) -- メールの設定 -- メールの送信に失敗したときに出力する SYSLOG のレベル(info, debug, notice) |
---|---|
IPマスカレードの使用ポート数を返す関数 | function natmsq_use_status(id) return rtn, num, str |
IPマスカレードの使用ポート数を内側IPアドレスごとに求める関数 (RTX3510、RTX1300、RTX1220、RTX1210、RTX830、NVR700W、NVR510) |
function nattbl_info_type2(str, num) n = 1 if (n + 1 > num) then if (n < num) then result = string.format("ポート使用数の多い内側IPアドレス(上位%d個)\r\n", num) return result |
配列の並び替えを行う関数 | function bubble_sort(t, reverse) for i = 1, #t do |
2つの値を入れ替える関数 | function swap(x, y) temp = x |
現在の日時を取得する関数 | function time_stamp() t = os.date("*t") |
メインルーチン | local rtn, nat_use, str while (true) do rtn, nat_use, str = natmsq_use_status(nat_descriptor) if (mail_tbl.text:len() > 0) then rt.sleep(idle_time) |
ご相談・お問い合わせ