Clash GeoIP·GeoSite 데이터베이스 업데이트: 출처, 자동 업데이트, 규칙 설정

GeoIP·GeoSite 데이터 파일의 출처와 용도를 살펴보고, mihomo 자동 업데이트 설정, 수동 교체 경로, GEOSITE 규칙 작성법을 안내합니다.

1. GeoIP, GeoSite, 규칙 세트의 차이

Clash 설정에서 지역별 트래픽을 분리할 때 클라이언트가 그 자리에서 웹사이트의 국가를 판별하는 것은 아닙니다. 커널이 데이터 파일을 불러와 사용합니다. GeoIP는 대상 IP를 지역이나 분류와 연결하고, GeoSite는 도메인을 사이트 분류와 연결합니다. 서로 다른 데이터를 갱신하므로 한 파일로 다른 파일을 대신할 수 없습니다.

이 문서의 설정은 mihomo를 기준으로 합니다. mihomo는 기존 Clash.Meta에서 발전한 커널입니다. 사용 전에 클라이언트의 ‘정보’ 또는 커널 정보 화면에서 실제 커널 이름과 버전을 확인하세요. 화면에 Clash라고 표시되어도 하위 커널이 이 문서의 모든 설정을 지원하는 것은 아닙니다. 구버전 Clash 커널에 mihomo의 GeoSite 및 자동 업데이트 설정을 그대로 적용하지 마세요.

데이터 유형매칭 대상주요 파일 및 설정
GeoIP, MMDB 형식IPv4·IPv6 주소의 지역Country.mmdb;geodata-mode: false
GeoIP, DAT 형식IP 주소의 지역 또는 데이터 출처별 분류geoip.dat;geodata-mode: true
GeoSite도메인 모음(예: cn, geolocation-!cn)geosite.dat; GEOSITE 규칙에서 사용
규칙 제공자사용하는 규칙 세트에 따라 다름rule-providers 및 RULE-SET; 별도 업데이트

데이터베이스를 업데이트해도 트래픽 분기 규칙은 바뀌지 않습니다

데이터베이스는 ‘이 도메인이나 IP가 어떤 집합에 속하는지’를 알려주고, 규칙은 ‘매칭된 뒤 어디로 보낼지’를 정합니다. 예를 들어 GEOSITE,cn,DIRECT에서 cn은 데이터베이스의 분류이고 DIRECT는 규칙이 지정한 출구입니다. 데이터를 업데이트하면 집합의 내용은 달라질 수 있지만, 직결이 프록시로 바뀌거나 규칙 순서가 자동 조정되지는 않습니다.

2. 데이터 출처와 파일 형식 선택

대표적인 데이터 출처로는 커뮤니티가 관리하는 도메인 분류 프로젝트, 지역별 IP 데이터 프로젝트, 그리고 이러한 원본 데이터를 재구성해 컴파일하는 배포 저장소가 있습니다. 예를 들어 MetaCubeX/meta-rules-dat는 mihomo에서 사용할 수 있는 여러 빌드 파일을 제공합니다. ‘출처’는 두 단계로 나누어 보세요. 배포 저장소는 다운로드 파일을 제공하고, 원본 프로젝트는 분류 내용을 결정합니다. 두 곳의 업데이트 주기는 다를 수 있습니다.

  • 먼저 형식을 정하세요: DAT 모드라면 geoip 주소를 설정하고, MMDB 모드라면 mmdb 주소를 설정합니다. 파일 이름만 바꿔서는 형식이 변환되지 않습니다.
  • 분류 이름도 확인하세요: cn 같은 태그가 실제 데이터에 포함되어 있어야 합니다. 출처마다 사이트·광고·서비스 분류가 다를 수 있습니다.
  • 신뢰할 수 있는 출처를 고정하세요: 저장소, 배포 경로, 다운로드 날짜를 기록해 두세요. 업데이트에 실패할 때마다 출처가 불분명한 미러 파일로 바꾸지 마세요.
  • 다운로드 형식을 구분하세요: 웹페이지, 압축 파일, YAML 규칙 세트, MRS 규칙 세트, DAT 데이터베이스는 용도가 다르므로 서로 대체할 수 없습니다.

