Clash DNS 설정 완벽 정리: nameserver·fallback·DNS 하이재킹 항목별 해설

Clash DNS 항목의 nameserver, fallback, fallback-filter, enhanced-mode 하이재킹 파라미터를 항목별로 정리하고, 국내외 분리 해석 원리와 바로 적용 가능한 추천 설정을 제공합니다.

프록시는 다 설정했는데 왜 DNS가 발목을 잡을까

Clash 설정 파일을 처음 접하는 사람들은 대부분 proxiesrules 두 항목에만 신경을 씁니다. 결국 노드와 분리 규칙이 '되고 안 되고'를 결정하는 부분처럼 보이기 때문이죠. 하지만 실제로 문제를 파고들어 보면 '특정 사이트가 안 열린다', '프록시를 켰는데도 국내 CDN으로 로딩된다', '노드를 바꿨더니 페이지가 느려졌다' 같은 증상의 상당수는 dns 항목이 제대로 맞춰지지 않은 데서 비롯됩니다.

이유는 간단합니다. 프록시 규칙은 대부분 도메인 기준으로 매칭되지만, 실제 네트워크 요청은 결국 IP 주소로 귀결됩니다. 도메인 해석 단계에서 이미 오염되거나 잘못된 경로로 빠지면, 이후 규칙을 아무리 정교하게 짜도 되돌릴 수 없습니다. DNS 설정의 핵심 과제는 '프록시를 타야 할 도메인은 실제 IP로, 직결해야 할 도메인은 가까운 국내 CDN IP로' 해석되도록 두 경로가 서로 간섭하지 않게 만드는 것입니다.

DNS 항목의 뼈대: nameserver와 fallback은 각각 무엇을 담당하나

Clash와 Clash Meta(mihomo 코어)의 DNS 모듈 구조는 대체로 비슷하며, 자주 쓰이는 필드는 크게 세 계층으로 나눠 이해하면 됩니다.

  • nameserver: 기본으로 사용하는 해석 서버 목록으로, 대부분의 도메인이 이쪽으로 처리됩니다.
  • fallback: 보조 해석 서버 목록으로, nameserver의 응답이 '이상해 보일 때'를 대비해 마련해 둡니다.
  • fallback-filter: '응답이 정상인지'를 판단하는 규칙으로, 언제 nameserver 대신 fallback 결과를 채택할지를 결정합니다.

가장 기본적인 골격은 대략 다음과 같습니다.

dns:
  enable: true
  ipv6: false
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4

default-nameserver는 자주 빠뜨리는 필드입니다. 이 필드는 nameserver, fallback에 도메인 형태(예: DoH 주소)로 적힌 서버 자체를 해석하는 데만 쓰이므로 반드시 순수 IP를 넣어야 합니다. 그렇지 않으면 'DNS 서버 주소를 해석하기 위해 또 DNS가 필요한' 순환 의존 문제가 생깁니다.

nameserver-policy: 도메인별로 다른 DNS를 쓰게 하는 분리 스위치

nameserver 그룹이 하나뿐이면 모든 도메인이 같은 서버 묶음으로 해석되는데, 명확한 분리가 필요한 상황에서는 이것으로 부족합니다. nameserver-policy를 쓰면 도메인 규칙별로 전용 해석 서버를 지정할 수 있으며, 작성 방식은 규칙 매칭과 비슷합니다.

dns:
  nameserver-policy:
    "geosite:cn":
      - 223.5.5.5
      - 119.29.29.29
    "geosite:geolocation-!cn":
      - https://1.1.1.1/dns-query
      - https://8.8.8.8/dns-query

이 설정의 의미는 이렇습니다. geosite:cn(중국 본토 도메인 모음)에 매칭되는 요청은 고정적으로 국내 DNS로 해석해 자연스럽게 가까운 CDN 노드를 받게 하고, 해외 도메인 모음에 매칭되는 요청은 고정적으로 암호화된 해외 DNS로 해석해 국내 통신사 DNS가 중간에서 '슬쩍' 잘못된 결과를 돌려주는 것을 막습니다. 이렇게 설정하면 국내 사이트가 해외 경로로 우회하며 느려지는 일도 없고, 해외 사이트가 국내 DNS로 접근 불가능한 IP를 받는 일도 없습니다.

주의할 점은 nameserver-policy의 매칭 우선순위가 일반 nameserver보다 높다는 것입니다. 규칙에 매칭되면 바로 적용되며 fallback 판단 로직을 거치지 않습니다. 이것이 아래에서 다룰 fallback 메커니즘과의 가장 큰 차이입니다. 하나는 '사전 분리'이고 다른 하나는 '사후 교정'입니다.

fallback-filter는 정확히 무엇을 걸러내고, 어떻게 작동하나

fallback 메커니즘은 원래 '국내 DNS를 써야 할지 해외 DNS를 써야 할지 알 수 없는' 도메인, 특히 nameserver-policy 분리 규칙에 포함되지 않은 도메인에 대응하기 위해 설계됐습니다. 판단 로직은 대략 다음과 같이 동작합니다.

  1. 요청이 nameserverfallback 두 서버 그룹에 동시에(또는 순차적으로) 전달됩니다.
  2. nameserver가 반환한 IP를 받으면 fallback-filter의 조건에 대조해 검사합니다.
  3. 이 IP가 geoip-code: CN에 해당하거나(즉 중국 본토 IP로 판정됨) ipcidr 목록의 대역에 포함되면 이 결과를 '신뢰할 수 있다'고 보고 그대로 채택합니다.
  4. 해당하지 않으면, 즉 원래 해외 사이트여야 하는데 nameserver가 국내 IP나 심지어 유효하지 않은 주소를 돌려준 경우에는 오염이 의심된다고 판단해 fallback 서버의 해석 결과로 교체합니다.

