Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wyhaya/updns
DNS proxy tool
https://github.com/wyhaya/updns
dns dns-proxy dns-server udp
Last synced: 5 days ago
JSON representation
DNS proxy tool
- Host: GitHub
- URL: https://github.com/wyhaya/updns
- Owner: wyhaya
- License: mit
- Created: 2018-03-11T08:11:43.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-03-04T21:35:56.000Z (8 months ago)
- Last Synced: 2024-04-25T18:22:11.421Z (7 months ago)
- Topics: dns, dns-proxy, dns-server, udp
- Language: Rust
- Homepage:
- Size: 181 KB
- Stars: 70
- Watchers: 2
- Forks: 9
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# updns
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/wyhaya/updns/ci.yml?style=flat-square&branch=main)](https://github.com/wyhaya/updns/actions)
[![Crates.io](https://img.shields.io/crates/v/updns.svg?style=flat-square)](https://crates.io/crates/updns)
[![Crates.io](https://img.shields.io/crates/l/updns.svg?style=flat-square)](https://github.com/wyhaya/updns/blob/master/LICENSE)---
updns is a simple DNS proxy server developed using `Rust`. You can intercept any domain name and return the ip you need
## Install
[Download](https://github.com/wyhaya/updns/releases) the binary from the release page
Or use `cargo` to install
```bash
cargo install updns
```## Start to use 🚀
```bash
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
```bash
docker build -t updns .
```Start up
```bash
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](https://rustexp.lpil.uk "rustexp") for dynamic matching
> Regular expression starts with `~`
```ini
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](https://github.com/EmilHernvall/dnsguide)
## License
[MIT](./LICENSE) license