Simple forwarding+caching DNS server that works with upstreams over TCP
A tiny DNS server with the ability to forward your DNS requests to upper DNS servers using TCP proto:
- works like a transport proxy UDP -> TCP (requests coming to DNS server via UDP converts to queries over TCP)
- multi-threading (the main reason why golang used)
- cache-in-memory
- periodic garbage collector (removes outdated records by TTL)
- configuration file support
dns 1
/
DNS /
clients ---UDP---> dns2tcp server---TCP--------> dns 2
\
\
...
\ dns N
cd /etc
git clone https://github.com/denisix/dns2tcp
cd dns2tcp
go run dns2tcp.go
bind 127.0.0.1:53
- instructs server to listed on IP 127.0.0.1, port 53ns 1.1.1.1:53
- send TCP DNS queries to upstream at 1.1.1.1 (CloudFlare in this case)ttl-absent 3600
- how long cache absent records, their TTL in secstimeout 100
- 100 msec timeout to wait for replyretry 30
- retries before we gen the contentgc-interval 1800
- 30 min (1800 sec) interval for garbage collector runs
go build dns2tcp.go
./dns2tcp