DNS

Mihomo에는 완전한 DNS 서버가 내장되어 있어, 투명 프록시 환경에서 도메인 정보가 없는 문제를 해결하며 fake-ip 라우팅의 기반이 됩니다. 여기서는 dns 필드의 핵심 설정 항목을 소개합니다.

기본 필드

enable필수

내장 DNS 서버 활성화 여부입니다. 대부분의 경우(특히 TUN 모드 사용 시) 활성화해야 합니다.

listen선택

DNS 서비스 리스닝 주소로, 예를 들어 0.0.0.0:1053이며, LAN 기기도 이를 일반 DNS 서버처럼 사용할 수 있습니다.

ipv6선택

IPv6 결과를 해석할지 여부이며, 최상위의 ipv6: true와 함께 설정해야 적용됩니다.

use-hosts / use-system-hosts선택

설정 파일의 hosts 필드와 시스템 hosts 파일을 사용할지 여부입니다.

respect-rules선택

DNS 요청 자체도 rules 라우팅 규칙에 따라 아웃바운드 방식을 선택할지 여부로, proxy-server-nameserver와 함께 사용됩니다.

향상 모드

enhanced-modefake-ip / redir-host

fake-ip: 각 도메인에 가짜지만 고유한 내부망 IP를 할당하고, 연결 시 실제 대상으로 복원합니다. 속도가 빠르고 호환성이 좋아 대부분의 경우(특히 TUN 모드)에 추천되는 방식입니다. redir-host: 실제 해석 결과를 그대로 반환하며 호환성이 다소 떨어지지만(SNI 라우팅이 필요한 일부 경우에 영향 있을 수 있음), fake-ip 대역을 지원하지 않는 오래된 클라이언트에는 더 적합합니다.

fake-ip-range198.18.0.1/16

fake-ip에서 사용하는 주소 대역으로, 일반적으로 수정할 필요가 없습니다.

fake-ip-filter-mode / fake-ip-filter선택

fake-ip를 사용하지 않을 도메인(실제 해석 사용)을 지정합니다. 내부망 도메인이나 로컬 서비스 디스커버리 등에 자주 사용되며, 도메인 와일드카드를 지원합니다.

config.yaml YAML
dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter-mode: blacklist
  fake-ip-filter:
    - '*.lan'

해석용 서버

default-nameserver선택

nameserver/fallback에 도메인 형태로 적힌 서버 주소를 해석하는 "부트스트랩" DNS로, 여기에는 IP만 입력할 수 있고 도메인은 사용할 수 없습니다.

nameserver필수

기본 도메인 해석 서버 목록으로, UDP/TCP/DoT/DoH/DoQ 등 다양한 프로토콜 작성법을 지원합니다. 자세한 내용은 DNS 유형을 참고하세요.

nameserver-policy선택

도메인 / geosite: / rule-set:에 따라 전용 해석 서버를 지정하며, 우선순위는 nameserver보다 높습니다. "국내 도메인은 국내 DNS로, 해외 도메인은 해외 DNS로" 같은 용도에 자주 사용됩니다.

fallback / fallback-filter선택

fallback은 보조 해석 서버(보통 해외 DNS를 입력)이며, fallback-filter는 어떤 상황의 해석 결과를 "의심"하여 fallback으로 다시 조회할지를 결정합니다(예: 국내 IP가 반환되었지만 도메인이 오염된 것으로 의심되는 경우).

direct-nameserver / direct-nameserver-follow-policy선택

"직접 연결 규칙에 매칭된" 도메인 전용 해석 서버로, direct-nameserver-follow-policy와 함께 nameserver-policy를 계속 따를지 여부를 결정합니다.

proxy-server-nameserver / proxy-server-nameserver-policy선택

프록시 서버 자체의 도메인(예: 사용 중인 노드 제공자의 도메인)을 해석하기 위한 전용 DNS로, 사용자 트래픽 해석과 섞여 "닭이냐 알이냐" 문제가 생기는 것을 방지합니다.

config.yaml YAML
default-nameserver:
    - 223.5.5.5
  nameserver-policy:
    '+.arpa': '10.0.0.1'
    'rule-set:cn':
      - https://doh.pub/dns-query
      - https://dns.alidns.com/dns-query
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
  fallback:
    - tls://8.8.4.4
    - tls://1.1.1.1
  fallback-filter:
    geoip: true
    geoip-code: CN
    geosite:
      - gfw
    ipcidr:
      - 240.0.0.0/4
    domain:
      - '+.google.com'

전체 해석 우선순위 순서와 각 필드가 함께 작동하는 방식은 다음 글인 해석 과정을 참고하세요.

추가 파라미터

작성법설명
#proxy_name동일한 이름의 프록시 노드를 우선 사용해 DNS 조회를 시도하고, 해당 이름의 프록시가 없으면 동일한 이름의 네트워크 인터페이스로 연결합니다. 예: https://1.1.1.1/dns-query#proxy1
#RULES이 DNS 조회도 라우팅 규칙을 따르게 하며, 개별적으로 respect-rules를 활성화한 것과 동일합니다
#h3=true해당 DoH 서버가 HTTP/3로 연결을 맺도록 강제하며, 서버가 H3를 지원해야 합니다
#ecs=1.1.1.1/24DoH 요청에 EDNS Client Subnet을 포함시켜 CDN이 이 서브넷을 기준으로 근접 결과를 반환하도록 합니다
#ecs-override=true요청에 이미 있는 ECS subnet을 강제로 덮어씁니다