GeoIP와 GeoSite: IP 데이터와 도메인 분류 구분하기

mihomo는 지리 데이터를 활용해 규칙별로 트래픽을 분기합니다. GeoIP는 대상 IP를 기준으로 국가·지역 또는 데이터 소스가 정의한 주소 집합을 조회하고, GeoSite는 대상 도메인이 속한 서비스 분류를 조회합니다. 데이터베이스는 규칙에 사용할 매칭 정보를 제공하며, 일치한 뒤 어떤 아웃바운드 정책을 적용할지는 규칙이 결정합니다. 데이터베이스를 업데이트해도 규칙 순서가 자동으로 바뀌지는 않습니다.

데이터 유형주요 파일규칙 및 용도
GeoIP DATgeoip.datGEOIP,CN,DIRECT는 IP 집합을 조회합니다.
GeoIP MMDBCountry.mmdbMMDB 모드에서 GEOIP 조회에 사용
GeoSitegeosite.datGEOSITE,google,노드 선택은 도메인 분류를 조회합니다.

geodata-mode: true로 설정하면 GEOIP에 DAT 데이터를 사용하고, false로 설정하면 MMDB 데이터를 사용합니다. 이 옵션은 GeoIP 데이터 형식을 선택하는 설정이며, 끄면 모든 GeoSite 규칙이 작동하지 않는다는 뜻은 아닙니다. GeoSite 규칙에는 여전히 해당 도메인 데이터베이스가 필요합니다.

업데이트 전 확인 사항: 코어, 현재 설정, 데이터 소스

FlClash는 클라이언트이며, 실제로 규칙을 처리하는 것은 코어입니다. 이 문서의 설정 항목은 mihomo를 기준으로 설명합니다. 이전 버전의 Clash 코어나 다른 클라이언트에서는 일부 옵션을 지원하지 않을 수 있습니다. 문제를 확인할 때는 구독 링크의 원본 내용만 볼 것이 아니라 클라이언트와 코어 버전을 기록하고 현재 적용된 설정을 확인하세요.

  1. 코어 확인. 클라이언트의 버전 정보나 시작 로그에서 mihomo 사용 여부를 확인하고 버전 번호를 기록하세요. 해당 버전의 설정 문서와 비교할 때 필요합니다.
  2. 설정 확인. FlClash의 ‘설정’ 페이지에서 현재 선택된 설정을 확인하세요. 오버라이드나 설정 병합 기능을 적용했다면 최종적으로 코어에 전달되는 설정을 기준으로 확인해야 합니다.
  3. 모드 확인. geodata-mode를 확인하세요. DAT 모드에서는 geoip.dat를 업데이트하고, MMDB 모드에서는 실제로 사용하는 MMDB 파일을 업데이트합니다.
  4. 규칙 유형 확인. GEOIP, GEOSITE, RULE-SET을 검색하세요. 원격 규칙 세트만 사용하는 설정이라면 동일한 지리 데이터베이스에 의존하지 않을 수 있습니다.

구독 업데이트와 데이터베이스 업데이트는 별개의 작업입니다. 구독을 새로고침하면 보통 노드, 정책 그룹, 설정 텍스트가 업데이트됩니다. 반면 지리 데이터베이스는 코어나 클라이언트의 데이터 업데이트 기능에서 관리합니다. 노드 목록이 갱신됐다고 GeoSite 데이터까지 갱신된 것은 아닙니다.

자동 업데이트: mihomo 설정에서 24시간 간격 지정

아래는 MetaCubeX의 공개 DAT 데이터 소스를 사용하는 최상위 설정 예시입니다. 노드와 정책 그룹까지 포함한 완성된 설정이 아니라 기존 설정에 병합할 일부 항목입니다. 각 항목은 rules, dns 등 최상위 항목과 같은 들여쓰기 수준에 있어야 합니다.

geodata-mode: true
geo-auto-update: true
geo-update-interval: 24

geox-url:
  geoip: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat"
  geosite: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat"

기존 설정에 geox-url이 있다면 하위 항목을 병합하고, 계속 사용하는 다른 소스는 유지하세요. 같은 이름의 최상위 키를 중복으로 추가하지 마세요. MMDB 모드에서는 해당하는 geox-url.mmdb를 설정해야 합니다. DAT 주소를 MMDB 항목에 입력하면 안 됩니다.

구독 설정은 유지되는 오버라이드로 저장하세요

