SNR#2816 GeoIP IPv6 지원 및 데이터 갱신 기능 개선 및 쿼리 명령어 추가

버전: 4.0.2507.0

GeoIP가 개선 및 수정되었습니다.

  1. IPv6 주소 지원 개선

    • IPv6 주소에 대한 GeoIP 조회가 정상적으로 작동하도록 수정했습니다.
    • 패치 이후 실제 IPv6 주소에 해당하는 정확한 GeoIP 정보를 표시합니다.
  2. GeoIP 데이터 갱신 실패 문제 해결

    • 로그프레소 셸에서 geoip.updateFromInternet 명령 실행 시 발생하던 update failure: zip file is empty 오류를 수정했습니다. 이전에 발생했던 오류 로그는 다음과 같습니다.

      [2025-01-08 09:57:37,541] ERROR (GeoIpServiceImpl2) - araqne-geoip: exception while updating database from internet: https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-ASN-CSV&license_key=LICENSE_KEY&suffix=zip
      java.util.zip.ZipException: zip file is empty
              at java.base/java.util.zip.ZipFile$Source.zerror(ZipFile.java:1776)
              at java.base/java.util.zip.ZipFile$Source.findEND(ZipFile.java:1572)
              at java.base/java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1666)
              at java.base/java.util.zip.ZipFile$Source.<init>(ZipFile.java:1470)
              at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1433)
              at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:743)
              at java.base/java.util.zip.ZipFile$CleanableResource.get(ZipFile.java:860)
              at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:258)
              at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:187)
              at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:201)
              at org.araqne.geoip.impl2.GeoIpServiceImpl2.__M_unzipFile(GeoIpServiceImpl2.java:243)
              at org.araqne.geoip.impl2.GeoIpServiceImpl2.unzipFile(GeoIpServiceImpl2.java)
              at org.araqne.geoip.impl2.GeoIpServiceImpl2.__M_updateDatabaseFromInternet(GeoIpServiceImpl2.java:503)
              at org.araqne.geoip.impl2.GeoIpServiceImpl2.updateDatabaseFromInternet(GeoIpServiceImpl2.java)
              at org.araqne.geoip.impl.GeoIpScript.updateFromInternet(GeoIpScript.java:84)
              at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.base/java.lang.reflect.Method.invoke(Method.java:566)
              at org.araqne.console.ScriptRunner.invokeScript(ScriptRunner.java:224)
              at org.araqne.console.ScriptRunner.run(ScriptRunner.java:205)
              at java.base/java.lang.Thread.run(Thread.java:829)
      
    • 데이터 갱신 프로세스의 안정성을 개선했습니다.

  3. ASN 정보만 있는 IP 조회 실패 문제 해결

    • City 정보가 없는 IP 주소에 대해 조회가 실패하던 문제를 수정했습니다.

    • 예: 1.1.1.1과 같은 IP 주소도 정상 조회됩니다.

      GeoIP 룩업 조회

  4. GeoIP 접속 프로파일 기능 추가

    • 접속 프로파일에 GeoIP 유형이 새롭게 추가되었습니다.

    • 기존에는 각 노드마다 GeoIP 라이선스를 개별 설정해야 했지만, 이제는 하나의 접속 프로파일만 설정하면 전체 노드에서 공유됩니다

      GeoIP 접속 프로파일

  5. GeoIP 전용 쿼리 명령어 추가

    • GeoIP 데이터를 보다 유연하게 관리할 수 있도록 다음 명령어가 추가되었습니다.

      • geoip-update type=TYPE

        • country, city, asn 중 하나를 TYPE으로 지정하여 해당 데이터만 선택적으로 갱신할 수 있습니다.
        • 기존 geoip.updateFromInternet 명령과 동일한 동작을 수행합니다.
      • geoip-purge

        • 오래되거나 불필요한 GeoIP 데이터를 삭제합니다.