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)サービスで上書きできます。

DNSセクション

DNSオプションは通常[General]に記述しますが、トップレベルの[DNS]セクションに記述しても同等です: dns-server、doh(エイリアスdoh-server、doh-service)、dot、doq、doh3、direct-dns-server、proxy-dns-server、encrypted-dns-server、allow-dns-svcb、encrypted-dns-follow-outbound-mode、hijack-dns、always-real-ipはどちらのセクションでも同じ動作をします。同じセクションはローカルDNSマッピング行、つまり[Host]で使われるドメイン単位の形式も受け付けるため、両方の行形式が1つのセクション内に共存できます。それ以外のキーは、まずマッピング行として読み取られます: IPアドレスも server: 形式の接頭辞も持たない key = value はエイリアスになるため、optimistic-dns = false のように [General] のキーをここへ書き誤ると、エラーにはならず optimistic-dns という名前を false へマッピングするだけになります。マッピングの解析でも拒否された行だけが、ログに通知を出して無視されます。fallback-dns-server と encrypted-dns-skip-cert-verification もここで読み込まれます。

[DNS]
doh = https://dns.google/dns-query
always-real-ip = *.lan
*.example.com = server:1.1.1.1

詳細

Chuteはパフォーマンスを向上させるために、dnsmasqの'--all-servers'パラメータと同様に、全てのDNSサーバーに同時にクエリを送信します。サーバーからの最初の応答が使用されます。Chute iOSアプリとChute Dashboardは、どのサーバーが最初に応答したかを表示します。Chuteが2秒以内に応答を受信しなかった場合、全てのサーバーに再度クエリを送信します。なお、再試行に参加するのはDNSサーバー、DoT、DoQのアップストリームのみです。DoH、DoH3、syslibは最初のラウンドでのみクエリされます。3回の再試行(合計4回の試行)後、または10秒経過後、Chuteは諦めてDNSエラーを報告します。これらの再試行の対象は、Chute自身の名前解決と、TUNインターフェースおよびSOCKS5のUDPリレーから引き受けた問い合わせです。ChuteのDNSリスニングポートに直接送られた問い合わせはサーバーに一度だけ送られて再試行されないため、そのクライアント自身の再試行に任されます。

どのサーバーに問い合わせるかはドメイン名によって決まります。ルールの判定がDIRECTのドメインは、direct-dns-serverが設定されていればそれを使います。プロキシサーバー自身のホスト名はproxy-dns-serverを、ローカルDNSマッピングがあるドメインはそこで指定されたサーバーを使い、それ以外はメインプール(dns-server、doh、dot、doq、doh3)を使います。direct-dns-serverが使われるのは、Chuteが直接接続を張るときに行う名前解決と、アプリの問い合わせがChuteのリゾルバーに届いた場合だけです: TUNでは、アプリのAとAAAAの問い合わせには代わりにフェイクIPが返されます。専用プールから応答がまったくない場合はメインプールで再試行し、メインプールから応答がまったくない場合は、エラーを報告する前にfallback-dns-serverに一度だけ問い合わせます。

一部のドメイン名は権威ネームサーバーのパフォーマンスが悪く、サーバー側のタイムアウトやその他の接続問題により、アップストリームDNSサーバーが空の応答を返す場合があります。Chuteは、アップストリームDNSサーバーが明示的に空のDNS応答を返した場合、または一部のサーバーが空の応答を返し他が3秒以内に応答しなかった場合に、空のDNSエラーを報告します。

一部のDNSレコードは設定により非常に短いTTLを持ちますが、Chuteは60秒の最小TTLを強制します: それより短いTTLは60秒に引き上げられます。楽観的DNS(Optimistic DNS)はデフォルトで有効です — キャッシュされたDNS結果を即座に返しながら、バックグラウンドで更新します。optimistic-dns = falseで無効にできます。ゾーンのSOAレコードを含むNXDOMAIN応答もキャッシュされます。キャッシュされる期間は、そのレコードが否定応答に対して指定する時間を60秒から1日の範囲に収めたものです。期限が切れるまで、その名前にはサーバーに再度問い合わせることなくNXDOMAINが返されます。[Host] のマッピングまたはエイリアスが優先する名前では、アップストリームからのNXDOMAIN応答をキャッシュしません。

DNSキャッシュは 200 レコードを保持します。iOSとtvOSでは上限なしに増やすことはできません。無制限キャッシュの要求は拒否され、200 レコードのキャッシュが維持され、通知が記録されます。

IPv6が利用可能で有効な場合、Chute DNSクライアントはAおよびAAAAの両方の質問をアップストリームDNSサーバーに送信します。最初に返されたAまたはAAAAの応答が使用されます。シングルスタックのネットワークでは、現在ルーティングできないアドレスファミリーの応答はもう一方のファミリーを優先して保留され、もう一方のファミリーが何も返さなかった場合のフォールバックとしてのみ使用されます。

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

本ページは英語版からの翻訳です。内容に相違がある場合は、英語版が優先されます。

results matching ""

    No results matching ""