규칙 설정 예상 읽기 시간 10분

GeoIP·GeoSite 데이터베이스 업데이트 방법: geox-url 설정과 규칙 사용법

GeoIP·GeoSite 데이터 파일의 용도와 출처, mihomo의 geox-url 및 자동 업데이트 설정, GEOIP·GEOSITE 규칙 작성법을 알아봅니다.

GeoIP, GeoSite, 규칙 세트의 차이부터 알아보기

웹사이트의 트래픽이 예상과 다른 경로로 나간다고 해서 반드시 노드에 문제가 있는 것은 아닙니다. 트래픽 분기 결과에는 연결에 포함된 도메인이나 대상 IP, 설정의 규칙 순서, 규칙이 참조하는 데이터 등 최소 세 가지 요소가 영향을 줍니다. Geo 데이터를 업데이트하면 마지막 요소만 바뀝니다. DNS 문제를 해결하거나 새 규칙을 설정에 자동으로 추가하는 기능은 아닙니다.

이 문서는 mihomo 커널을 사용하는 Clash 클라이언트를 기준으로 설명합니다. Clash는 클라이언트 생태계에서 널리 쓰이는 이름일 뿐, 모든 커널이 같은 필드를 지원하는 것은 아닙니다. 구형 Clash 커널에는 이 문서의 GEOSITE 및 자동 업데이트 설정을 그대로 적용할 수 없습니다. 작업하기 전에 창 제목만 보지 말고 클라이언트의 커널 정보에서 실제로 mihomo가 실행 중인지 확인하세요.

데이터 또는 설정내용과 용도사용 방법
geoip.dat국가, 지역 또는 데이터 출처별로 IP 대역을 분류DAT 모드의 GEOIP
country.mmdbMMDB 형식의 IP 지리 정보 데이터로, 로컬 파일명은 보통 Country.mmdb입니다.MMDB 모드의 GEOIP
geosite.dat사이트, 서비스 또는 카테고리별로 분류한 도메인 목록GEOSITE
rule-providers별도로 선언하고 다운로드 및 업데이트하는 규칙 세트RULE-SET

GeoSite의 카테고리는 웹사이트의 용도를 실시간으로 판별하는 기능이 아니라 데이터 관리자가 정리한 도메인 목록입니다. GeoIP 역시 정확한 위치를 찾아내는 도구가 아닙니다. 클라우드 서비스, CDN, 국가 간 트래픽 라우팅, IP 주소 이전 등으로 인해 지리적 분류가 실제 접속 목적과 다를 수 있습니다. 중요한 서비스는 국가별 IP 분류에만 의존하기보다 도메인 규칙을 명시하는 편이 더 쉽게 제어할 수 있습니다.

geox-url 설정: 다운로드 출처와 자동 업데이트 간격

다음은 기존 설정에 병합해 사용하는 최상위 설정 조각이며, 노드가 포함된 전체 구독 설정이 아닙니다. GeoIP DAT 모드를 선택하고 GeoIP, GeoSite, MMDB의 다운로드 주소를 지정한 뒤, Geo 데이터가 24시간마다 자동 업데이트되도록 설정합니다. 예시에서는 MetaCubeX의 meta-rules-dat 릴리스 파일을 사용합니다. 실제로 사용하기 전에 현재 네트워크에서 해당 주소에 접속할 수 있는지 확인하세요.

geodata-mode: true
geodata-loader: memconservative

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"

필드별 설정: 시간 단위를 초와 혼동하지 않기

  • geodata-mode: true: GEOIP에서 GeoIP DAT 데이터를 사용합니다. false로 설정하면 MMDB 데이터를 사용합니다. GeoSite 전체를 켜거나 끄는 옵션은 아닙니다.
  • geodata-loader: memconservative: 메모리 사용량이 적은 DAT 로딩 방식을 선택합니다. 규칙 우선순위를 바꾸거나 다운로드 속도를 높이는 설정은 아닙니다.
  • geo-auto-update: true: 커널의 Geo 데이터 정기 업데이트를 활성화합니다. 클라이언트에 별도의 수동 업데이트 메뉴가 있을 수도 있습니다.
  • geo-update-interval: 24: 단위는 시간입니다. 즉 24초가 아니라 24시간입니다. 커널이 실행 중일 때 정기 작업이 수행되며, 컴퓨터가 꺼져 있는 동안에는 다운로드되지 않습니다.
  • geox-url: 데이터 출처를 지정합니다. 주소만 바꿨다고 현재 사용 중인 데이터가 교체되는 것은 아닙니다. 업데이트와 로딩이 실제로 완료되어야 합니다.

