Batfish를 사용한 인터페이스 구성 정보 추출 및 유효성 확인

소개



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의 저장처 지정과 로드를 실시합니다.



이제 interfaceProperties 클래스를 사용하여 노드 hqborder2 (Cisco1812J) 인터페이스 Tunnel1의 구성 정보를 시도해보십시오.
출력 내용을 보면 예를 들어 Active 속성에서 개방(True)/폐색(False), Description 속성에서 Description의 내용, Primary_Address 속성에서 IP 주소 설정이 표시됩니다. VLAN, EtherChannel, HSRP, VRRP, OSPF, ACL 관련도 있습니다. 또한 설정되지 않은 속성은 None 또는 False와 같은 형태로 표시됩니다.
그건 그렇고, 다른 인터페이스에서도 표시되는 속성 목록은 동일합니다.



컴플라이언스 검사(2/2) - 인터페이스 Description 설정의 유효성 확인



노드hqborder2의 인터페이스를 하나씩 꺼내고, 다음 2단계의 조건 분기로, 컴플라이언스 판정을 실시합니다.

 ① Active 속성이 True (개방 상태)
Description 속성이 None가 아닌가?

문제가 있는 것은 ①이 True이고 ②가 False의 패턴이므로 이때 "NG"가 출력되도록 합니다. 그 이외는 원래 폐색 상태인지, 설정이 들어 있는 상태이므로 "OK"라고 표시되도록 합니다.



출력 결과를 보면 첫 번째 인터페이스Loopback0가 NG 판정입니다.
위의 Running Config를 보면 확실히 Description이 빠져 있습니다. 따라서 다음과 같이 Config 수정을 수행합니다.

수정Config
interface Loopback0
 description << Loopback >>

Config 파일을 변경한 경우 다시 로드해야 합니다.
체크를 실행하면, 이번은 모두 OK가 되었습니다. 축하해



이번에 작성한 코드는 Gist에도 두고 있습니다.
htps : // 기 st. 기주 b. 코 m / 타키시 / b4018363b8b66173119 A 215b84 A f38b6

좋은 웹페이지 즐겨찾기