클라이언트가 다운로드한 구독 파일을 직접 수정하면 다음 구독 새로고침 때 변경 사항이 덮어써질 수 있습니다. 현재 FlClash 버전에서 오버라이드 유지 또는 설정 병합 기능을 제공한다면 해당 기능에 위 항목을 저장하세요. 메뉴 위치와 이름은 버전에 따라 다를 수 있으므로 실제 화면을 기준으로 확인해야 합니다. 로컬 설정을 사용한다면 직접 관리하는 YAML 파일을 수정하세요.

저장한 뒤 설정을 다시 불러오고, 필요한 경우 코어를 재시작한 다음 로그에 설정 구문 오류가 있는지 확인하세요. 자동 업데이트는 코어가 실행 중이고 네트워크에 연결되어 있어야 합니다. 기기가 절전 상태이거나 클라이언트가 종료됐거나 다운로드에 실패하면 24시간마다 반드시 업데이트된다고 보장할 수 없습니다.

수동 업데이트: 클라이언트 기능 사용 및 로컬 파일 교체

먼저 클라이언트의 데이터 업데이트 기능을 사용하세요

현재 클라이언트에 GeoIP, GeoSite 또는 지리 데이터베이스 업데이트 기능이 있다면 먼저 어떤 형식을 업데이트하는지 확인한 뒤 실행하세요. FlClash는 버전에 따라 기능 위치와 업데이트 가능한 항목이 다를 수 있습니다. ‘설정’ 페이지의 구독 새로고침 버튼을 지리 데이터베이스 업데이트 버튼으로 착각하지 마세요.

  1. 현재 사용할 수 있는 설정과 데이터베이스를 백업하고, 업데이트 전 파일 수정 시간을 기록하세요.
  2. 클라이언트의 지리 데이터 업데이트 기능을 실행하고 완료 알림을 기다리세요. 다운로드 및 로드 결과도 로그에서 확인합니다.
  3. 클라이언트에서 설정을 다시 불러오거나 코어를 재시작하라고 안내하면 그대로 진행해 새 데이터가 이후 매칭에 반영되도록 하세요.
  4. 테스트 웹사이트의 기존 연결을 닫고 다시 접속한 다음, 연결 기록에서 매칭된 규칙과 실제 아웃바운드를 확인하세요.

클라이언트에 업데이트 기능이 없다면 코어가 실제로 읽는 파일을 교체하세요

데스크톱에서는 데이터 디렉터리를 확인한 뒤 파일을 직접 교체할 수 있습니다. 시작 로그, 코어 시작 인자 또는 클라이언트의 디렉터리 메뉴에서 작업 디렉터리를 찾으세요. mihomo를 독립 실행하는 경우 -d로 해당 디렉터리를 지정할 수 있습니다. 클라이언트는 구독 파일과 코어 데이터를 별도 위치에 저장할 수 있으므로 파일명이 같다는 이유만으로 경로를 판단하면 안 됩니다.

클라이언트를 종료하거나 코어를 중지한 뒤 기존 파일을 백업 디렉터리로 옮기고, 다운로드가 완료된 새 파일을 실제 데이터 디렉터리에 넣으세요. DAT 모드에서는 보통 geoip.dat와 geosite.dat를 사용합니다. MMDB 모드에서는 코어가 읽는 기존 파일명을 그대로 사용하고 Linux 파일명의 대소문자에 유의하세요. 작업이 끝나면 코어를 실행하고 데이터 로드 로그를 확인합니다.

GEOIP·GEOSITE 규칙 작성법과 매칭 순서

mihomo의 일반 규칙은 위에서 아래 순서로 적용되며, 보통 처음 일치하는 규칙의 정책이 선택됩니다. 아래 예시는 기존 설정에 ‘노드 선택’이라는 정책 그룹이 정의되어 있다고 가정합니다. 실제 그룹 이름이 다르면 함께 변경하세요. 예시는 기존 규칙 목록에 병합하고, rules 키를 중복으로 만들지 마세요.

rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - GEOSITE,google,노드 선택
  - GEOIP,private,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,노드 선택

no-resolve는 해당 규칙에서 추가 DNS 조회를 방지합니다

GEOIP 규칙에 no-resolve를 추가하면 도메인만 있는 요청을 매칭할 때 해당 규칙이 DNS 조회를 직접 시작하지 않습니다. 대상이 이미 IP이거나 요청에 사용할 수 있는 IP가 있다면 주소 매칭은 여전히 수행될 수 있습니다. 이 옵션은 클라이언트 전체의 DNS를 끄지 않으며, 모든 도메인 요청을 해당 규칙으로 처리해 주지도 않습니다.

