yadd icon indicating copy to clipboard operation
yadd copied to clipboard

Yet another DNS dispatcher written in Rust

yadd

Build Status AppVeyor Status

Yadd (Yet Another DNS Dispatcher) forwards DNS queries to multiple servers in parallel and decides which result to return by custom rules.

It aims to be fast and flexible but yet easy to use.

Prebuilt releases are available here.

Because the docs in the master branch may be newer than the release you use, please switch to the corresponding git tag before going on reading.

Features

  • DNS over various protocols

    • UDP
    • TCP
    • TLS
  • Rule based dispatching and response filtering

  • Good performance

    • Parallel forwarding
    • TCP connection reuse

Usage

The path of the configuration file is passed using -c:

$ ./yadd -c <CONFIG_FILE>

If you ignore -c, yadd will load config.toml.

Note: All non-absolute file paths (in the command line arguments and in the config file) are relative to the working directory instead of the location of the executable or the config file.

Examples

  • ChinaDNS (Users in China should prefer this.)

  • OpenNIC (Use OpenNIC DNS for OpenNIC domains and Google DNS for the others.)

  • Template with all configurable settings (It is exhaustedly commented. Read it if you want to write your own config file.)

Build

The minimum required Rustc version is 1.31 (Rust 2018).