예시에는 나중에 GeoIP 데이터 모드를 전환할 수 있도록 mmdb 주소도 포함되어 있습니다. 그렇다고 한 번의 GEOIP 판정에서 DAT와 MMDB를 동시에 조회한다는 뜻은 아닙니다. 국가 코드만 사용하는 MMDB 데이터에 다른 DAT 데이터 출처에서만 제공하는 사용자 지정 카테고리명을 그대로 적용할 수도 없습니다.

구독 클라이언트에서 업데이트 설정을 유지하는 방법

많은 클라이언트는 원격 구독을 다운로드한 뒤 실행용 설정을 다시 생성합니다. 생성된 파일을 직접 수정하면 일시적으로 적용되더라도 다음 구독 업데이트 때 덮어써질 수 있습니다. 먼저 ‘구독 원본’, ‘클라이언트 오버라이드’, ‘커널 최종 설정’이 각각 어디에 있는지 구분하세요.

  1. 현재 환경을 기록하세요. 클라이언트의 커널 정보나 시작 로그에서 mihomo 버전, 현재 설정 이름, Geo 데이터가 저장된 디렉터리를 확인하세요. 파일 경로는 클라이언트의 ‘설정 폴더 열기’ 또는 이에 해당하는 메뉴를 기준으로 확인해야 합니다. 다른 클라이언트의 경로를 그대로 적용하지 마세요.
  2. 정상 작동하는 설정을 백업하세요. 현재 오버라이드 설정과 기존 데이터베이스를 보관하세요. 구독 주소나 노드 비밀번호가 들어 있는 파일은 로컬에만 두고 공개 게시판에 올리지 마세요.
  3. 지속 설정에 반영하세요. 클라이언트에 Merge, 오버라이드 또는 확장 설정 기능이 있으면 해당 기능에서 위의 최상위 필드를 병합하세요. 직접 관리하는 로컬 YAML을 사용한다면 해당 파일을 수정하면 됩니다.
  4. 최종 설정을 확인하세요. 다시 불러온 뒤 실제 실행 설정에 geodata-mode, geox-url, 업데이트 간격이 유지되는지 확인하세요. 편집기에서 필드를 봤다는 것만으로 커널에 적용됐다고 볼 수는 없습니다.
  5. 업데이트를 한 번 실행하세요. 클라이언트에서 Geo 데이터 업데이트 기능을 사용하고 커널 로그를 확인하세요. 클라이언트마다 메뉴 이름이 다릅니다. ‘구독 업데이트’를 ‘Geo 데이터 업데이트’와 같은 작업으로 생각하지 마세요.

클라이언트에 Geo 데이터 업데이트 버튼이 없다면 자동 업데이트 설정을 유지하거나 아래의 오프라인 교체 절차를 사용하세요. 필요한 데이터가 없는 상태로 처음 실행하면 커널이 파일을 다운로드할 수 있습니다. 이때 사용할 프록시가 아직 준비되지 않았다면 ‘시작하려면 데이터가 필요한데 데이터를 받으려면 프록시가 필요한’ 의존성 문제가 생길 수 있습니다. 이런 경우에는 반복해서 재시작하기보다 오프라인으로 데이터를 미리 준비하는 편이 간단합니다.

GEOIP 및 GEOSITE 규칙을 올바르게 작성하는 방법

다음 규칙 예시는 기존 설정에 代理选择이라는 이름의 프록시 그룹이 있다고 가정합니다. 실제 그룹 이름이 다르면 해당 부분도 함께 수정해야 합니다. DIRECT는 내장 직결 정책이므로 따로 만들 필요가 없습니다. 예시를 기존 rules에 병합하고, 두 번째 rules 키를 추가하지 마세요.

mode: rule