ipcidr에 흔히 등장하는 240.0.0.0/4는 예약 주소 대역으로, 일부 통신사는 DNS 오염 시 이 구간에 속한 가짜 주소를 돌려주는 경우가 있습니다. 이를 필터 목록에 추가하면 Clash가 오염된 결과를 미리 걸러낼 수 있습니다. fallback-filterdomain 필드도 지원해, 도메인 화이트리스트 방식으로 fallback을 강제 적용할 수 있으며 자주 오염되는 특정 사이트에 유용합니다.

enhanced-mode: fake-ip와 redir-host, 하이재킹을 구현하는 두 가지 방식

enhanced-mode는 Clash가 도메인 요청을 '가로채서' 규칙에 따라 분리하는 방식을 결정하며, 자주 쓰이는 두 값은 차이가 상당합니다.

fake-ip 모드

Clash가 로컬에서 DNS 요청을 가로채, 도메인마다 fake-ip-range 구간 안의 임시 가짜 IP를 애플리케이션에 돌려줍니다. 애플리케이션이 이 가짜 IP로 연결을 시도하면 Clash 코어가 내부적으로 이를 원래 도메인으로 되돌려 실제 해석과 전달을 처리합니다. 이 방식의 장점은 해석 요청이 로컬을 벗어나지 않아 통신사에 가로채일 일이 없다는 점이며, TUN 모드와 함께 쓸 때 가장 완성도 높은 경험을 제공합니다. 단점은 실제 IP를 기준으로 검증하는 일부 상황(특정 로컬 네트워크 기기 탐색, P2P 직결 등)에서 이상이 생길 수 있어, 이런 도메인은 fake-ip-filter로 제외해야 합니다.

redir-host 모드

이 모드에서는 Clash가 먼저 설정된 DNS 서버로 도메인을 실제 IP로 해석한 뒤 IP 또는 도메인 규칙에 따라 분리합니다. 호환성이 더 좋아서 '가짜 IP로 인해 프로그램이 오작동하는' 문제가 잘 생기지 않지만, 해석 과정 자체가 완전한 DNS 조회를 거치므로 속도가 약간 느리고, 규칙 목록에 IP 대역 규칙이 함께 존재하면 해석 결과와 실제 라우팅 주소가 완전히 일치하지 않아 오판이 생길 수 있습니다.

특별한 호환성 문제가 없다면 TUN 모드를 켤 때는 fake-ip를 우선 선택하는 것이 좋습니다. 일부 로컬 네트워크 도구, 게임, 기기 탐색 기능에서 이상이 발견되면 곧바로 redir-host로 전환해 전체적인 사용 경험을 희생하기보다, 해당 도메인만 fake-ip-filter에 추가하는 방식을 권장합니다.

바로 적용 가능한 추천 설정

앞서 다룬 필드들을 종합하면, 다음 설정은 '국내는 직결, 해외는 프록시'를 쓰는 일반적인 사용 환경 대부분에 적합하며, 설정 파일의 dns 항목 전체를 이대로 교체해도 됩니다.

dns:
  enable: true
  ipv6: false
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "*.local"
    - "+.stun.*.*"
    - "+.stun.*.*.*"
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
  fallback:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
      - 240.0.0.0/4
  nameserver-policy:
    "geosite:cn":
      - 223.5.5.5
      - 119.29.29.29
    "geosite:geolocation-!cn":
      - https://1.1.1.1/dns-query
      - https://8.8.8.8/dns-query

이 설정의 분리 로직은 다음과 같습니다. 먼저 nameserver-policy에 매칭되는지 확인해 매칭되면 해당 서버로 바로 해석하고, 매칭되지 않으면 nameserver로 기본 해석한 뒤 fallback-filter가 결과의 신뢰도를 판단해 신뢰할 수 없을 때만 fallback으로 전환합니다. 이 전체 과정은 fake-ip가 로컬에서 가로채는 방식과 함께 작동해 조회 요청이 통신사 DNS에 가로채이지 않습니다. 구독 제공처에서 자체 DNS 최적화 설정을 제공한다면, 기본 설정을 유지한 채 항목별로 대조하며 교체하는 것도 좋으며 전체를 통째로 덮어쓸 필요는 없습니다.

흔한 증상 진단

설정 후에도 문제가 계속되면 다음 방향으로 확인해 보세요.

  • 국내 사이트 접속이 느려짐: 대부분 nameserver-policy가 해당 도메인을 포함하지 않았거나, 국내 DNS 목록에 서버 하나만 등록돼 응답이 느린 경우입니다. 서로 다른 통신사의 공용 DNS 두 개를 추가하는 것을 권장합니다.
  • fake-ip를 켠 후 특정 로컬 네트워크 도구가 작동하지 않음: 해당 도메인 또는 IP 대역을 fake-ip-filter에 추가하면 되며, 전체를 redir-host로 바꿀 필요는 없습니다.
  • 해외 사이트가 여전히 간간이 잘못된 주소로 해석됨: fallback-filteripcidr에 현지 통신사가 흔히 사용하는 오염 주소 대역이 포함돼 있는지 확인하고, 필요하면 해당 도메인을 fallback-filter.domain에 추가해 fallback을 강제 적용하세요.
  • 노드를 전환한 후 페이지의 이미지·스크립트가 일부만 로드됨: 대부분 DNS 문제가 아니라 분리 규칙이 메인 도메인과 정적 리소스 도메인을 서로 다른 정책 그룹으로 나눈 경우입니다. 규칙 세트가 해당 사이트의 관련 도메인을 전부 포함하는지 확인하는 것을 권장합니다.
클라이언트 다운로드 ->