
ドキュメント•
英語| 中文
smartdns-rs? C SMARTDNSに装飾されたローカルDNSサーバーは、ローカルクライアントからのDNSクエリリクエストを受け入れ、複数の上流のDNSサーバーからDNSクエリの結果を取得し、クライアントに最速のアクセス結果を返します。 DNS汚染を回避し、ネットワークアクセス速度を改善すると、高性能広告フィルタリングがサポートされます。
複数の上流DNSサーバー
DNSサーバーの例外がある場合でも、複数の上流のDNSサーバーとクエリの設定とクエリを同時にサポートします。クエリは影響を受けません。
最速のIPアドレスを返します
ドメイン名のIPアドレスリストから最速のアクセスIPアドレスを見つけることをサポートし、DNS汚染を回避し、ネットワークアクセス速度を改善するためにクライアントに戻します。
複数のクエリプロトコルのサポート
UDP、TCP、DOT、DOQ、DOH、DOH3クエリとサービス、および53以外のポートクエリをサポートし、DNS汚染とプライバシーを効果的に回避し、SOCKS5、HTTPプロキシよりもDNSをサポートします。
ドメインIPアドレスの仕様
特定のドメインのIPアドレスの構成をサポートして、広告フィルタリングの効果を実現し、悪意のあるWebサイトを避けます。
DNSドメイン転送
DNS転送、IPSET、およびNFTABLESをサポートします。サポート速度チェックが失敗したときに、ドメインの結果をIPSETおよびNFTSETセットに設定します。
Windows / MacOS / Linuxマルチプラットフォームサポート
サービスとしてインストールし、スタートアップで実行することをサポートします。
IPv4、IPv6デュアルスタックをサポートします
IPv4、IPv6ネットワーク、サポートクエリA、AAAAレコード、デュアルスタックIP選択、フィルターIPv6 AAAAレコードをサポートします。
DNS64
DNS64翻訳をサポートします。
高性能、低リソース消費
トキオベースのマルチスレッド非同期I/Oモデル。キャッシュクエリの結果。最も使用されているドメイン名の有効期限が切れたプリフェッチ、クエリ'0'ミリ秒をサポートします。
注:smartdnsのCバージョンは非常に機能的ですが、 Linuxのみをサポートしているため、 MacosとWindowsはDockerまたはWSLを通じてのみサポートできます。したがって、Windows、MacOS、Linux、およびAndroid Termux環境へのコンパイルをサポートし、実行して構成と互換性があるSMARTDNSのRustバージョンを開発したいと考えています。
まだ開発中です。生産環境で使用しないでください。フィードバックを提供してください。
関数カバレッジについては、TODOを参照してください
毎晩のビルドはここにあります。
macos
Brewをインストールしている場合は、次のコマンドを直接インストールできます。
brew update
brew install smartdns注:ポート53でリッスンするには、ルートの許可が必要なため、 sudoが必要です。
brewインストールされたsmartdnsのコマンドsudo smartdns service start sudo brew services start smartdnsと同じです。
brewがインストールされていない場合は、コンパイルされたプログラム圧縮パッケージをダウンロードして、以下のようにインストールしてください。
Windows / Linux
ここにアクセスしてパッケージをダウンロードして減圧します。
助けを得る
./smartdns helpランニングステータスを簡単に確認できます
./smartdns run -c ./smartdns.conf -v-vデバッグログを印刷することができます。バックグラウンドサービスとして実行し、起動時に自動的に実行します
サービス管理コマンドのヘルプを取得します。
./smartdns service help注:システムサービスとしてインストールされ、管理者 /ルートアクセス許可が必要です。
サービス管理はすべてのシステムと互換性があり、WindowsでSCを呼び出します。 launchctlまたはbrew on macosを呼び出します。 LinuxでSystemdまたはOpenRc呼び出します。
以下は、最も単純な例構成です
# 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
詳細な構成については、こちらを参照して、関数カバレッジについてはTODOを参照してください。
Rustをインストールしたと仮定すると、端末を開いてこれらのコマンドを実行できます。
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.conf相互コンパイルには、Crossを使用することをお勧めします(Dockerが必要です)。
このソフトウェアは、それなしでは不可能でした。
このソフトウェアには、https://github.com/hickory-dns/hickory-dnsからのコードが含まれています。
他のコードはライセンスされています
明示的に特に述べない限り、GPL-3.0ライセンスで定義されているように、お客様による作業に含めるために意図的に提出された拠出は、追加の条件なしに、上記のようにライセンスされます。