Clash DNS 설정 완벽 정리: nameserver·fallback·DNS 하이재킹 항목별 해설
Clash DNS 항목의 nameserver, fallback, fallback-filter, enhanced-mode 하이재킹 파라미터를 항목별로 정리하고, 국내외 분리 해석 원리와 바로 적용 가능한 추천 설정을 제공합니다.
Clash DNS 항목의 nameserver, fallback, fallback-filter, enhanced-mode 하이재킹 파라미터를 항목별로 정리하고, 국내외 분리 해석 원리와 바로 적용 가능한 추천 설정을 제공합니다.
Clash 설정 파일을 처음 접하는 사람들은 대부분 proxies와 rules 두 항목에만 신경을 씁니다. 결국 노드와 분리 규칙이 '되고 안 되고'를 결정하는 부분처럼 보이기 때문이죠. 하지만 실제로 문제를 파고들어 보면 '특정 사이트가 안 열린다', '프록시를 켰는데도 국내 CDN으로 로딩된다', '노드를 바꿨더니 페이지가 느려졌다' 같은 증상의 상당수는 dns 항목이 제대로 맞춰지지 않은 데서 비롯됩니다.
이유는 간단합니다. 프록시 규칙은 대부분 도메인 기준으로 매칭되지만, 실제 네트워크 요청은 결국 IP 주소로 귀결됩니다. 도메인 해석 단계에서 이미 오염되거나 잘못된 경로로 빠지면, 이후 규칙을 아무리 정교하게 짜도 되돌릴 수 없습니다. DNS 설정의 핵심 과제는 '프록시를 타야 할 도메인은 실제 IP로, 직결해야 할 도메인은 가까운 국내 CDN IP로' 해석되도록 두 경로가 서로 간섭하지 않게 만드는 것입니다.
Clash와 Clash Meta(mihomo 코어)의 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
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 그룹이 하나뿐이면 모든 도메인이 같은 서버 묶음으로 해석되는데, 명확한 분리가 필요한 상황에서는 이것으로 부족합니다. 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 메커니즘은 원래 '국내 DNS를 써야 할지 해외 DNS를 써야 할지 알 수 없는' 도메인, 특히 nameserver-policy 분리 규칙에 포함되지 않은 도메인에 대응하기 위해 설계됐습니다. 판단 로직은 대략 다음과 같이 동작합니다.
nameserver와 fallback 두 서버 그룹에 동시에(또는 순차적으로) 전달됩니다.nameserver가 반환한 IP를 받으면 fallback-filter의 조건에 대조해 검사합니다.geoip-code: CN에 해당하거나(즉 중국 본토 IP로 판정됨) ipcidr 목록의 대역에 포함되면 이 결과를 '신뢰할 수 있다'고 보고 그대로 채택합니다.fallback 서버의 해석 결과로 교체합니다.ipcidr에 흔히 등장하는 240.0.0.0/4는 예약 주소 대역으로, 일부 통신사는 DNS 오염 시 이 구간에 속한 가짜 주소를 돌려주는 경우가 있습니다. 이를 필터 목록에 추가하면 Clash가 오염된 결과를 미리 걸러낼 수 있습니다. fallback-filter는 domain 필드도 지원해, 도메인 화이트리스트 방식으로 fallback을 강제 적용할 수 있으며 자주 오염되는 특정 사이트에 유용합니다.
enhanced-mode는 Clash가 도메인 요청을 '가로채서' 규칙에 따라 분리하는 방식을 결정하며, 자주 쓰이는 두 값은 차이가 상당합니다.
Clash가 로컬에서 DNS 요청을 가로채, 도메인마다 fake-ip-range 구간 안의 임시 가짜 IP를 애플리케이션에 돌려줍니다. 애플리케이션이 이 가짜 IP로 연결을 시도하면 Clash 코어가 내부적으로 이를 원래 도메인으로 되돌려 실제 해석과 전달을 처리합니다. 이 방식의 장점은 해석 요청이 로컬을 벗어나지 않아 통신사에 가로채일 일이 없다는 점이며, TUN 모드와 함께 쓸 때 가장 완성도 높은 경험을 제공합니다. 단점은 실제 IP를 기준으로 검증하는 일부 상황(특정 로컬 네트워크 기기 탐색, P2P 직결 등)에서 이상이 생길 수 있어, 이런 도메인은 fake-ip-filter로 제외해야 합니다.
이 모드에서는 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-filter에 추가하면 되며, 전체를 redir-host로 바꿀 필요는 없습니다.fallback-filter의 ipcidr에 현지 통신사가 흔히 사용하는 오염 주소 대역이 포함돼 있는지 확인하고, 필요하면 해당 도메인을 fallback-filter.domain에 추가해 fallback을 강제 적용하세요.