티스토리 뷰
* yahoo l3dsr
https://github.com/yahoo/l3dsr
리눅스 4.4에 빌드-
(1년도 더 전에 마지막 업데이트여서.. 힘들었다... ㄱ-)
* 구성
l3dsr다운 받으면 각 운영체제별로 컴파일 할 것, doc, vip 설정을 해주는 툴로 구성되어 있음.
* 컴파일 해야할 것
- 해당 기능을 하는 커널 모듈 (kmod-xt)
- iptables에서 해당 모듈을 바르게 부를 수 있도록 해주는 so 파일 (libxt_DADDR.so)
* make
가이드 그대론 make가 안됨.
- make 파일 기본 설정인 extension-1.4 / kmod-xt 사용
- fPIC 옵션이 있는데 이는 gcc 5 로 컴파일 못 함 -> gcc-4.9 사용
- make 하면 iptables.h 가 없다고 한다.. iptables 관련 헤더 없음!
* iptables 컴파일 ..
- 그냥 생짜 커널에는 iptables 바이너리만 있고 헤더가 없음.
- 기존 iptables (v1.6.0) 지우고 (apt remove iptables) iptables (v1.6.1)를 직접 컴파일 했음.
- configure
configure에서 요구하는 패키지를 추가로 설치한다.
v1.6.1은 libnftnl 이 필요한데, 우분투 16.04 버전 기준으로 버전이 안맞다.
libnftnl-1.0.7 다운 받아서 라이브러리 설치 (configure/make/make install)
- / make / make install -> iptables 바이너리와 라이브러리, 헤더가 설치된다.
- iptables so (라이브러리) 파일 설치되는 위치 확인할 것 ! (/usr/local/lib/xtables )
- 원래 생짜 버전에서는 /lib/xtables
- 헤더는 iptables.h가 아니라 xtables.h 임! (/usr/local/include/xtables.h)
- /usr/local/sbin/ 에 바이너리가 설치되는데 인식되려면 리붓해야 되는 듯? (which iptables)
* 다시 make
- extension-1.4/libxt_DADDR.c에서 #include<iptables.h> 를 #include<xtables.h> 로
- make / make ipt_libdir=/usr/local/lib/xtables install
- 가이드 대로 명령어 입력시
sudo iptables -t mangle -A INPUT -m dscp --dscp 1 -j DADDR
DADDR 인식 안됨 -> so 파일 정상 설치 안됨
sudo iptables -t mangle -A INPUT -m dscp --dscp 1 -j DADDR --set-daddr=10.0.0.10
안되면 모듈 설치가 안됐을 가능성이 높음
- lsmod | grep DADDR
- 만약 xt_DADDR.ko가 설치되지 않았으면 kmod-xt 폴더에서 inmod xt_DADDR.ko
- sudo iptables -t mangle -L
-------------------------------------------------------------------------------------------------
요약
문제가 iptables -> xtables인 것, iptables의 include 헤더가 설치가 안되있는 거임.
0. iptables 새로 설치
1. extensions-1.4에 iptables.h -> xtables.h
2. iptable 소스 directory 에서 include 파일을 /usr/local/include 에 복사
3. make -> make ipt_libdir=/usr/local/lib/xtables install
4. 이상하게 make install로는 ko가 설치 안됨 ->insmod kmod-xt/xt_DADDR.ko
5. 확인만 하면 끝