Crates.io | zerodns |
lib.rs | zerodns |
version | 0.1.0-alpha.3 |
source | src |
created_at | 2024-02-12 12:05:49.302812 |
updated_at | 2024-03-03 08:42:29.017135 |
description | A DNS server in Rust, which is inspired from chinadns/dnsmasq. |
homepage | https://github.com/jjeffcaii/zerodns |
repository | https://github.com/jjeffcaii/zerodns |
max_upload_size | |
id | 1136815 |
size | 158,208 |
a DNS server in Rust, which is inspired from chinadns/dnsmasq.
WARNING: still in an active development!!!
Notice: ensure you have just installed on your machine!
run an example:
$ just r
$ dig @127.0.0.1 -p5454 www.youtube.com
Here's an example configuration file:
# The settings of server
[server]
# will listen on tcp+udp
listen = "0.0.0.0:5454"
# use LRU cache with 1000 capacity
cache_size = 1000
##### FILTERS BEGIN #####
# alidns over udp
[filters.alidns]
kind = "proxyby"
props = { servers = ["223.5.5.5", "223.6.6.6"] }
# opendns over tcp
[filters.opendns]
kind = "proxyby"
props = { servers = ["tcp://208.67.222.222:443", "tcp://208.67.220.220:443"] }
# a chinadns filter:
# - use trusted dns servers for oversea domain
# - use mistrusted dns servers for Chinese domain
# NOTICE: require 'geoip_database', you can download from https://git.io/GeoLite2-Country.mmdb
[filters.chinadns]
kind = "chinadns"
props = { trusted = ["tcp://208.67.222.222:443", "tcp://208.67.220.220:443"], mistrusted = ["223.5.5.5", "223.6.6.6"], geoip_database = "GeoLite2-Country.mmdb" }
##### FILTERS END #####
##### RULES BEGIN #####
# NOTICE:
# - will check rules below one by one
# - the 'domain' field follows the glob syntax
# for domain of '*.cn', use alidns filter
[[rules]]
domain = "*.cn"
filter = "alidns"
# for domain of '*apple.com', use alidns filter
[[rules]]
domain = "*.apple.com"
filter = "alidns"
# for domain of '*google*', use opendns filter
[[rules]]
domain = "*google*"
filter = "opendns"
# FINAL: use chinadns for others
[[rules]]
domain = "*"
filter = "chinadns"
##### RULES END #####