/yadd

Yet another DNS dispatcher written in Rust

Primary LanguageRustMIT LicenseMIT

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

Build

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