netfilter


[download]

http://netfilter.org 사이트에 가서 아래 항목을 다운받는다.

libmnl

libnfnetlink

libnetfilter_queue



[build]

각각의 모듈을 다음과 같은 명령어를 통하여 빌드 및 설치를 한다.

cd <directory>

./configure

make

make install


관련된 so file은 기본적으로 /usr/local/lib에 복사(설치된다). /usr/local/lib에 가서 다음 파일들이 설치되었는지 확인한다.

libmnl.*

libnetfilter_queue.*

libnfnetlink.*



[test]

다음과 같은 명령어로 특정 packet에 대해서 0번 queue로 보낸다.

iptables -A OUTPUT -p icmp -j NFQUEUE --queue-num 0


첨부하는 소스 파일( nfqnl_test.c )을 이용해서 queue로 들어온 packet을 nfq_set_verdict(NF_ACCEPT)시키고, packet을 잡아 본다. "-lnetfilter_queue" 링크 옵션을 주도록 한다.


nfq_set_verdict 함수를 호출할 때 다른 옵션(NF_DROP)을 주어서 packet을 drop시켜 본다.


nfq_set_verdict 함수의 마지막 2개의 인자에 별도의 ip header로 시작하는 packet의 정보를 담아서 verdict시켜 본다.