
Docs •
Anglais | 中文
SmartDNS-RS? est un serveur DNS local par C SmartDNS pour accepter les demandes de requête DNS de clients locaux, obtient les résultats de la requête DNS à partir de plusieurs serveurs DNS en amont et renvoie les résultats d'accès les plus rapides aux clients. Éviter la pollution du DNS et améliorer la vitesse d'accès au réseau, prend en charge le filtrage d'annonces haute performance.
Plusieurs serveurs DNS en amont
Prend en charge la configuration de plusieurs serveurs DNS en amont et la requête en même temps. La requête ne sera pas affectée, même s'il existe une exception du serveur DNS.
Renvoyer l'adresse IP la plus rapide
Prend en charge la recherche de l'adresse IP d'accès la plus rapide à partir de la liste d'adresses IP du nom de domaine et le renvoyant au client pour éviter la pollution du DNS et améliorer la vitesse d'accès au réseau.
Prise en charge de plusieurs protocoles de requête
Prend en charge les requêtes et le service UDP, TCP, DOT, DOQ, DOH, DOH3, et les requêtes de port non 53, en évitant efficacement la pollution du DNS et protéger la confidentialité, et soutenir les DNS de requête sur SOCKS5, le proxy HTTP.
Spécification d'adresse IP de domaine
Prend en charge la configuration de l'adresse IP d'un domaine spécifique pour réaliser l'effet du filtrage publicitaire et éviter les sites Web malveillants.
Transfert de domaine DNS
Prend en charge le transfert DNS, IPSET et NFTABLE. Prise en charge de la définition du résultat du domaine sur IPSET et NFTSET SET lorsque la vérification de la vitesse échoue.
Prise en charge multi-plateforme de Windows / MacOS / Linux
Prend en charge l'installation en tant que service et l'exécute au démarrage.
Prise en charge IPv4, IPv6 Dual Stack
Prend en charge IPv4, le réseau IPv6, la requête de support A, l'enregistrement AAAA, la sélection IP à double pile et le filtre IPv6 AAAA.
DNS64
Prend en charge la traduction DNS64.
Haute performance et faible consommation de ressources
Modèle d'E / S asynchrone multithread basé sur Tokio; Caches Résultats de la requête; Prend en charge le nom de domaine le plus utilisé préfectif expiré, requête «0» millisecondes, sans éliminer l'impact du cryptage DOH et DOT.
Remarque: La version C de SmartDNS est très fonctionnelle, mais car elle ne prend en charge que Linux , tandis que MacOS et Windows ne peuvent être pris en charge que via Docker ou WSL. Par conséquent, je souhaite développer une version rouille de SmartDNS qui prend en charge la compilation vers l'environnement Windows, MacOS, Linux et Android Termux à exécuter, et est compatible avec sa configuration.
Il est toujours en cours de développement, veuillez ne pas l'utiliser dans un environnement de production, bienvenue pour essayer de fournir des commentaires.
Veuillez vous référer à TODO pour la couverture de la fonction
Les constructions nocturnes peuvent être trouvées ici.
Macos
Si vous avez installé Brew, vous pouvez utiliser directement la commande suivante pour installer.
brew update
brew install smartdns Remarque: L'écoute sur le port 53 nécessite une autorisation racine, donc sudo est requis.
La commande sudo smartdns service start for for brew installé smartdns est la même que sudo brew services start smartdns .
Si vous n'avez pas brew installation, téléchargez simplement le package de compression du programme compilé et installez-le comme ci-dessous.
Windows / Linux
Allez ici pour télécharger le package et le décompresser.
Obtenir de l'aide
./smartdns helpExécutez en premier plan, facile à vérifier l'état de course
./smartdns run -c ./smartdns.conf -v-v est autorisé à imprimer les journaux de débogage.Exécutez en tant que service d'arrière-plan, exécutez automatiquement au démarrage
Obtenez l'aide des commandes de gestion des services.
./smartdns service helpRemarque: Installé en tant que service système, des autorisations administratrices / racines sont nécessaires.
La gestion des services est compatible avec tous les systèmes, appelez SC sous Windows; Appelez launchctl ou brew sur macOS; Appelez Systemd ou OpenRc sur Linux.
Ce qui suit est l'exemple de configuration la plus simple
# Listen on local port 53
bind 127.0.0.1:53
# Configure bootstrap-dns, if not configured, call the system_conf,
# it is recommended to configure, so that it will be encrypted.
server https://1.1.1.1/dns-query -bootstrap-dns -exclude-default-group
server https://8.8.8.8/dns-query -bootstrap-dns -exclude-default-group
# Configure default upstream server
server https://cloudflare-dns.com/dns-query
server https://dns.quad9.net/dns-query
server https://dns.google/dns-query
# Configure the Office(Home) upstream server
server 192.168.1.1 -exclude-default-group -group office
# Domain names ending with ofc are forwarded to the office group for resolution
nameserver /ofc/office
# Set static IP for domain name
address /test.example.com/1.2.3.5
# Block Domains (Ad Blocking)
address /ads.example.com/#
# The following features are not yet supported in the [C SmartDNS](https://github.com/pymumu/smartdns) and are only applicable to SmartDNS-rs.
# Configure DoH3
server-h3 1.1.1.1
# Configure DoQ
server-quic unfiltered.adguard-dns.com
Pour des configurations plus avancées, veuillez vous référer à ici et vous référer à TODO pour la couverture de la fonction.
En supposant que vous ayez installé Rust, vous pouvez ouvrir le terminal et exécuter ces commandes:
git clone https://github.com/mokeyish/smartdns-rs.git
cd smartdns-rs
# install https://github.com/casey/just
cargo install just
# build
just build --release
# print help
./target/release/smartdns --help
# run
sudo ./target/release/smartdns run -c ./etc/smartdns/smartdns.confPour la compilation croisée, il est recommandé d'utiliser Cross (nécessite Docker).
Ce logiciel n'aurait pas été possible sans:
Ce logiciel contient des codes de https://github.com/hickory-dns/hickory-dns, qui est sous licence dans l'un ou l'autre de
Et d'autres codes sont sous licence sous
À moins que vous ne soyez explicitement indiqué autrement, toute contribution intentionnellement soumise pour inclusion dans les travaux par vous, telle que définie dans la licence GPL-3.0, doit être autorisée comme ci-dessus, sans aucune condition ou condition supplémentaire.