geolocation-!cn은 데이터 세트에서 정의한 도메인 분류입니다. 커널이 실행 중에 모든 도메인을 대상으로 ‘중국이 아님’을 판별하는 것은 아닙니다. 알 수 없는 도메인은 이 분류에 포함되지 않을 수 있습니다. 마찬가지로 GeoIP의 국가·지역 표시는 IP 데이터의 귀속을 나타내며, 웹사이트 운영 주체나 콘텐츠 언어, 실제 접속 경로와 반드시 일치하지는 않습니다.

3. mihomo 자동 업데이트 설정

아래 예시는 DAT 모드를 사용하며 자동 업데이트 간격은 24시간입니다. 다음 항목은 YAML 최상위에 두고 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"
  mmdb: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/country.mmdb"

geo-auto-update는 커널의 지리 데이터베이스 자동 업데이트를 활성화합니다. geo-update-interval의 단위는 초가 아니라 시간입니다. 위 예시의 mmdb 주소는 형식을 전환할 때 사용할 수 있도록 둔 것이며, 현재 DAT 모드에서 GeoIP 데이터 두 종류를 동시에 사용한다는 뜻은 아닙니다. 실제 다운로드 동작은 커널 버전, 활성화된 기능, 클라이언트의 관리 방식에 따라 달라질 수 있으므로 실행 로그를 확인하세요.

MMDB 모드를 유지하면서 설정을 바꾸려면

기존 설정에서 Country.mmdb를 정상적으로 사용하고 있다면, 위 예시의 첫 줄을 geodata-mode: false로 바꾸고 geox-url.mmdb는 그대로 두면 됩니다. 데이터베이스 업데이트를 위해 데이터 모드를 전환할 필요는 없습니다. 모드를 바꾼 뒤에는 해당 파일이 있는지 확인하고, 기존 GeoIP 분류가 계속 지원되는지도 점검하세요.

구독 업데이트 후에도 설정 유지하기

  1. 현재 적용 중인 설정을 백업하고 기존 업데이트 항목 세 개를 기록합니다.
  2. 클라이언트의 덮어쓰기·병합·확장 설정 메뉴에서 최상위 항목을 추가합니다. 메뉴 이름은 클라이언트마다 다릅니다. 예시를 ‘노드 구독 주소’ 입력란에 붙여 넣지 마세요.
  3. 설정을 다시 불러온 뒤 커널 시작 로그에서 알 수 없는 항목, 다운로드 실패, 데이터 파싱 오류가 있는지 확인합니다.
  4. 클라이언트에 표시되는 실행 설정을 열어 해당 항목이 구독 템플릿에 덮어쓰이지 않았는지 확인하고, 다음 구독 업데이트 후에도 다시 점검합니다.

4. 데이터베이스 수동 교체와 작업 디렉터리

수동 업데이트에서 가장 흔한 실수는 다운로드가 아니라 잘못된 디렉터리를 찾는 것입니다. 클라이언트의 구독 설정 디렉터리, UI 프로그램 디렉터리, 커널 작업 디렉터리는 서로 다를 수 있습니다. 시작 인수나 로그에 표시된 디렉터리 정보를 확인하거나 클라이언트의 데이터 디렉터리 메뉴를 이용하세요. 이름이 같은 파일을 하나 찾았다고 해서 실제로 사용 중인 파일이라고 단정할 수는 없습니다.

시작 인수로 실제 경로 확인하기

독립 실행형 mihomo에서는 -d 옵션으로 작업 디렉터리를 명시할 수 있습니다. 아래는 사용자 지정 설치 예시이며 모든 데스크톱 클라이언트의 기본 경로를 나타내지는 않습니다.

# Linux: 작업 디렉터리는 /home/lin/.config/mihomo
mihomo -d /home/lin/.config/mihomo

# Windows PowerShell: 작업 디렉터리는 C:\mihomo\data
.\mihomo.exe -d C:\mihomo\data

