Documentation

updns

Build Status Crates.io Crates.io


updns is a simple DNS proxy server developed using Rust. You can intercept any domain name and return the ip you need.

Install

Download the binary from the release page

Or use cargo to install

cargo install updns

Start to use

updns
# or
updns -c /your/hosts

You may use sudo to run this command because you will use the 53 port, make sure you have sufficient permissions.

Now change your local DNS server to 127.0.0.1 🚀

Running in docker

Build docker image

docker build -t updns .

Start up

docker run -d --name updns -p 53:53/udp -v /root/updns/:/root/.updns/ --restart always updns

Command

Usage:
    updns [COMMAND] [OPTION]
            
Command:
    add        Add a DNS record
    rm         Remove a DNS record
    ls         Print all configured DNS records
    config     Call vim to edit the configuration file
    path       Print related directories
    help       Print help information
    version    Print version information

Option:
    -c    Specify a config file
    -w    Check the interval of the configuration file

Config

You can use updns config command and then call vim quick edit, or use updns path find the updns's installation directory and edit the config file

You can specify standard domains, or utilize regular expressions for dynamic matching, You can update the config file at any time, updns will listen for file changes

bind     0.0.0.0:53    # Binding address
proxy    8.8.8.8:53    # Proxy address
timeout  2000          # Proxy timeout (ms)

# Domain matching
google.com             1.1.1.1
^\w+.bing.com$         2.2.2.2
github.com             ::

# Import from other file
import /other/hosts

Reference

Building a DNS server in Rust

License

MIT license