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초 내에 응답을 받지 못하면 모든 서버에 다시 쿼리합니다. 4회 재시도 후 Chute는 포기하고 DNS 오류를 보고합니다.
일부 도메인 이름은 성능이 좋지 않은 권한 있는 네임 서버를 가질 수 있어, 업스트림 DNS 서버가 서버 측 타임아웃이나 기타 연결 문제로 인해 빈 응답을 반환할 수 있습니다. Chute는 업스트림 DNS 서버가 명시적으로 빈 DNS 응답을 반환하거나, 일부 서버가 빈 응답을 반환하고 다른 서버가 2초 내에 응답하지 못하는 경우 빈 DNS 오류를 보고합니다.
일부 DNS 레코드는 설정으로 인해 TTL이 매우 짧지만, Chute는 5분 미만의 TTL을 따르지 않습니다. optimistic-dns = true를 통해 낙관적 DNS를 활성화하면 캐시된 DNS 결과를 즉시 반환하면서 백그라운드에서 새로고침할 수 있습니다.
IPv6가 활성화된 경우, Chute DNS 클라이언트는 업스트림 DNS 서버에 A 및 AAAA 질문을 모두 보냅니다. 가장 먼저 반환된 A 또는 AAAA 응답이 사용됩니다.