위 Linux 예시에서 일반적인 대상 경로는 /home/lin/.config/mihomo/geoip.dat, /home/lin/.config/mihomo/geosite.dat이며, MMDB 모드에서는 /home/lin/.config/mihomo/Country.mmdb를 사용합니다. 기존 설정이나 클라이언트가 다른 데이터 경로를 지정했다면 실제 설정을 기준으로 삼으세요. Linux는 파일 이름의 대소문자를 구분하므로 다운로드한 country.mmdb와 커널이 사용하는 Country.mmdb의 이름이 일치해야 합니다.

파일 교체 순서

  1. 현재 상태 기록: 적용 중인 설정, 데이터 출처 주소, 파일 수정 시간, 현재 정상 동작을 확인한 테스트 결과를 저장합니다.
  2. 임시 위치에 파일을 완전히 다운로드: 사용 중인 파일을 바로 덮어쓰지 마세요. 다운로드한 파일이 배포 결과물인지, 오류 페이지나 저장소 파일 미리보기 페이지가 아닌지 확인합니다.
  3. 커널 중지: 데스크톱 클라이언트에서는 서비스 중지 또는 종료 기능을 사용하고, 컨테이너 배포에서는 해당 컨테이너를 중지합니다. 설정 창만 닫아서는 백그라운드 커널이 중지되지 않는 경우가 많습니다.
  4. 백업 후 교체: 기존 파일을 geosite.dat.bak처럼 다른 이름으로 저장한 다음 새 파일을 넣습니다. Linux 서비스 계정에는 작업 디렉터리 읽기 권한이 필요하며, 자동 업데이트를 사용한다면 쓰기 권한도 필요합니다.
  5. 재시작 후 확인: 파일 로드 로그와 규칙 매칭 결과를 확인합니다. 커널이 데이터를 캐시할 수 있으므로 디스크 파일만 교체해도 실행 중인 데이터가 즉시 새로고침된다고 보장할 수 없습니다.

컨테이너 환경에서는 호스트 디렉터리와 컨테이너 내부 작업 디렉터리의 마운트 관계도 확인해야 합니다. 호스트에서 컨테이너에 마운트되지 않은 동명 파일을 교체해도 컨테이너 내부 데이터에는 영향을 주지 않습니다. 업데이트 후 파싱 오류가 발생하면 먼저 커널을 중지하고 백업을 복원한 뒤 재시작하세요. 그런 다음 새 파일의 출처와 형식을 확인합니다.

5. GEOSITE·GEOIP 규칙 작성법

아래 규칙 예시는 기존 설정에 프록시 출구라는 이름의 사용 가능한 정책 그룹이 정의되어 있다고 가정합니다. 붙여 넣기 전에 이 이름을 실제 정책 그룹 이름과 정확히 일치시키세요. 규칙은 위에서 아래 순서로 매칭되며, 앞선 규칙에 일단 매칭되면 더 적절한 출구를 찾기 위해 아래 규칙을 계속 확인하지 않습니다.

rules:
  - GEOSITE,cn,DIRECT
  - GEOSITE,geolocation-!cn,프록시 출구
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,프록시 출구
  • GEOSITE,cn,DIRECT: 도메인이 데이터베이스의 cn 집합에 속하면 직접 연결합니다.
  • GEOSITE,geolocation-!cn,프록시 출구: 데이터 출처의 해당 분류에 속하는 도메인을 매칭해 지정된 정책 그룹으로 보냅니다.
  • GEOIP,CN,DIRECT,no-resolve: 중국 IP를 매칭합니다. no-resolve는 이 규칙의 매칭을 위해 별도로 도메인 조회를 실행하지 않는다는 뜻이지, 클라이언트 전체의 DNS를 끈다는 뜻은 아닙니다.
  • MATCH,프록시 출구: 앞선 규칙에 매칭되지 않은 연결을 처리합니다. 매칭에 사용할 규칙을 모두 배치한 다음에 두어야 합니다.

아직 IP로 해석되지 않은 도메인에 GeoIP 규칙을 적용하기 위해 IP를 먼저 조회하려면 필요에 따라 no-resolve를 제거할 수 있습니다. 다만 DNS 조회 동작과 매칭 과정이 바뀝니다. 이 옵션을 유지할 경우 도메인 연결이 해당 IP 규칙에 매칭되는지는 그 시점에 커널이 판별에 사용할 대상 IP를 확보했는지에 따라 달라집니다.

