15
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RTX810のNAPTテーブル、ARPテーブル、DHCPの使用状況をZabbixに記録する

Posted at

概要

時折、社員から無線LANで接続が切れる、という情報が寄せられている。
最近の社員増加に伴って端末が増え、ルータ(RTX810)のNAPTテーブルが溢れているのではないか?

残念ながらSNMPを用いてRTX810のNAPTテーブルの使用量を調べることはできなかったので、外部チェックスクリプトを仕込んで調べてみた。
その他、ARPテーブルとDHCPのリース状況も調べた。

環境

  • ルータ: YAMAHA RTX810
  • NAPT、DHCPサーバ、Web管理画面をON

外部チェックのスクリプト

NAPTテーブル

nat_table_usage.sh
#!/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}'

やっていることは、以下の通り。

  1. Web管理画面の「コマンドの実行」ページを表示し、<input type="hidden" name="HTTPD_SESSION_ID" value="********">を取得
  2. コマンドにshow nat descriptor addressを指定して実行
  3. 帰ってきた結果を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テーブル

arp_table_usage.sh
#!/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

dhcp_status.sh
#!/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分

image.png

同様に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まで行けるので、
まだまだ溢れてはいないようだ。

image.png

次に怪しいのはAPの同時接続数なので、次はそちらを調査する。

15
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?