Help us understand the problem. What is going on with this article?

Batfishを使ったインターフェース設定情報の抽出と妥当性確認

More than 1 year has passed since last update.

はじめに

Advent Calendar 3日目に続き、Batfishを使ったネットワーク機器の設定の妥当性確認を行います。

参考:Advent Calendar 3日目 - Batfishを使ったネットワーク設定情報の抽出と妥当性確認

今回は、interfacePropertiesクラスでインターフェース設定を抽出し、コンプライアンスポリシー「使用中のインターフェースでDescriptionが設定されていること」が守られているかチェックしてみたいと思います。

チェック対象のConfigファイル

ノードhqborder2(Cisco1812J)のRunning Configファイルを対象にチェックを行います。
ご参考までに、インターフェース関連の設定を抜き出したものをアップしておきます。

show_running-config(snip)
interface Tunnel1
 description << To brborder2 >>
 bandwidth 100
 ip address 10.1.1.9 255.255.255.252
 delay 10
 tunnel source Loopback0
 tunnel destination 1.1.1.2
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
!
interface FastEthernet0
 description << To PE Router >>
 ip address 10.1.1.5 255.255.255.252
 duplex auto
 speed auto
!
interface FastEthernet1
 description << border2 - dist1 Segment >>
 ip address 192.168.200.9 255.255.255.252
 speed 100
 full-duplex
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
!
interface FastEthernet2
 description << To hqdist2 Fa0/2 >>
 switchport access vlan 203
 duplex full
 speed 100
!
interface FastEthernet3
 shutdown
!
interface FastEthernet4
 shutdown
!
interface FastEthernet5
 shutdown
!
interface FastEthernet6
 shutdown
!
interface FastEthernet7
 shutdown
!
interface FastEthernet8
 shutdown
!
interface FastEthernet9
 shutdown
!
interface Vlan1
 no ip address
 shutdown
!
interface Vlan203
 description << border2 - dist2 Segment >>
 ip address 192.168.200.13 255.255.255.252

コンプライアンスチェック(1/2) - インターフェース設定情報の抽出

まず、前回同様Pybatfishのインポート、チェック対象Configの格納先指定と読み込みを行います。

3-1.png

ここで、interfacePropertiesクラスを使い、試しにノードhqborder2(Cisco1812J)のインターフェースTunnel1の設定情報を抽出してみます。
出力内容を見ると、例えばActiveプロパティで開放(True)/閉塞(False)、DescriptionプロパティでDescriptionの内容、Primary_AddressプロパティでIPアドレス設定が表示されています。VLAN、EtherChannel、HSRP、VRRP、OSPF、ACL関連もあります。また、設定されていないプロパティはNoneやFalseといった形で表示されています。
ちなみに、他のインターフェースでも表示されるプロパティ一覧は同じです。

2-2.png

コンプライアンスチェック(2/2) - インターフェースDescription設定の妥当性確認

ノードhqborder2のインターフェースを一つづつ取り出し、以下2段階の条件分岐で、コンプライアンス判定を行います。

 ① ActiveプロパティがTrue(開放状態)か
 ② DescriptionプロパティがNoneではないか

問題があるのは、①がTrueで②がFalseのパターンなので、この時"NG"が出力されるようにします。それ以外はもともと閉塞状態か、設定が入っている状態ですので"OK"と表示されるようにします。

2-3.png

出力結果を見ると、1番目のインターフェースLoopback0がNG判定となっています。
上記のRunning Configを見ると、確かにDescriptionが抜けています。そのため以下の通りConfig修正を行います。

修正Config
interface Loopback0
 description << Loopback >>

Configファイルを変更した場合、再度読み込みを行う必要があります。
チェックを実行すると、今度はすべてOKとなりました。めでたしめでたし:grin:

2-4.png

今回作成したコードはGistにも置いています。
https://gist.github.com/Tachashi/b4018363b8b66173119a215b84af38b6

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away