뭘 이런걸..

Posted
Filed under Tech/Tip & Trick
GeoIP 를 커널에서 사용하기 위하여 커널을 다시 빌드하는 경우가 많은 듯 싶어, 기존의 커널에 geoip module 만 빌드하는 스크립트를 공개합니다. 모듈만 빌드하는 방법에 대해서는

BuildingKernelModules

의 문서를 참고하면 됩니다. 굳이 커널을 모두 빌드할 필요는 없지요. 이 과정도 귀찮거나.. 또는 영어가 어려우신 분들은 첨부된 파일을 받아서 다음의 과정을 거치면 간단하게 해결이 될 수 있을 겁니다.

1. build script download RHEL/CentOS 4/5 용이 구분이 되어 있으니 구분하여 받으시기 바랍니다. 2. 압축 해제 임의의 디렉토리에서 압축을 해제합니다. 압축을 해제하면 geoip 라는 디렉토리가 생성됩니다. shell> tar xvfpz geoip-patch-o-matic-cent5.tar.gz 3. 커널 빌드 shell> cd geoip shell> ./geoip-check


와 같이 하면 빌드가 되고 등록까지 됩니다. 커널 업데이트에 대비하여 geoip-check 를 다음과 같이 이용할 수도 있습니다. rc.local 에 다음과 같이 등록을 해 놓으면 커널이 변경이 되어 geoip 모듈이 없을 경우 빌드를 하고 올리도록 할 수 있습니다.

/YOUR_PATH/geoip-check >& /dev/null [ $? -eq 0 ] && iptables -A INPUT -m geoip --src-cc CN -j REJECT


파일 받기



RHEL 6 또는 CentOS 6의 경우에는 RPM으로 아예 묶어 놓았으니 이를 이용하시면 되겠습니다.

1. http://mirror.oops.org/pub/AnNyung/2/AnNyung.repo 를 /etc/yum.repos.d 에 다운로드
2. yum clean all
3. yum install kmod-geoip
4. yum update iptables
5. yum install GeoIP
6. geoip-csv2bin

이렇게까지 하시면 사용을 하실 수 있습니다. 6번의 경우 매달 한번씩 실행해 주시면 geoip data가 갱신이 됩니다.
2007/11/22 15:56 2007/11/22 15:56

작성자: 주인장 디지문(http://www.digimoon.net/) 일전에 커널과 iptables 소스를 새로 받아다가 완전히 새로 컴파일하여 geoip 모듈을 탑재하는 걸 포스팅한 적이 있는데 이번엔 기존 커널 & iptables rpm 패키지를 그대로 유지한 채 geoip 모듈만 리빌드하는 방법을 포스팅합니다. rpm으로 기본 탑재된 커널도 충분히 재구실을 하는지라... 사실 커널 소스를 받아 컴파일해서 설치하는 건 요즘 들어선 불필요...

김정균

안녕 리눅스 2에서는 kmod-geoip 로 커널 모듈을 지원합니다. yum install kmod-geoip 하시면 되겠습니다.

움트트움트

저도 so파일이 안생기네요...흠...
CentOS 4, CentOS 5 둘다 테스트 해보는데
똑같은 증상입니다.
왜그런걸까요...?
iptables v1.3.5: Couldn't load match `geoip':/lib/iptables/libipt_geoip.so: cannot open shared object file: No such file or directory

김정균

이 에러는 iptables의 geoip extension이 없어서 발생하는 문제 입니다. 이 글을 iptables의 geoip extension을 알아서 준비하셨거나 하실 거라고 가정을 하고, geoip kernel netfilter module을 빌드하기 위한 방법을 적은 것입니다.

즉, iptables 를 geoip extension을 넣어서 새로 빌드 하셔야 한다는 얘기 입니다. geoip extension은 patch-o-matics 에서 찾으실 수 있는데, 요즘 geoip extension이 있는 사이트가 죽은 모양인지 연결이 안되서, 인터넷을 뒤져야 할 수도 있을 것 같습니다. ^^;

즉, iptables에서 geoip를 사용하기 위해서는 ipbltales geoip extension과 kernel netfilter iptables module 이 필요하고, 이 글은 후자(kernel module)을 빌드하기 위한 글 입니다. (즉, iptblaes에서 geoip를 사용하기 위한 전반적인 내용을 담고 있는 것이 아닙니다.)

http://zosel.idtail.com/

안녕하세요. 오랫만에 찾아 뵙습니다. ^^;;
그동안 잘 지내셨죠.
예전에 얼핏 말씀드린 VPN 서비스는 잘 런칭이 되었습니다.
qos부분 역시 브릿지 방식의 cbq로 약간의 python과 radius server db 연동으로
잘 해결 되었어요. ^^ (oops님의 글이 많은 도움이 되었습니다. [_ _] )


오늘은 최근에 또다른 이슈가 생겨서 방문하게 되었습니다.
DDOS 존을 구축하는 임무를 수행하고 있는데요.
syn_proxy서버 구축 + iptables connlimit를 이용한 세션 제어까지는 마무리 하였습니다.(모두 브리지방식 입니다. ^^)

추가로 해외망 차단 부분을 목적지 아이피 별로 제어를 하고 싶은데요.
바로 적용 되지는 않는듯합니다.
일단 램이 사양이 높아 PAE로 DKMS방식으로 yum 업그레이드 한 상태입니다.
이상태에서 스크립트 내용을 분석해서 필요한 부분만 적용을 해도 .so 파일이 생성되지 않습니다.;;

어떤 부분이 문제가 될까요?

drawhan

iptables -L로 리스트를 확인해봐도 안나오던데.... 어떻게 확인해봐야 할까요?

김정균

GeoIP CentOS 5 용을 업데이트 했습니다. CentOS 5.2 에서 모듈 체크 제대로 못하는 문제와 GeoIP kernel module 의 버그를 fix해서 다시 올립니다.

단풍

geoip 제대로 동작을 하나요?

저 같은 경우는 geoip 데이터베이스에 해당 ip 가 있음에도 불구하고
제대로 동작 하지 않더군요.

예를 들어서 중국 IP 대역을 차단 했는데 국내 몇 IP 도 차단되어서
이 기능을 꺼 놓고 사용 하는대요
(geoip 데이터베이스는 업데이트 해줬습니다.)

김정균

GeoIP Lite 의 경우 국가 database 의 정확성은 90% 라고 나옵니다. 실제 상용을 사용해 본적이 없어서 근거는 없고요 ^^;

그래서 저는 libkrisp 를 만들어서 국내 IP는 이걸 이용하고, libkrisp 가 GeoIP 연동을 하도록 하여, 국외의 IP는 GeoIP database를 사용하도록 해서 사용합니다.

GeoIP 의 정확성에 대해서는 저도 장담을 할 수는 없지요. 국내 IP가 geoiplookup 에서 중국 IP로 나온다면.. GeoIP의 문제가 아니라 GeoIP database 의 문제인 것이겠죠. ^^;