Skip to content

Latest commit

 

History

History
61 lines (43 loc) · 1.76 KB

README.md

File metadata and controls

61 lines (43 loc) · 1.76 KB

Race DNS Proxy

⚠️ Experimental: This project is currently in experimental stage and under active development.

A high-performance DNS proxy that races multiple DNS-over-HTTPS (DoH) providers to get the fastest response.

Features

  • Concurrent DNS queries to multiple providers
  • Automatic failover and retry
  • DNS-over-HTTPS (DoH) support
  • Smart response selection based on speed and status
  • Built with Rust for high performance and reliability
  • Configurable DNS providers via TOML configuration

Dependencies

  • hickory-dns: Used for DNS protocol operations and DoH support.
  • tokio: Provides the asynchronous runtime for handling concurrent DNS queries.
  • rustls: A modern TLS library written in Rust.
  • tracing: Application-level tracing framework.
  • webpki-roots: Mozilla's CA root certificates for use with webpki.

Configuration

Create or modify config.toml to configure DNS providers:

[providers.alidns-doh]
addr = "223.5.5.5:443"
hostname = "dns.alidns.com"

[providers.dnspod-doh]
addr = "1.12.12.12:443"
hostname = "doh.pub"

Usage

Run the proxy server:

race-dns-proxy [OPTIONS]

Command Line Options

Options:
  -p, --port <PORT>      DNS server listening port [default: 5653]
      --log <LOG>        Log filepath
  -c, --config <CONFIG>  Configuration file path [default: config.toml]
  -h, --help             Print help
  -V, --version          Print version

The server will listen for DNS queries and forward them to configured DoH providers.

License

This project is Licensed under MIT License.