/updns-for-provisioning

DNS proxy tool

Primary LanguageRustMIT LicenseMIT

Fork metadata

This version of updns is being bashed into a server suitable to play a part in https://github.com/chrysn/provisioning-demo.

Short of trivial fixes (which may be cherry-picked), it is not expected that any of this makes sense to propose for upstreaming into updns; most changes will add hard-coded behavior. On the long run, it is open whether a later production ready equivalent of the current demo will better be based on this updns fork (with most components, including upstreaming and explicit configuration, being stripped out), or whether a new component will be developed from scratch -- but for now, adding a few hard-coded paths into updns seems to be most practical.


What follows is the original README file of updns.


updns

GitHub Workflow 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

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

Config

You can use updns config command and then call vim edit, or find ~/.updns/config edit

You can specify standard domains, or utilize regular expressions for dynamic matching

Regular expression starts with ~

bind     0.0.0.0:53      # Binding address
proxy    8.8.8.8:53      # Proxy address
timeout  2s              # Proxy timeout (format: 1ms, 1s, 1m, 1h, 1d)

# Domain matching
example.com              1.1.1.1
*.example.com            2.2.2.2
~^\w+\.example\.[a-z]+$  3.3.3.3

# IPv6
test.com                ::

# Import from other file
import /other/hosts

Reference

Building a DNS server in Rust

License

MIT license