GeoSite를 사용하려면 도메인 정보를 확인할 수 있어야 합니다. 앱이 IP에 직접 연결하거나 도메인 스니핑에 실패하거나 트래픽 처리 방식에서 도메인 정보가 보존되지 않으면 도메인 분류 규칙이 적용되지 않을 수 있습니다. TUN은 트래픽을 가로채는 기능이지 모든 연결의 도메인을 복원해 주는 기능은 아닙니다. DNS, Fake-IP, 스니핑 설정도 함께 확인해야 합니다.

업데이트 실패 및 규칙 미적용: 로그로 원인 찾기

증상우선 확인할 항목해결 방법
다운로드 시간 초과데이터 소스 도메인 조회, HTTPS 연결, 시작 시 사용할 수 있는 아웃바운드사용 가능한 설정으로 네트워크 연결을 복구한 뒤 데이터베이스를 업데이트하세요
파일 파싱 실패파일 형식이 올바른지, 다운로드한 내용이 실제 파일이 아니라 웹페이지인지 확인해당 DAT 또는 MMDB 파일을 다시 다운로드하고, 백업을 복원한 뒤 재시도하세요
분류 로드 실패데이터 소스에 규칙에서 참조하는 분류명이 있는지 확인분류 목록을 확인해 규칙을 수정하거나 맞는 데이터 소스를 선택하세요
업데이트에 성공했지만 트래픽 분기가 그대로임앞서 적용되는 규칙, 아웃바운드 모드, 기존 연결, 실제 데이터 디렉터리규칙 모드로 전환하고 새 연결을 만든 뒤 적용된 규칙을 확인하세요

아직 로드되지 않은 데이터에 다운로드가 의존하지 않도록 하세요

처음 실행할 때 데이터베이스가 없고, 다운로드에 해당 데이터베이스를 읽어야 초기화되는 규칙이 필요하다면 시작과 다운로드가 서로 의존하는 상황이 생길 수 있습니다. 이때는 우선 실행 가능한 간단한 설정으로 연결을 구성하거나 데이터 파일을 직접 준비한 뒤 정식 규칙을 다시 적용하세요. 구독을 반복해서 새로고침해도 이런 의존성 문제는 해결되지 않는 경우가 많습니다.

RULE-SET과 GeoSite의 업데이트 주기는 서로 다릅니다

RULE-SET은 rule-providers에 정의된 규칙 세트를 참조하며, 업데이트 소스와 주기는 해당 provider가 관리합니다. 예를 들어 HTTP provider의 interval: 86400은 86400초, 즉 24시간을 의미합니다. geo-update-interval: 24의 단위인 시간과 다릅니다. geosite.dat를 업데이트해도 모든 provider가 함께 갱신되지는 않습니다.

업데이트 후 확인: 새 연결에서 적용된 규칙 점검

데이터베이스 다운로드 성공은 첫 단계일 뿐입니다. 확인하려면 클라이언트를 규칙 모드로 설정하고, 설정에 명확한 분류가 있는 도메인을 선택하세요. 기존 페이지 연결을 닫고 다시 접속한 뒤 연결 상세 정보나 로그에서 대상 도메인, 대상 IP, 매칭 규칙, 아웃바운드 정책을 확인합니다. 전역 모드에서는 예상한 규칙 분기를 확인할 수 없으므로 이 테스트에 적합하지 않습니다.

  1. 로드 결과 확인: 파일 누락, 분류 누락, 데이터 파싱 오류가 없는지 확인하세요.
  2. 매칭 순서 확인: 앞쪽 도메인 규칙에 일치하면 GEOIP 데이터를 업데이트해도 해당 연결의 정책은 바뀌지 않습니다.
  3. 새 연결 확인: 이미 연결된 TCP 장기 연결은 데이터베이스 업데이트 직후 다른 경로로 전환되지 않는 것이 일반적입니다.
  4. 결과 예상: IP의 지리적 위치와 도메인 서비스 분류는 서로 다른 기준입니다. CDN 주소가 바뀌면 GEOIP 판정에도 영향을 줄 수 있습니다.

평소에는 24시간 자동 업데이트를 설정하고, 문제가 발생하면 수동 업데이트 후 로그를 확인하세요. 업데이트 후 문제가 생기면 이전 데이터베이스와 원래 설정을 복원한 다음 데이터 소스, 분류, 규칙 순서를 항목별로 비교합니다. 기본 사용법은 FlClash 설정 가이드에서 확인할 수 있습니다. DNS, 모드, 연결 문제는 문제 해결을 참고해 계속 확인하세요.