로컬 DNS 매핑
Chute는 로컬 맞춤형 DNS 매핑을 지원합니다. 이는 /etc/hosts와 동등하지만, 와일드카드, 별칭 및 DNS 서버 할당을 포함한 더 강력한 기능을 제공합니다.
[Host]
abc.com = 1.2.3.4
*.dev = 6.7.8.9
foo.com = bar.com
bar.com = server:8.8.8.8
참고: 여기서 설명하는 매핑 줄은
[DNS]섹션에서도 DNS 서버 옵션과 나란히 허용됩니다. DNS 섹션을 참고하세요. 단, Shadowrocket의ssid:형식(네트워크별 DNS)은 예외입니다. 이 형식은[Host]에서만 인식되며,[DNS]에서는 결코 나타나지 않는 이름에 대한 매핑으로 읽힙니다.
매핑에는 IPv4와 IPv6를 섞어 여러 주소를 나열할 수 있습니다: dns.google = 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888. A 질의에는 IPv4 주소로, AAAA 질의에는 IPv6 주소로 응답합니다. 주소가 아닌 것이 들어 있는 목록은 구성 오류입니다. 한 주소 패밀리에만 매핑된 이름은 다른 패밀리의 질의에 빈 응답(NODATA)을 주며, 업스트림 서버에는 묻지 않습니다. 같은 이름을 두 줄로 나누어 IPv4와 IPv6를 따로 매핑할 수도 있습니다. 구성을 다시 불러오거나 모듈이 추가한 매핑은 즉시 적용됩니다. [Host] 매핑 또는 별칭이 우선하는 이름에는 업스트림 NXDOMAIN 응답을 캐시하지 않습니다.
와일드카드
* 접두사를 사용하여 모든 하위 도메인을 와일드카드 처리할 수 있습니다. Chute는 단순 문자열 일치를 사용합니다. 예를 들어, *google.com은 google.com, foo.google.com 및 bargoogle.com과 일치합니다. 그리고 *.google.com은 google.com과 일치하지 않습니다.
[Host]
*.dev = 6.7.8.9
별칭
CNAME 레코드와 동등합니다.
[Host]
foo.com = bar.com
별칭이 지정된 이름에 대한 A 또는 AAAA 조회에는 대상의 주소가 반환되므로, 클라이언트가 직접 별칭을 따라갈 필요가 없습니다. 대상에 조회된 주소 패밀리의 주소가 없으면 다른 패밀리의 레코드 대신 빈 응답이 반환됩니다. Chute는 규칙을 로드할 때 대상을 해석합니다. 아직 해석되지 않은 경우에는 CNAME 레코드로 응답하고, 다음 조회를 위해 대상을 해석합니다.
DNS 서버 할당
하나 이상의 도메인에 지정된 DNS 서버를 할당할 수 있습니다.
[Host]
bar.com = server:8.8.8.8
server:는 DoH URL도 허용하므로, 지정된 DoH 엔드포인트를 도메인에 직접 할당할 수 있습니다.
[Host]
*.example.com = server:https://doh.example/dns-query
server:는 쉼표로 구분된 서버 목록을 허용합니다. 사용 가능한 항목은 모두 유지되어 동시에 질의되며, 가장 먼저 온 응답이 사용됩니다. 항목은 포트를 붙일 수 있는 IP 주소(8.8.8.8:5353, [2001:db8::1]:5353), system, syslib(force-syslib도 같음), DoH URL일 수 있습니다. IP 주소와 DoH URL은 끝에 #proxy 접미사를 붙일 수 있지만, system과 syslib에 붙여 쓰면 경고와 함께 버려집니다. 시스템 리졸버는 정책을 거쳐 보낼 수 없기 때문입니다. tcp://IP[:port] 항목은 해당 서버에 DNS over TCP로 질의합니다.
[Host]
bar.com = server:8.8.8.8, 8.8.4.4
하나 이상의 도메인에 시스템 DNS 서버를 할당할 수 있습니다. Chute는 이러한 도메인을 질의할 때 오직 시스템 DNS 설정만 사용합니다.
[Host]
devs = server:system
Chute는 자체 DNS 클라이언트 구현을 가지고 있으므로 일부 호스트명이 해석에 실패할 수 있습니다. server:syslib을 사용하여 시스템이 조회를 처리하도록 할 수 있습니다.
[Host]
Macbook = server:syslib
DoH 서비스 할당
하나 이상의 도메인에 지정된 DoH 서비스를 할당할 수 있습니다.
[Host]
bar.com = doh:cloudflare
기본적으로 .local 접미사가 있는 호스트명의 A·AAAA 질의는 시스템이 해석합니다. 그 밖의 유형 — PTR, SRV, TXT — 은 구성된 업스트림 서버로 갑니다.
DoT 서비스 할당
하나 이상의 도메인에 지정된 DoT(DNS-over-TLS) 서비스를 할당할 수 있습니다.
[Host]
bar.com = dot:dns.google
dot: 항목에는 #proxy 접미사를 붙일 수 없습니다.
DoQ 서비스 할당
하나 이상의 도메인에 지정된 DoQ(DNS-over-QUIC) 서비스를 할당할 수 있습니다.
[Host]
bar.com = doq:dns.adguard.com
항목 끝에 #proxy 접미사를 붙일 수 있습니다. 예를 들어 bar.com = doq:dns.adguard.com#proxy=HK라고 쓰면 질의가 그 정책을 거쳐 전송됩니다. 정책 이름은 적힌 그대로 유지됩니다.
DoH3 서비스 할당
하나 이상의 도메인에 지정된 DoH3(DNS-over-HTTP/3) 서비스를 할당할 수 있습니다.
[Host]
bar.com = doh3:https://dns.google/dns-query
DoQ 항목처럼 끝에 #proxy 접미사를 붙일 수 있습니다.
규칙 세트 키
키에는 도메인 패턴 대신 규칙 세트를 쓸 수 있습니다.
[Host]
RULE-SET:https://example.com/cn-domains.list = server:223.5.5.5
RULE-SET:MyProvider = server:https://doh.pub/dns-query
DOMAIN-SET:https://example.com/ad-hosts.txt = 0.0.0.0
RULE-SET:<source>에는 URL 또는 규칙 제공자의 이름을, DOMAIN-SET:<source>에는 URL을 씁니다. 세트의 도메인 규칙만 일치에 참여하며, IP 및 기타 유형의 규칙은 무시됩니다. 세트는 [Rule] 줄에서 사용할 때와 같은 방식으로 다운로드되고 갱신되며, 세트와 일치하는 모든 도메인에 오른쪽 값이 적용됩니다. 내장 SYSTEM과 LAN 세트는 여기에서 쓸 수 없습니다.
DNS 스크립트
[Host]
*.corp.example = script:CorpResolver
script:<name>은 일치하는 도메인의 조회를 같은 이름의 type=dns 스크립트에 맡깁니다. 앱이 보내는 질의와 Chute 자체의 조회 모두에 적용됩니다. 스크립트가 주소를 돌려주지 않거나 그 이름의 활성화된 dns 스크립트가 없으면 도메인은 평소대로 해석됩니다.
네트워크별 DNS(Shadowrocket)
[Host]
ssid:Home WiFi = server:192.168.1.1
Shadowrocket의 ssid:<network name> = server:<servers> 항목은 해당 Wi-Fi 네트워크에 대한 [SSID Setting] DNS 재정의로 읽힙니다. 기기가 그 네트워크에 있는 동안 이 서버들이 기본 풀의 일반 리졸버를 대체합니다. 네트워크 이름에는 공백이 들어갈 수 있습니다. 여기서는 일반 리졸버 — 포트를 붙일 수 있는 주소, system, syslib — 만 유효하며, [Host]의 다른 곳에서는 server:가 받아들이는 DoH URL도 여기서는 알림과 함께 버려집니다.
시스템 hosts 파일
[General]
read-etc-hosts = false
macOS와 Android에서 Chute는 시스템의 hosts 파일인 /etc/hosts도 읽어, 그 항목을 [Host] 줄보다 앞서 이 표에 추가합니다. 따라서 한 이름이 양쪽에 모두 있으면 hosts 파일의 주소가 우선합니다. [General]의 read-etc-hosts가 이 동작을 켜고 끄며, 기본값은 켜짐입니다. 파일을 제외하려면 false로 설정하세요. Chute iOS와 tvOS는 hosts 파일을 전혀 읽지 않습니다.
조합 사용
모든 기능을 함께 사용할 수 있습니다. 예:
[Host]
*.dev = foo.com
*.bar.com = server:system
Macbook = server:syslib
*.foo.com = doh:cloudflare
*.local = dot:dns.google
api.internal = doq:dns.adguard.com
이 페이지는 영어판의 번역본입니다. 내용이 다를 경우 영어판이 우선합니다.