리눅스 장비내에서 iptables 을 제대로 체인별로 관리해서 운영할경우 유용할거 같아서 안내해드립니다.
저같은 경우는 OpenStack 내에서 패킷 FLOW에 체인들상호관계를 파악하기 위해 사용했습니다.
구글링해보니 atoato88 ID를 가지고 있는 일본분께서 친절히도 적어둔게 있네요.
설치 및 사용방법은 간단합니다.
※ 출처 http://atoato88.hatenablog.com/entry/2014/01/25/133852
INSTALL
# cpan Graph::Easy
# apt-get install libgraph-easy-perl
# apt-get install graphviz
# iptables -L > ipt_smileserv.save
아래는 Shell 상에서 확인가능한 Flow 그림입니다.
# cat ipt_smileserv.save | sed -e “s/Chain \(.*\) (.*)/[Chain\1]/g” | sed “/\(target\|DNAT\|ACCEPT\|MASQUERADE\|SNAT\|DROP\|RETURN\|REJECT\).*/d” | sed -e “s/^\([^ ]*\) .*/[\1]/g” | sed “/^$/d” | awk -v ORS=, ‘{print $1}’ | sed -e “s/\],\[Chain/] [Chain/g” | sed -e “s/\[Chain\([^ ,]*\),/[\1—->/g” | sed -e “s/\(.*\),/\1/g” | sed -e “s/Chain//g” | sed -e “s/\(.*\)—->/\1/g” | graph-easy
png 형태의 이미지로 변환하기 위해서는 아래와 같이….
# cat ipt_smileserv.save | sed -e “s/Chain \(.*\) (.*)/[Chain\1]/g” | sed “/\(target\|DNAT\|ACCEPT\|MASQUERADE\|SNAT\|DROP\|RETURN\|REJECT\).*/d” | sed -e “s/^\([^ ]*\) .*/[\1]/g” | sed “/^$/d” | awk -v ORS=, ‘{print $1}’ | sed -e “s/\],\[Chain/] [Chain/g” | sed -e “s/\[Chain\([^ ,]*\),/[\1—->/g” | sed -e “s/\(.*\),/\1/g” | sed -e “s/Chain//g” | sed -e “s/\(.*\)—->/\1/g” | graph-easy -as dot | dot -Tpng -o ipt.png
[polldaddy rating=”7739789″]