We implemented a local nameserver in Go to avoid possible effects on other remote nameservers. Installation of this local nameserver is optional, and will not affect the performance of ResolverFuzz.
Install the Go compiler as instructed.
Same with 0.3: Docker Network Configuration, the Docker network interface name is required here. It will be required as an argument during the execution of the local nameserver.
Change the terminal directory to the current folder:
cd local_ns
Then, initialize the packet dependencies for the local nameserver, and compile it:
go mod init local_ns
go mod tidy
go build -o local_ns local_ns.go
The executable binary local_ns
will be created.
Finally, run the executable with two arguments. The first one is the network interface of the Docker network, and the second one is the zone file in JSON format:
sudo ./local_ns [network_interface] [zone_file]
For example, on our workstation, the command will be :
sudo ./local_ns br-35582c1d0a12 test-zone.json
Keep it running on the background during the execution of ResolverFuzz
so that all the NS referral queries for root servers, .com
TLDs and attacker-controlled domains (i.e., qifanzhang.com
and its sub-domains) will be answered locally by this program.