IP 관리 자동화 개발 (IPAM)

SYSTEM/TECH / /
반응형

IP 관리 자동화 하기 핵심 TIP 

 

총 98개 VLAN (c 클래스) 운영중  총 24,892개 IP 할당 받음

현재 10,385 개 IP 사용중  지속적으로 늘어나는 구조....

 

IPAM (IP관리 툴) 다양한 오픈소스가 있지만 다 거기서 거기고 별반 차이없고 

개인적으로는 마음에 안들어서 .......아래처럼 개발해서 사용중 ..

 

Point :

 



  매일 하루에 한번 98개(/24) IP 대역에 대하여 ->  masscan 으로 특정 Port 및 ICMP 체크 ->
   -> ON (alive) IP, Off IP Parsing 하여 file로 저장 -> filebeat -> logstash grok  파싱  ->  
   -> elastic 저장  ->  grafana dashboard 표현 
 

 

* masscan인 nmap 보다 스캔속도나 처리 속도가 빠름 (옵션에 따라 차이는 있음)

 

ex)  전체 VLAN 특정 port Scan

 

for i in ${VLAN}

  do

 

    SUBNET=`echo $i | awk -F " " '{print $1}'`

   

   /usr/bin/masscan -p8080,3389,2525,22,80,23 ${SUBNET} --rate 10000 >  $DIR/temp.txt    

   (port 는 임의로 적은것임)

 

    grep "open" $DIR/temp.txt | awk -F " " '{print $2,$6}' | /usr/bin/sort -u >> $DIR/log/${DAY}-masscan.log

 

 done 

 

 

* grok pattern 아래와 같이 만들어서 매칭 (elastic 넣기전에 parsing)

 

cat xx.file  (pattern 정의 파일)

 

IPAM (%{WORD:HOSTNAME} %{IP:IPADDRESS} %{IP:SUBNET} %{WORD:STATUS})

 
 
logstash.conf 
 
filter {
 
 if [type] == "ipam" {
   grok {
            patterns_dir => "/data/pattern/ipam"
            match => [ "message", "%{IPAM}" ]
    }
  }
 
}
 
 

########## IP 리스트 자동 parsing 하기 TIP ###########

 

File01  :  salt-run manage.alived show_ipv4=True --out=txt  --out-file=ipaddress.txt   +   masscan 활용한 script 결과물 file

       

       

File02 :   98개 c클래스 대역별 IP 1~254 까지의 파일 

 

위의 파일 2개를 비교하여 공백으로 구분 '두번째 필드'를 기준으로 중복 되는 것 빼고 

uniq 하게 출력하기

 

 

  awk 'NR==FNR{c[$2]++;next};c[$2] == 0' File01  File02 

 

   10,000 줄 이상 비교하여 결과 도출시 1초가 안걸림.

 

File01 

none 231.100.10.27 231.100.10.0 OFF

.

.

.

 

File02 

APP-HV-BD103XXX 100.200.200.180 100.200.200.0 ON

.

.

.

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기