rules:
  - DOMAIN,example.com,DIRECT
  - GEOSITE,cn,DIRECT
  - GEOSITE,geolocation-!cn,代理选择
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,代理选择

위에서 아래로 확인하며, 먼저 일치하는 규칙이 적용됩니다

DOMAIN,example.com,DIRECT은 특정 도메인에 적용하는 정확한 일치 규칙입니다. 개별 사이트 예외는 대분류 규칙보다 앞에 둡니다. 이어지는 두 GeoSite 규칙은 도메인 카테고리에 따라 트래픽 출구를 선택합니다. 예시에 사용된 cn과 geolocation-!cn은 현재 데이터 출처에 포함되어 있어야 합니다. 간소화된 데이터베이스로 바꾼 경우 해당 카테고리가 유지되어 있는지 다시 확인하세요.

GEOIP,CN,DIRECT,no-resolve는 확인 가능한 대상 IP가 CN 카테고리에 속하는지 검사합니다. 끝의 no-resolve는 이 IP 규칙을 위해 별도로 도메인 조회를 하지 말라는 뜻입니다. 연결에 사용할 수 있는 대상 IP가 이미 있다면 규칙 매칭에는 여전히 사용할 수 있습니다. DNS를 끄거나 모든 요청이 DNS 모듈을 건너뛰게 하는 설정은 아닙니다.

마지막의 MATCH는 앞선 규칙과 일치하지 않은 연결에 적용됩니다. 이 규칙을 첫 줄에 두면 뒤에 있는 GeoSite 및 GeoIP 규칙은 실행되지 않습니다. 규칙 모드가 아닌 전역 모드에서는 전역 정책에 따라 트래픽이 전달되므로 이 규칙 순서를 검증할 수 없습니다.

도메인 정보가 없으면 GeoSite가 자동으로 보완하지 않습니다

앱이 IP 주소로 직접 연결하거나 트래픽이 커널에 들어올 때 연결할 도메인 정보가 없다면 GeoSite 규칙이 일치하지 않을 수 있습니다. TUN은 트래픽을 전달하는 방식일 뿐, 모든 연결에 도메인 정보가 자동으로 포함된다는 뜻은 아닙니다. 이 경우 DNS가 예상한 경로로 전달되는지, Fake-IP 매핑이 유효한지, 스니핑을 올바르게 활성화해야 하는지 확인하세요. 정보가 없는 문제를 해결하려고 GeoSite 파일만 계속 바꾸지는 마세요.

업데이트가 실제로 적용됐는지 확인하는 방법

‘다운로드 완료’, ‘파일 교체 완료’, ‘새 연결이 새 데이터를 사용해 규칙과 일치’는 서로 다른 확인 단계입니다. 파일 수정 시간만 바뀐 것으로는 새 데이터가 현재 커널에 로드됐다고 판단할 수 없습니다. 특정 사이트가 열린다는 사실만으로 예상한 출구를 사용했다고 볼 수도 없습니다.

  1. 다운로드 및 로딩 결과를 확인하세요. 업데이트 이후의 로그를 살펴보고 네트워크 시간 초과, 다운로드 실패, 데이터 파싱 실패, 카테고리 없음 오류를 구분하세요. 로그 문구는 커널 버전에 따라 다를 수 있으므로 구체적인 오류와 발생 시간을 기록하세요.
  2. 실행 모드와 규칙을 확인하세요. 규칙 모드로 전환한 뒤 최종 설정에서 Geo 규칙이 MATCH보다 앞에 있는지, 대상 프록시 그룹 이름이 실제로 존재하는지 확인하세요.
  3. 테스트 연결을 새로 만드세요. 테스트 앱의 기존 연결을 종료한 다음 새 요청을 보내세요. 이미 맺어진 TCP 연결은 데이터베이스를 업데이트해도 다른 프록시 경로로 자동 전환되지 않는 경우가 많습니다.
  4. 연결 상세 정보를 확인하세요. 대상 도메인과 IP, 일치한 규칙, 실제 출구를 확인하세요. 앞에 있는 DOMAIN-SUFFIX 규칙이 적용된 것으로 표시된다면 이번 연결은 뒤의 Geo 규칙까지 도달하지 않은 것입니다.
