RTX810의 NAPT 테이블, ARP 테이블, DHCP 사용량을 Zabbix에 기록

개요



때때로 사원으로부터 무선 LAN으로 접속이 끊긴다는 정보가 전해지고 있다.
최근 직원 증가에 따라 단말기가 늘어나 라우터(RTX810)의 NAPT 테이블이 넘치는 것이 아닌가?

불행히도 SNMP를 사용하여 RTX810의 NAPT 테이블의 사용량을 조사할 수 없었기 때문에, 외부 체크 스크립트를 넣어 조사해 보았다.
그 외, ARP 테이블과 DHCP의 리스 상황도 조사했다.

환경


  • 라우터: YAMAHA RTX810
  • NAPT, DHCP 서버, 웹 관리 화면 켜기

  • 외부 검사 스크립트



    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}'
    

    하는 일은 다음과 같습니다.
  • 웹 관리 화면의 명령 실행 페이지를 표시하고 <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 테이블



    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 설정



    아이템



    Zabbix 서버에 액세스하여 "Configuration", "Hosts"또는 "Templates"에서 RTX810의 "Item"을 선택하십시오.

    Create Item을 클릭하여 항목을 만들고 각 항목을 설정합니다.
  • 이름 : NAT Table Usage
  • Type: "External check"
  • Key: "nat_table_usage.sh["{HOST.CONN}"] "
  • 호스트 인터페이스 : 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의 동시 접속수이므로, 다음은 그쪽을 조사한다.

    좋은 웹페이지 즐겨찾기