Mappage DNS local
Chute prend en charge un mappage DNS personnalisé local. C'est l'équivalent de /etc/hosts, mais avec des fonctions plus puissantes : jokers, alias et attribution d'un serveur DNS.
[Host]
abc.com = 1.2.3.4
*.dev = 6.7.8.9
foo.com = bar.com
bar.com = server:8.8.8.8
Remarque : les lignes de mappage décrites ici sont également acceptées dans une section
[DNS], aux côtés des options de serveur DNS. Consultez Section DNS. La forme Shadowrocketssid:(DNS par réseau) fait exception : elle n'est reconnue que dans[Host], et dans[DNS]elle est lue comme le mappage d'un nom qui ne se présente jamais.
Un mappage peut énumérer plusieurs adresses, IPv4 et IPv6 mélangées : dns.google = 8.8.8.8, 8.8.4.4, 2001:4860:4860::8888. Une question A reçoit en réponse les adresses IPv4, et une question AAAA les adresses IPv6. Une liste qui contient autre chose que des adresses est une erreur de configuration. Un nom mappé sur des adresses d'une seule famille reçoit une réponse vide (NODATA) à une question de l'autre famille, sans que les serveurs amont soient interrogés. Un nom peut aussi occuper deux lignes, l'une pour ses adresses IPv4, l'autre pour ses adresses IPv6. Un mappage ajouté par un rechargement de la configuration ou par un module prend effet immédiatement. Une réponse NXDOMAIN du serveur amont n'est pas mise en cache si le nom est couvert par un mappage ou un alias [Host] ; le mappage ou l'alias est prioritaire.
Joker
Vous pouvez utiliser le préfixe * pour englober tous les sous-domaines. Notez que Chute effectue une simple comparaison de chaînes. Par exemple, *google.com correspondra à google.com, foo.google.com et bargoogle.com. Et *.google.com ne correspondra pas à google.com.
[Host]
*.dev = 6.7.8.9
Alias
C'est l'équivalent d'un enregistrement CNAME.
[Host]
foo.com = bar.com
Une recherche A ou AAAA sur le nom aliasé reçoit en réponse les adresses de la cible, de sorte que le client n'a pas à suivre l'alias lui-même. Lorsque la cible ne possède pas d'adresse de la famille demandée, la réponse est vide plutôt qu'un enregistrement de l'autre famille. Chute résout la cible au chargement de la règle ; si elle n'est pas encore résolue, la réponse est l'enregistrement CNAME et la cible est résolue pour la recherche suivante.
Attribution d'un serveur DNS
Vous pouvez attribuer un serveur DNS précis à un ou plusieurs domaines.
[Host]
bar.com = server:8.8.8.8
server: accepte également une URL DoH, ce qui permet d'attribuer directement un point de terminaison DoH précis aux domaines.
[Host]
*.example.com = server:https://doh.example/dns-query
server: accepte une liste de serveurs séparés par des virgules. Chaque entrée utilisable est conservée et toutes sont interrogées en même temps ; la première réponse l'emporte. Une entrée peut être une adresse IP avec un port facultatif (8.8.8.8:5353, [2001:db8::1]:5353), system, syslib (force-syslib est équivalent) ou une URL DoH. Une adresse IP ou une URL DoH peut se terminer par le suffixe #proxy ; system et syslib écrits avec ce suffixe sont écartés avec un avertissement, car le résolveur du système ne peut pas être envoyé à travers une politique. Une entrée tcp://IP[:port] interroge ce serveur en DNS sur TCP.
[Host]
bar.com = server:8.8.8.8, 8.8.4.4
Vous pouvez attribuer le serveur DNS du système à un ou plusieurs domaines. Chute utilisera uniquement la configuration DNS du système pour interroger ces domaines.
[Host]
devs = server:system
Comme Chute possède sa propre implémentation de client DNS, certains noms d'hôte peuvent ne pas être résolus. Vous pouvez utiliser server:syslib pour laisser le système effectuer la résolution.
[Host]
Macbook = server:syslib
Attribution d'un service DoH
Vous pouvez attribuer un service DoH précis à un ou plusieurs domaines.
[Host]
bar.com = doh:cloudflare
Par défaut, les questions A et AAAA portant sur des noms d'hôte à suffixe .local sont résolues par le système. Les questions d'autres types — PTR, SRV, TXT — vont aux serveurs amont configurés.
Attribution d'un service DoT
Vous pouvez attribuer un service DoT (DNS-over-TLS) précis à un ou plusieurs domaines.
[Host]
bar.com = dot:dns.google
Une entrée dot: ne peut pas porter le suffixe #proxy.
Attribution d'un service DoQ
Vous pouvez attribuer un service DoQ (DNS-over-QUIC) précis à un ou plusieurs domaines.
[Host]
bar.com = doq:dns.adguard.com
L'entrée peut se terminer par le suffixe #proxy, comme dans bar.com = doq:dns.adguard.com#proxy=HK, pour envoyer la requête par cette politique. Le nom de la politique est conservé tel qu'il est écrit.
Attribution d'un service DoH3
Vous pouvez attribuer un service DoH3 (DNS-over-HTTP/3) précis à un ou plusieurs domaines.
[Host]
bar.com = doh3:https://dns.google/dns-query
Comme une entrée DoQ, elle peut se terminer par le suffixe #proxy.
Clés de jeux de règles
La clé peut être un jeu de règles au lieu d'un motif de domaine :
[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> accepte une URL ou le nom d'un fournisseur de règles ; DOMAIN-SET:<source> accepte une URL. Seules les règles de domaine du jeu comptent — les règles IP et les autres types sont ignorés. Le jeu est téléchargé et actualisé de la même façon que lorsqu'une ligne de [Rule] l'utilise, et chaque domaine qu'il reconnaît reçoit la valeur de droite. Les jeux intégrés SYSTEM et LAN ne peuvent pas être utilisés ici.
Script DNS
[Host]
*.corp.example = script:CorpResolver
script:<name> confie la résolution des domaines correspondants au script type=dns portant ce nom — aussi bien pour les requêtes des apps que pour les résolutions de Chute lui-même. Si le script ne renvoie aucune adresse, ou si aucun script dns activé ne porte ce nom, le domaine est résolu normalement.
DNS par réseau (Shadowrocket)
[Host]
ssid:Home WiFi = server:192.168.1.1
La forme Shadowrocket ssid:<network name> = server:<servers> est lue comme une redéfinition DNS de [SSID Setting] pour ce réseau Wi-Fi : tant que l'appareil y est connecté, ces serveurs remplacent les résolveurs classiques du pool principal. Le nom du réseau peut contenir des espaces. Seuls les résolveurs classiques comptent ici — une adresse avec un port facultatif, system ou syslib ; une URL DoH, que server: accepte ailleurs dans [Host], est écartée avec un avis.
Fichier hosts du système
[General]
read-etc-hosts = false
Sous macOS et Android, Chute lit aussi le fichier hosts du système, /etc/hosts, et ajoute ses entrées à cette table avant les lignes de [Host] : lorsqu'un nom figure dans les deux, c'est donc l'adresse du fichier hosts qui l'emporte. read-etc-hosts dans [General] commande ce comportement, activé par défaut ; réglez-le sur false pour laisser le fichier de côté. Chute iOS et tvOS ne lisent jamais de fichier hosts.
Utilisation combinée
Toutes ces fonctions peuvent être utilisées conjointement. Par exemple :
[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