kooshinlab / コーシンラボ

現役ネットワークエンジニアが、ネットワーク運用で必要になった技術の記事を書くブログです。

【2/2】ルータ冗長プロトコルのVRRP/HSRPのグループ番号をMACアドレスから確認するPythonツールを作ってみた

f:id:KOOSHIN:20211017142257p:plain

ネットワークエンジニアにお馴染みのルータ冗長プロトコルである VRRP(Virtual Router Redundancy Protocol)とHSRP(Hot Standby Router Protocol)の グループ番号をMACアドレスから確認する方法を前回【1/2】で説明しました。

グループ番号重複事故の再発防止策として、MACアドレステーブルからVRRP/HSRPのグループ番号を抽出するチェック項目を追加するのは簡単です。

しかしながら、目GREPMACアドレスを見分けて、グループ番号を確認するのは困難を極め、事故が再発する可能性が高いです。

そこで今回はMACアドレスからグループ番号を抽出するPythonツールを作成してみました。

本記事では、作成したPythonツール(pyparsemactable)の簡単な使い方を説明いたします。

f:id:KOOSHIN:20211017142933p:plain
pyparsemactable

続きを読む

HSRPv1のグループ番号とMACアドレス

本記事は「 ルータ冗長プロトコルのVRRP/HSRPのグループ番号をMACアドレスから確認する」の参考文献です。

下表は、HSRPv1のグループ番号とMACアドレスの対応付けを示しています。

続きを読む

VRRPのグループ番号とMACアドレス一覧

本記事は「 ルータ冗長プロトコルのVRRP/HSRPのグループ番号をMACアドレスから確認する」の参考文献です。

下表は、VRRPv2/v3のグループ番号とMACアドレスの対応付けを示しています。

続きを読む

【1/2】ルータ冗長プロトコルのVRRP/HSRPのグループ番号をMACアドレスから確認する

f:id:KOOSHIN:20211016215758p:plain

ネットワークエンジニアにお馴染みのルータ冗長プロトコルであるVRRP(Virtual Router Redundancy Protocol)HSRP(Hot Standby Router Protocol)のグループ番号をMACアドレスから確認する方法を説明します。

同じネットワークセグメントにルータ冗長プロトコルを利用して複数の冗長グループを作った場合、 しばしばグループ番号が重複して通信障害を引き起こしてしまうことがあると思います[^1]。 そしてもれなく障害報告書の出番です。

本記事では、不幸な事故が二度と起こらないように、ルータ冗長プロトコルのグループ番号を事前に使われていないか確認する方法を説明します。

f:id:KOOSHIN:20211016203304p:plain
ルータ冗長プロトコルのグループ番号の重複事故

続きを読む

ネットワーク監視表示灯(パトライト)をHTTP APIから操作してみた

ネットワーク監視表示灯(通称:パトライト)をHTTP APIで操作してみました。

はじめに

ネットワーク監視表示灯(以下、パトライト)は、SNMPやSOCKET通信の他に、HTTPコマンド(HTTP API)に対応しています。 今回はHTTPコマンドを利用して、パトライトを操作してみました。

SNMPやSOCKET通信(シェル)からパトライトを操作する方法は下記を参考にしてみてください。

動作環境

今回は以下のWindowsLinuxの環境で動作を試してみたした。

パトライトの準備

ヤフオクで入手したパトライトのNHシリーズ「NHP-3FB1」は、HTTPコマンドをサポートしています。 古いファームウェアではHTTPコマンドがサポートされていないため、最新のファームウェアバージョン1.46にアップグレードしてみてください。

ファームウェアアップグレードに必要な取扱説明書やファームウェアのダウンロードは下記を参照してください。

HTTPコマンド制御機能の設定

Webブラウザからパトライトの管理画面にログインし、HTTPコマンド制御機能を有効にします。 デフォルトで機能が有効になっています。 もし下記の画面のように「HTTPコマンド制御機能」がない場合は、HTTPコマンドがサポートしていない、 ファームウェアバージョンをお使いの可能性があります。 ファームウェアアップグレードしてください。

  • セットアップ項目>システム設定
    • HTTPコマンド制御機能:有効

f:id:KOOSHIN:20200210234834p:plain
HTTPコマンド制御機能

HTTPコマンド

HTTP GETリクエストで、表示灯の状態を指定できます。 リクエスURIと2つのパラメータは下記のとおりです。

項目 内容
リクエスURI http://<IPアドレス>/api/control?<パラメータ>=<値>
IPアドレス パトライトIPアドレス
パラメータ alertまたはclearが指定可能
alertの場合、6桁の数字でパトライトの状態を指定。clearの場合1が固定値。詳細は下図を参照
パラメータ:alert 表示灯の状態を指定する
パラメータ:clear 表示灯の状態をクリア(リセット)する

下図にHTTPコマンドの詳細を示します。

f:id:KOOSHIN:20200210234628p:plain
HTTPコマンド

PowerShellパトライトを操作

Windowsの場合、 PowerShellからInvoke-RestMethodを利用することで、HTTPコマンドを発行できます。 Invoke-RestMethod-Uriに表示灯の状態を指定したURIを指定することで、パトライトを操作できます。

# 表示灯の赤を点灯
> Invoke-RestMethod -Uri "http://192.168.11.101/api/control?alert=199999"
Success.

# 表示灯の赤を点滅(パターン1)
> Invoke-RestMethod -Uri "http://192.168.11.101/api/control?alert=299999"
Success.

# 表示灯の赤を点滅(パターン2)
> Invoke-RestMethod -Uri "http://192.168.11.101/api/control?alert=399999"
Success.

# 表示灯の状態をクリア(リセット)
> Invoke-RestMethod -Uri "http://192.168.11.101/api/control?clear=1"
Success.

curlコマンドでパトライトを操作

LinuxMacの場合、 cURLコマンドを利用することで、HTTPコマンドを発行できます。 curlコマンドの引数に表示灯の状態を指定したURIを指定することで、パトライトを操作できます。

# 表示灯の赤を点灯
$ curl http://192.168.11.101/api/control\?alert\=199999
Success.%

# 表示灯の赤を点滅(パターン1)
$ curl http://192.168.11.101/api/control\?alert\=299999
Success.% 

# 表示灯の赤を点滅(パターン2)
$ curl http://192.168.11.101/api/control\?alert\=399999
Success.% 

# 表示灯の状態をクリア(リセット)
curl http://192.168.11.101/api/control\?clear\=1
Success.%

表示灯の操作結果

表示灯の操作で、下記の状態になるように指定した結果は下記のとおりです。

  • 赤:点滅パターン1
  • 黄:点滅パターン2
  • 緑:点灯
# # 赤点滅パターン1、黄点滅パターン2、緑点灯、その他消灯
$ curl http://192.168.11.101/api/control\?alert\=231000
Success.%

おわりに

HTTP APIパトライトを操作できるので、各種ツールと連携しやすいと思います。

パトライトがほしいと思った方は、是非ご自宅に!