전체 데이터베이스 대신 특정 도메인만 조정하기

소수의 업무용 도메인에 고정 출구를 지정하려면 일반 분류 규칙 앞에 DOMAIN 또는 DOMAIN-SUFFIX 규칙을 추가할 수 있습니다. 데이터 출처 전체를 바꾸는 것보다 변경 사항을 추적하기 쉽습니다. 설정에서 DOMAIN-SUFFIX 규칙을 GeoSite 규칙보다 먼저 두면 앞의 규칙이 우선 적용됩니다. GeoSite를 업데이트해도 이 우선순위는 바뀌지 않습니다.

또한 rule-providers의 interval: 86400은 일반적으로 규칙 제공자가 86400초마다 업데이트된다는 뜻입니다. 지리 데이터베이스 설정인 geo-update-interval: 24와는 항목도 단위도 다릅니다. 규칙 세트 업데이트에 성공했다고 해서 GeoSite 데이터까지 업데이트되었다고 볼 수는 없습니다.

6. 업데이트 실패와 규칙 미매칭 문제 해결 순서

증상우선 확인할 항목해결 방법
다운로드 시간 초과 또는 TLS 연결 실패시스템 시간, DNS, 배포 주소 접속 가능 여부현재 사용 가능한 연결로 같은 다운로드 주소에 접속합니다. 필요하면 파일을 직접 다운로드합니다.
업데이트 권한 부족 메시지커널 실행 사용자와 디렉터리 쓰기 권한실제 작업 디렉터리의 권한을 수정하고 서비스 데이터를 쓸 수 없는 디렉터리에 두지 않습니다.
데이터 파싱 오류파일 형식, 다운로드 완료 여부, 웹페이지가 파일로 잘못 저장되었는지기존 파일을 복원하고 현재 모드에 맞는 배포 파일을 다시 다운로드합니다.
분류가 없다는 메시지규칙 태그와 데이터 출처에 포함된 분류태그 철자와 출처 설명을 확인하고, 존재하는 분류나 명시적인 도메인 규칙을 사용합니다.
업데이트는 성공했지만 출구가 바뀌지 않음적용 중인 모드, 규칙 순서, 기존 연결, 실제로 로드된 파일규칙 모드로 전환하고 대상 사이트의 기존 연결을 닫은 뒤 다시 시도합니다. 매칭된 규칙도 확인하세요.

새 연결을 한 번 만들어 결과 확인하기

  1. 현재 규칙 모드인지 확인합니다. 전역 모드나 직결 모드에서는 위의 트래픽 분기 규칙과 같은 결과가 나오지 않습니다.
  2. 문제를 확인할 실제 도메인을 하나 선택하고 클라이언트의 연결 화면에서 새 연결을 찾습니다. 대상 도메인, 매칭된 규칙, 출구 정책 그룹을 기록하세요.
  3. 업데이트 후 해당 사이트의 기존 연결을 종료하고 요청을 다시 보냅니다. 이미 설정된 TCP 또는 QUIC 연결은 데이터베이스가 바뀌어도 보통 자동으로 경로를 다시 선택하지 않습니다.
  4. 앱이 IP에 직접 연결하거나 커널이 도메인 정보를 얻지 못한다면 먼저 DNS, 스니핑, 앱의 연결 방식을 확인하세요. GeoSite는 도메인 정보가 필요하므로 파일만 업데이트해서는 해당 정보를 보완할 수 없습니다.

TUN 모드는 일부 트래픽이 커널로 들어가는 방식을 결정하며 GeoIP 또는 GeoSite를 업데이트하지는 않습니다. 시스템 프록시와 TUN은 처리하는 트래픽 범위가 다르므로 두 모드에서 표시되는 연결도 다를 수 있습니다. 문제를 확인할 때는 한 번에 조건 하나만 바꾸세요. 우선 트래픽 처리 방식과 DNS 설정을 그대로 유지한 채 데이터베이스 업데이트 전후의 규칙 매칭을 비교해야 네트워크 처리 방식의 변화와 데이터 업데이트 효과를 혼동하지 않습니다.

Clash 다운로드