[CentOS] NFQUEUE 설치 및 설정
iptables 규칙을 이용해 트래픽을 NFQUEUE로 넘겨주면, 콜백형식으로 구현한 코드에서 패킷을 먼저 처리한 후에 내보낼 수 있음. (패킷 분석 및 조작 가능)
ex)
- 웹페이지의 응답 패킷을 받아서 원하는 내용의 웹페이지가 뜨도록 내용 변조
- 특정 패킷은 drop시켜서 받지 못하도록
libnetfilter 설치 http://www.netfilter.org/projects/libnfnetlink/downloads.html
>> yum install bzip2
>> tar –xvf libnfnetlink-1.0.1.tar.bz2
>> cd libnfnetlink-1.0.1
>> ./configure --prefix=/usr
>> make
>> make install
libmnl 설치 http://www.netfilter.org/projects/libmnl/downloads.html
>> tar –xvf libmnl-1.0.3.tar.bz2
>> cd libmnl-1.0.3
>> ./configure --prefix=/usr
>> make
>> make install
libnetfilter_queue 설치 http://www.netfilter.org/projects/libnetfilter_queue/downloads.html
>> tar -xvf libnetfilter_queue-1.0.2.tar.bz2
>> cd libnetfilter_queue-1.0.2
>> ./configure --prefix=/usr
* configure 에러시
- export PKG_CONFIG_PATH=/usr/lib/pkgconfig
>> make
>> make install
* 코드 작성에 필요한 설명 및 예제 코드
http://www.netfilter.org/projects/libnetfilter_queue/doxygen/index.html
* 컴파일 옵션
- gcc -o [OUTPUT] [SOURCE] -lnfnetlink -lnetfilter_queue
* 공유 라이브러리 에러시
- export LD_LIBRARY_PATH=/usr/lib
* NFQUEUE 속도 느릴시
>> vi /etc/sysctl.conf에 net.ipv4.ip_forward = 1 추가
>> sysctl -p /etc/sysctl.conf
* IPTABLES 설정
- iptables -t nat -A PREROUTING -i enp3s0 -p tcp --sport 80 -j NFQUEUE --queue-num 0