증상우선 확인할 항목해결 방향
업데이트가 계속 시간 초과됨다운로드 출처 접속 여부, DNS, 네트워크 출구먼저 다운로드 경로를 해결하고, 필요하면 오프라인으로 교체
카테고리가 없다는 메시지가 표시됨데이터 출처에 규칙에서 참조하는 카테고리가 있는지카테고리명을 확인하거나 호환되는 데이터 출처로 되돌리기
업데이트 후에도 이전 출구를 사용함기존 연결, 규칙 순서, 실행 설정연결을 새로 만든 뒤 실제로 적용된 규칙 확인
GeoIP 업데이트가 적용되지 않는 것 같음geodata-mode와 실제로 사용하는 파일DAT와 MMDB 중 무엇이 업데이트됐는지 확인
구독 업데이트 후 설정이 사라짐생성된 파일만 수정했는지 확인설정을 지속적으로 유지되는 오버라이드 계층으로 이동

문제를 확인할 때는 로그 상세 수준을 일시적으로 높이고, 확인이 끝나면 평소 수준으로 되돌려 연결 정보가 장시간 대량 기록되지 않도록 하세요. 문제를 공유하기 전에는 구독 주소, 액세스 토큰, 개인 도메인을 삭제하세요. 커널 버전, 규칙 일부, 데이터 출처, 오류 전후 상황만으로도 대체로 문제를 파악할 수 있습니다.

오프라인 교체, 롤백 및 업데이트 주기

시작 단계에서 데이터를 다운로드할 수 없다면 오프라인 교체를 반복해서 사용할 수 있는 해결 방법으로 고려할 수 있습니다. 먼저 선택한 데이터 출처에서 올바른 형식의 파일을 받은 다음, 클라이언트에서 커널이 실제로 사용하는 데이터 디렉터리를 확인하세요. 설치 프로그램이 있는 위치만 보고 판단하지 마세요. 데스크톱 앱, 시스템 서비스, 포터블 실행 방식에 따라 작업 디렉터리가 다를 수 있습니다.

  1. 현재 데이터 파일을 백업하고 출처와 다운로드 날짜를 기록하세요.
  2. 실제로 실행 중인 커널을 중지하세요. 서비스 모드라면 창을 닫는 것뿐 아니라 백그라운드 서비스도 중지됐는지 확인하세요.
  3. 기존 파일명을 유지해 데이터를 교체하세요. 예: geoip.dat, geosite.dat, Country.mmdb. 실행 계정에 읽기 권한이 있는지도 확인하세요.
  4. 커널을 시작하고 로딩 로그를 확인한 뒤 새 연결로 규칙이 적용되는지 검증하세요.
  5. 파싱 오류나 트래픽 분기 이상이 발생하면 커널을 중지하고 백업을 복원한 다음 형식, 카테고리, 출처 간 차이를 확인하세요.

다운로드한 파일이 실제로 로그인 페이지, 요청 제한 안내 또는 오류 문서라면 파일명을 .dat로 바꿔도 사용할 수 없습니다. 먼저 예상한 릴리스 파일에서 다운로드한 것이 맞는지 확인한 뒤 커널 오류를 살펴보세요. GeoSite 파일을 GeoIP 파일에 덮어쓰지도 마세요. 확장자가 같다고 내용까지 서로 바꿔 쓸 수 있는 것은 아닙니다.

일상적인 유지 관리에는 우선 24시간 간격을 사용하면 됩니다. 매시간 반복 다운로드하도록 간격을 줄일 필요는 없습니다. 사이트 트래픽이 예상대로 분기되지 않으면 먼저 적용된 규칙과 도메인 정보를 확인한 다음 데이터 업데이트, 특정 사이트 예외 추가, DNS 경로 수정 중 무엇이 필요한지 판단하세요. 문제를 해당 단계별로 나누어 확인하면 작동하는 설정을 유지하기 쉽습니다. 필드별 설명은 기술 참고 자료에서, 트래픽 연결과 기본 설정은 설정 가이드에서 확인할 수 있습니다.

Clash 다운로드플랫폼에 맞는 클라이언트 선택