本設定例の対応機種は、FWX120です。
IPマスカレードの使用ポート数を監視し、閾値を超えた場合にメールで通知するLuaスクリプトです。
使用するポート数の多い内側IPアドレスを抽出し、それぞれのIPアドレスが使用するポート数を通知します。
通知された内側IPアドレスが非常に多くのポートを占有している場合、そのアドレスに対してIPマスカレード変換セッション数制限機能で使用可能なポート数に制限をかけることにより、各ホストが均等にIPマスカレード変換を利用できるようになります。
光回線に接続するためには、別途ONUが必要です。
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 inbound filter list 1001 1002 1003 1004 1005 1006 1007 1099 ip pp nat descriptor 1 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 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 |
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アドレスごとに求める関数 (FWX120) |
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) |
ご相談・お問い合わせ