yum으로 설치한 GeoIP 또는 소스 컴파일 한 GeoIP.dat 파일 데이터베이스 업데이트
기본 yum으로 받은 데이터파일에는 몇개의 아이피가 조회가 안되는 부분이 있었다
[root@ns1 ~]# geoiplookup 112.159.157.47
GeoIP Country Edition: IP Address not found
다른곳에서 확인해 보니 국내 아이피다
GeoIP.dat / GeoIPCity.dat / GeoIPASNum.dat 최신 파일로 업데이트 하기 / GeoLite2 이용
O/S : CentOS 7.x만약 O/S 버전이 CentOS 6.x 버전이다면 아래 링크에서 확인
GeoIP.dat GeoIPCity.dat 파일 업데이트 CentOS 6 (GeoLite2 이용한 geoip geoipcity 파일 최신 파일로 업데이트)
만약 아래 부분을 다 무시하고 최신 데이터를 다운 받아 보고 싶다면 아래 링크에서 다운 받으면 된다 ( 매달 6일 업데이트 )
https://xinet.kr/data/geoip/GeoIP.dat
https://xinet.kr/data/geoip/GeoIPASNum.dat
https://xinet.kr/data/geoip/GeoIPCity.dat
maxmind에서 기존에 Geolite2를 무료로 제공을 했는데 2019년 12월 30일부로 정책이 변경되어 아무나 다운로드 받는 방식이 아닌 회원 가입 후 라이센스를 발급 받아 다운로드 하는 방식으로 변경되었다.
아래 내용처럼 변경되었다는 것을 공시하고 있다.
Due to upcoming data privacy regulations, we are making significant changes to how you access free GeoLite2 databases starting December 30, 2019. Learn more on our blog.
블로그 주소 : https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/
1. 회원가입 해당 페이지로 들어가서 회원 가입을 진행한다
https://www.maxmind.com/en/geolite2/signup
2. 회원 가입을 하면 등록된 이메일로 이메일이 하나 받아보는데 해당 파일의 password here 부분을 클릭을 한다 ( 패스워드 지정)
3. set password 지정창이 나타나면 패스워들 지정한다 / 토큰번호는 자동으로 생성이 되며 별도 복사 할 필요가 없다.
4. 패스워드를 지정하고 로그인 창 화면이 나타나면 username에는 등록된 이메일 주소 / 그리고 지정한 패스워드를 입력하면 된다.
5.maxmind.com 페이지 로그인 후 촤측 메뉴중에 My license Key 메뉴를 클릭한다.
6. Generate new license key 버튼을 클릭한다.
7. License key description 항목에 저당한 키값을 입력한다 / geoipupdate 부분을 활용할거냐 선택창이 나타나면 기본값으로 두고 하단 confirm 을 클릭
8. new license key 가 발급되었으며 account id 와 license key는 꼭 별도로 복사해서 보관을 해야한다. ( 해당 값을 가지고 추후 다운로드를 진행하게 된다)
9. 좌측 메뉴중에 Download Files 항목을 클릭한다.
10. GeoLite2 데이터베이스를 제공하고 내가 필요한 파일은 csv으로 포맷된 형식의 파일을 이용하게 되므로 해당 파일을 다운로드 하면 된다
11. 근데 매번 데이터베이스 파일을 업데이트 할때마다 웹페이지 들어와서 다운로드 하고 그러면 수동으로 되기 때문에 자동으로 업데이트를 진행하기 위해서
링크를 이용해서 다운로드를 진행 할 수 있다. zip 마우스 오른쪽 버튼을 누르고 링크 주소 복사를 선택한다.
그럼 다음과 같은 링크 주소가 복사가 된다
1 |
https://download.maxmind.com/app/geoip_download_by_token?edition_id=GeoLite2-Country-CSV&date=20200128&token=v2.local.rls3nzzj8PyiOvYk-uecmzndPwa74rPEZSucM_z8UzRhzEhjHppvMfUcWX3ChFQUTv7mdc2-e5QJQyu01E86qg-F2xow6nhON9-vmJl0l3EHR5PxYtq생략---------pbb9j82urI3CSFJyJ&suffix=zip |
자동으로 파일을 다운로드 받기 위해서 ( wget , curl ) 을 위 링크주소에서 아래 부분을 수정하고 다운 받으면 된다
geoip_download_by_token —> geoip_download
token=XXXX —> license_key=YOUR_LICENSE_KEY
date= —> 삭제
그럼 wget으로 다운을 받아보자 이런식으로 변경을 해서 다운로드를 받으면 된다.
1 2 3 4 5 |
wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=라이센스번호&suffix=zip" -O GeoLite2-Country-CSV.zip wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City-CSV&license_key=라이센스번호&suffix=zip" -O GeoLite2-City-CSV.zip wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN-CSV&license_key=라이센스번호&suffix=zip" -O GeoLite2-ASN-CSV.zip |
그럼 이제 주로 사용하는 GeoIP.dat / GeoIPCity.dat / GeoIPASNum.dat 파일을 최신 데이터로 변경해 보자
( GeoIP.dat / GeoIPCity.dat / GeoIPASNum.dat update)
1. 설치에 앞서 python-ipaddr 패키지가 필요하므로 해당 패키지를 설치 진행한다
1 |
[root@xinet ~]# yum -y install python-ipaddr.noarch |
2. git에서 파일을 다운로드 한다 ( CSV 파일을 가지고 dat 파일을 변환하는 소스들이다)
1 |
[root@xinet ~]# git clone https://github.com/sherpya/geolite2legacy.git |
3. 파일을 다운로드 후 실제 GeoLite2 zip 파일을 다운로드 한다
1 2 3 4 5 6 7 |
[root@xinet ~]# cd geolite2legacy [root@xinet geolite2legacy]# wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=라이센스번호&suffix=zip" -O GeoLite2-Country-CSV.zip [root@xinet geolite2legacy]# wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City-CSV&license_key=라이센스번호&suffix=zip" -O GeoLite2-City-CSV.zip [root@xinet geolite2legacy]# wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN-CSV&license_key=라이센스번호&suffix=zip" -O GeoLite2-ASN-CSV.zip |
4. 파일 다운로드 후 geolite2legacy.py 명령어를 이용하여 dat 파일을 추출한다 / 다소 시간 필요
1 2 3 4 5 |
[root@xinet geolite2legacy]# ./geolite2legacy.py -i GeoLite2-City-CSV.zip -f geoname2fips.csv -o GeoIPCity.dat [root@xinet geolite2legacy]# ./geolite2legacy.py -i GeoLite2-Country-CSV.zip -f geoname2fips.csv -o GeoIP.dat [root@xinet geolite2legacy]# ./geolite2legacy.py -i GeoLite2-ASN-CSV.zip -o GeoIPASNum.dat |
5.파일을 다 추출하였으면 기존 /usr/share/GeoIP 폴더에 있는 해당 파일들을 삭제 후 복사 해준다
1 2 3 4 5 6 7 |
[root@xinet geolite2legacy]# rm -f /usr/share/GeoIP/GeoIP.dat [root@xinet geolite2legacy]# rm -f /usr/share/GeoIP/GeoIPCity.dat [root@xinet geolite2legacy]# rm -f /usr/share/GeoIP/GeoIPASNum.dat [root@xinet geolite2legacy]# cp -a *.dat /usr/share/GeoIP/ |
6. 확인을 하게 되면 자료는 2020년 2월 3일로 변경된 것을 확인 할 수 있다
1 2 3 4 5 6 7 8 |
[root@xinet geolite2legacy]# ls -l /usr/share/GeoIP/GeoIP.dat -rw-r--r-- 1 root root 2139237 2월 3 15:00 /usr/share/GeoIP/GeoIP.dat [root@xinet geolite2legacy]# ls -l /usr/share/GeoIP/GeoIPCity.dat -rw-r--r-- 1 root root 23497721 2월 3 14:59 /usr/share/GeoIP/GeoIPCity.dat [root@xinet geolite2legacy]# ls -l /usr/share/GeoIP/GeoIPASNum.dat -rw-r--r-- 1 root root 5231990 2월 3 15:01 /usr/share/GeoIP/GeoIPASNum.dat |
7. 그럼 이제 해당 파일을 주기적으로 업데이트 될 수 있게 스크립트를 만들어 보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
[root@xinet ~]# mkdir /shell [root@xinet ~]# vi /shell/geoip_update.sh #!/bin/bash cd /root/geolite2legacy rm -f *.zip rm -f *.dat wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=라이센스번호&suffix=zip" -O GeoLite2-Country-CSV.zip sleep 1 wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City-CSV&license_key=라이센스번호&suffix=zip" -O GeoLite2-City-CSV.zip sleep 1 wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN-CSV&license_key=라이센스번호&suffix=zip" -O GeoLite2-ASN-CSV.zip sleep 1 ### change /root/geolite2legacy/geolite2legacy.py -i /root/geolite2legacy/GeoLite2-Country-CSV.zip -f /root/geolite2legacy/geoname2fips .csv -o /root/geolite2legacy/GeoIP.dat sleep 1 /root/geolite2legacy/geolite2legacy.py -i /root/geolite2legacy/GeoLite2-City-CSV.zip -f /root/geolite2legacy/geoname2fips.cs v -o /root/geolite2legacy/GeoIPCity.dat sleep 1 /root/geolite2legacy/geolite2legacy.py -i /root/geolite2legacy/GeoLite2-ASN-CSV.zip -o /root/geolite2legacy/GeoIPASNum.dat sleep 1 ### old dat file delete and copy rm -f /usr/share/GeoIP/GeoIP.dat rm -f /usr/share/GeoIP/GeoIPCity.dat rm -f /usr/share/GeoIP/GeoIPASNum.dat cp -a /root/geolite2legacy/*.dat /usr/share/GeoIP/ |
8. 퍼미션 수정 및 crontab 등록
1 2 3 4 5 6 7 8 9 10 11 |
[root@xinet ~]# chmod 700 /shell/geoip_update.sh [root@xinet ~]# crontab -e ### GeoIP Update 10 03 6 * * /shell/geoip_update.sh ### cron 재시작 [root@xinet ~]# systemctl restart crond |
매달 6일 오전 3시 10분에 되게 등록해 두었다.