A Java implementation of a recursive DNS sinkhole server that returns a false result for pre-defined blocked domains.
SinkholeServer
- The server's entry point (including main function)
DNSRecursiveServer
- The main class for the DNS RecursiveServer
DNSQuery
- A class representing and analyzing DNS query bytes
BlockListFilter
- Stores a HashSet of domains to be blocked from the input txt file and validates if a given domain should be blocked.
Question
- Represents a DNS Question record.
ResourceRecord
- Represents a DNS Resource record (Answer / Authority).
BytesOperations
- Helper class with useful bit-wise operations on bytes.
Tomer Ben-Gigi & Etamar Romano
IDC (Interdisciplinary Center Herzliya)
-
Implement a fully independent iterative resolver, I.e. not relying on local resolver for intermediate DNS server names
-
Add some level of answers caching
-
Handling network issues - handle a query/response to root/intermediate DNS being lost.
-
Reacting more error types (we now only support RCODE=3).