LoginSignup
1
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-12-03

はじめに

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

1
3
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
1
3