概要
時折、社員から無線LANで接続が切れる、という情報が寄せられている。
最近の社員増加に伴って端末が増え、ルータ(RTX810)のNAPTテーブルが溢れているのではないか?
残念ながらSNMPを用いてRTX810のNAPTテーブルの使用量を調べることはできなかったので、外部チェックスクリプトを仕込んで調べてみた。
その他、ARPテーブルとDHCPのリース状況も調べた。
環境
- ルータ: YAMAHA RTX810
- NAPT、DHCPサーバ、Web管理画面をON
外部チェックのスクリプト
NAPTテーブル
#!/bin/bash
HOST=$1
PASS=(RTXのウェブ管理画面のパスワード)
COMMAND="show nat descriptor address"
SESSION=`wget --http-user="" --http-password="${PASS}" http://${HOST}/detail/command.html -O - 2>/dev/null \
| grep HTTPD_SESSION_ID | awk -F'"' '{print $6}'`
wget --http-user="" --http-password="${PASS}" http://${HOST}/detail/command_set.html \
--post-data="HTTPD_SESSION_ID=${SESSION}&COMMAND=${COMMAND}&x=10&y=10" -O - 2>/dev/null \
| iconv -f Shift-JIS -t UTF-8 | grep "個使用中" | awk -F' |個' '{print $10}'
やっていることは、以下の通り。
- Web管理画面の「コマンドの実行」ページを表示し、
<input type="hidden" name="HTTPD_SESSION_ID" value="********">
を取得 - コマンドに
show nat descriptor address
を指定して実行 - 帰ってきた結果をShift-JISからUTF-8に変換して、テーブルの使用量を
awk
で抜き出す
このスクリプトをZabbixサーバの/usr/lib/zabbix/externalscripts/
に配置し、
chmod +x nat_table_usage.sh
で実行可能にしておく。
正確にはNATではなくNAPTなのだが、RTX側のコマンド名に合わせた。
dockerでZabbixサーバを起動する場合は、alpineに入っているwgetのバージョンが古いため、alpineベースのものではなくUbuntuベースのものがおすすめ。
ARPテーブル
#!/bin/bash
HOST=$1
PASS=(RTXのウェブ管理画面のパスワード)
COMMAND="show arp"
SESSION=`wget --http-user="" --http-password="${PASS}" http://${HOST}/detail/command.html -O - 2>/dev/null \
| grep HTTPD_SESSION_ID | awk -F'"' '{print $6}'`
wget --http-user="" --http-password="${PASS}" http://${HOST}/detail/command_set.html \
--post-data="HTTPD_SESSION_ID=${SESSION}&COMMAND=${COMMAND}&x=10&y=10" -O - 2>/dev/null \
| iconv -f Shift-JIS -t UTF-8 | grep "カウント数" | awk -F':' '{print $2}'
DHCP
#!/bin/bash
HOST=$1
PASS=(RTXのウェブ管理画面のパスワード)
COMMAND="show status dhcp"
SESSION=`wget --http-user="" --http-password="${PASS}" http://${HOST}/detail/command.html -O - 2>/dev/null \
| grep HTTPD_SESSION_ID | awk -F'"' '{print $6}'`
wget --http-user="" --http-password="${PASS}" http://${HOST}/detail/command_set.html \
--post-data="HTTPD_SESSION_ID=${SESSION}&COMMAND=${COMMAND}&x=10&y=10" -O - 2>/dev/null \
| iconv -f Shift-JIS -t UTF-8 | grep "割り当て中アドレス数" | awk -F':' '{print $2}'
Zabbixの設定
Item
Zabbixサーバにアクセスして、「Configuration」「Hosts」または「Templates」からRTX810の「Item」を選択。
「Create Item」をクリックして、アイテムを作成し、各項目を設定。
- Name: 「NAT Table Usage」
- Type: 「External check」
- Key: 「
nat_table_usage.sh["{HOST.CONN}"]
」 - Host interface: RTX810のIPアドレス
- Update interval: 1m ⇒ 1分
同様にarp_table_usage.sh["{HOST.CONN}"]
とdhcp_status.sh["{HOST.CONN}"]
のItemも作成する。
"{HOST.CONN}"
の部分には、Host interface
に指定されたIPアドレスが入る。
Graph
次に「Graph」から「Create Graph」を使ってグラフを作成する。
- Items: 「Add」から上で作成したItem(NAT Table Usage)をSelect
見た目はお好みで。
結果
しばらくデータを貯めたら、グラフを見てみる。
最大で3000行ぐらい使っているようだが、RTX810は最大10000まで行けるので、
まだまだ溢れてはいないようだ。
次に怪しいのはAPの同時接続数なので、次はそちらを調査する。