DNS
Chute는 고급 기능을 지원하기 위해 사용자 정의 DNS 클라이언트를 사용합니다. 운영 체제의 DNS 클라이언트와 다르게 동작할 수 있습니다.
Chute는 세션에 DIRECT 규칙이 적용될 때 DNS 서버 역할을 합니다. Chute는 먼저 호스트의 DNS 레코드를 확인한 후, DNS 레코드에서 반환된 IP로 소켓을 초기화합니다. 이 방법을 통해 DIRECT 규칙이 적용된 모든 세션은 시스템 DNS 설정을 우회하고 Chute DNS 서버로 라우팅됩니다.
Chute iOS는 시스템 DNS 서버를 Chute DNS 서버로 구성합니다.
업스트림 DNS 서버
Chute는 기본적으로 운영 체제의 DNS 서버 주소를 사용합니다. 'dns-server' 옵션을 사용하여 DNS 서버, DoH(DNS-over-HTTPS), DoT(DNS-over-TLS), DoQ(DNS-over-QUIC), DoH3(DNS-over-HTTP/3) 서비스로 재정의할 수 있습니다.
세부 사항
Chute는 '--all-servers' 매개변수를 사용하는 dnsmasq와 유사하게 성능 향상을 위해 모든 DNS 서버에 동시에 쿼리합니다. 서버에서 가장 먼저 응답한 결과가 사용됩니다. Chute iOS 앱과 Chute Dashboard는 어떤 서버가 먼저 응답했는지 표시합니다. Chute가 2초 내에 응답을 받지 못하면 모든 서버에 다시 쿼리합니다. 3회 재시도(총 4회 시도) 후 또는 10초가 지나면 Chute는 포기하고 DNS 오류를 보고합니다.
일부 도메인 이름은 성능이 좋지 않은 권한 있는 네임 서버를 가질 수 있어, 업스트림 DNS 서버가 서버 측 타임아웃이나 기타 연결 문제로 인해 빈 응답을 반환할 수 있습니다. Chute는 업스트림 DNS 서버가 명시적으로 빈 DNS 응답을 반환하거나, 일부 서버가 빈 응답을 반환하고 다른 서버가 2초 내에 응답하지 못하는 경우 빈 DNS 오류를 보고합니다.
일부 DNS 레코드는 설정으로 인해 TTL이 매우 짧지만, Chute는 최소 TTL 60초를 강제합니다: 60초보다 짧은 TTL은 60초로 올립니다. 낙관적 DNS는 기본적으로 활성화되어 있으며, 캐시된 DNS 결과를 즉시 반환하면서 백그라운드에서 새로고침합니다. optimistic-dns = false로 비활성화할 수 있습니다.
IPv6가 활성화된 경우, Chute DNS 클라이언트는 업스트림 DNS 서버에 A 및 AAAA 질문을 모두 보냅니다. 가장 먼저 반환된 A 또는 AAAA 응답이 사용됩니다.