Based on this fantastic blog post. https://implement-dns.wizardzines.com/
Implement DNS in a weekend. I pretty much followed the same approach as Julia Evans described, but implementedin Kotlin, rather than Python.
Run the server
./gradlew run --args="server -p 5354"
Query the server for one DNS query
./gradlew run --args="client -s localhost -p 5354 -d www.facebook.com"
./gradlew run --args="client -s 8.8.8.8 -p 53 -d www.example.com"
Query the server to resolve a domain name
./gradlew run --args="resolver -d www.facebook.com"
- CNAME
- pass arguments
- test resolver
- socket server