GeoIP 데이터베이스 파일을 이용하면 접근한 IP 주소의 국가, 도시 등의 정보를 얻을 수 있다.
또한, 갱신되는 파일을 주기적으로 업데이트해 줄 필요가 있으므로 자동으로 업데이트 가능하도록 해보자.
geoipupdate 다운로드 링크에서 geoipupdate-3.1.1.tar.gz 파일을 다운로드하여 해당 경로에서 아래 명령들을 순차적으로 수행한다.
$ tar -zxvf geoipupdate-3.1.1.tar.gz
$ cd geoipupdate-3.1.1
$ ./configure
$ make
$ make install
명령 실행중 curl
이나 zlib
이 설치되어 있지 않으면 에러가 발생하므로 설치 후 다시 명령을 수행하면 된다.
# curl 설치
$ yum install curl-devel
# zlib 설치
$ yum install zlib-devel
GeoIP.conf 파일에 계정 정보와 필요한 에디션을 설정한다.
유료 이용자에게는 GeoIP2와 GeoIP Legacy DB를 지원하고, 무료 이용자에게는 GeoLite2 DB만 지원한다. (유료 이용 라이센스 발급)
/usr/local/etc/GeoIP.conf
# Paid
AccountID YOUR_ACCOUNT_ID_HERE
LicenseKey YOUR_LICENSE_KEY_HERE
EditionIDs YOUR_EDITION_IDS_HERE
# Free
AccountID 0
LicenseKey 000000000000
EditionIDs GeoLite2-City GeoLite2-Country
아래 명령을 수행하면 /usr/local/share/GeoIP 경로에 설정한 Edition이 생성된다.
예를 들어, EditionIDs GeoIP2-City 이면 GeoIP2-City.mmdb
파일이 생성된다.
(단, 방화벽을 사용하는 경우에는 DNS와 443포트를 열어줘야 한다.)
$ /usr/local/bin/geoipupdate
실행 스크립트를 crontab
에 설정하여 주기적으로 동작시키고 결과 값을 메일로 전송할 수 있다.
MAILTO=mirotic91@github.com
2 22 * * 4 /usr/local/bin/geoipupdate2
자동으로 업데이트 받는 shell 을 간단히 작성했다. 실행하면 최신 GeoIP2-City.mmdb
파일을 원하는 경로로 이동시킨다.
배포 스크립트에 아래 shell 실행문을 추가해주면 최신 GeoIP를 유지할 수 있다.
#!/bin/bash
/usr/local/bin/geoipupdate
DOWNLOAD_DIR=/usr/local/share/GeoIP
TARGET_DIR=/DATA/GeoIP
mv -f $DOWNLOAD_DIR/GeoIP2-City.mmdb $TARGET_DIR/
chown -R tomcat:tomcat $TARGET_DIR