brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 May 28. 2019

Linux: iptables

iptasbles traffic mirroring service;

리눅스의 아이피테이블(iptable)을 활용한

트래픽 미러링(Traffic Mirroring)에 대한 이야기.


AWS, Azure, On-premise 환경 등에서 VM or VPC를 통한

서비스를 운영하고 있다고 가정.


각 엔드 포인트(End-point)에서 발생하는 하나 하나의 트래픽에는

이유와 의미와 연관성이 존재.


예를 들어,

철수가 구매한 500원 짜리 아이스크림

철수가 구매한 100원 짜리 티슈에 대한 트래픽 발생은

그 이유와 의미(더워서?), 그리고 연관성(아이스크림을 흘림?)이

존재함.


이런 것들을 알 수 있게끔,

우리는 우선 데이터를 한 곳으로 잘 모아서,

DB에 쌓고,

가공 / 분석하고,

인사이트(Insight)를 도출 해야함.


그러려면,

가정 첫번째로 데이터를 모으려고 하는데

환경적인 요인 때문에, 혹은 개발에 익숙하지 않아서

어려움을 겪을 수 있음.


iptables 서비스를 활용해서

VM, VPC, On-premise 에서 운영 중인 서비스의

네트워크 트래픽을 받아 볼 수 있음.


자동화 스크립트로 만들어서 활용 중.

우선,

기본적인 명령어 주입을 통해서 받아 볼 수 있는데



>> iptables -h


위와 같은 정보가 보이지 않고, 에러 내용이 보인다면

yum 을 이용해서 iptables 를 설치할 수 있음.


다음으로,

보내고자 하는 곳의 IP를 알아야 함.


예를 들어,

X.X.1.10 으로 들어오는 패킷에 대해서

X.X.1.11 로 넘기는 상황을 보면



>> iptables -A PREROUTING -t mangle -i <INTERFACE> ! -d <YOUR_LAPTOP_DEVICE_IP> -j TEE --gateway <TRAFFIC_DATA_RECEIVE_DEVICE_IP>


>> iptables -A POSTROUTING -t mangle -o <INTERFACE> ! -s <YOUR_LAPTOP_DEVICE_IP> -j TEE --gateway <TRAFFIC_DATA_RECEIVE_DEVICE_IP>


만약,

위의 설정을 저장하고 싶다면

>> service iptables save


그냥 (다) 지우고 싶다면

>> iptables -t mangle -F



이제 신기하게,

X.X.1.10 으로 보내는 정보를

X.X.1.11 에서 확인 할 수 있음.


WireShark 로 확인.


정확한 시나리오는

192.168.2.12 로 향하는 트래픽을 192.168.2.11 로 향하도록

iptables 설정을 한 후,

192.168.20.198 노트북에서 192.168.2.12 로 PING을 보내고,

192.168.2.12에서는 TCPDUMP를 통해서 확인하고,

192.168.2.11 에서는 Wireshark 를 통해서 확인.


'seq  번호', 'IP' 에 주목.

192.168.2.12 에서 확인 한 결과임.


192.168.2.11 에서도 같은 결과를 확인 할 수 있음.

쨔잔.


다른 블로그에서도 이와 같은 내용을 담은 컨텐츠 다수 있음.

Built-in 모듈을 사용해서 위와 같은 프로세스 플로우를 이끌어 낼 수 있다는 것은

ㄲㅗㅐ 나 고급(?) 기술이라고 함.



Ref: https://www.testdevlab.com/blog/2017/08/setting-up-router-traffic-mirroring-to-wireshark/



데이터 모으기는 성공.

가공과 분석은 다음 편에서.


끝.

작가의 이전글 PySpark: 그래프 프레임(2)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari