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