====== Complete the following DNS lab exercises ====== ==== Step 1: Login ==== The username and password is "kenog". There is no root password on the lab. We will use **sudo** to obtain temporary root authorizations. This is recommended best practice. ==== Step 2: Configure the stub resolver ==== Add the DNS google server as the recursive server for now: sudo rm /etc/resolv.conf sudo sh -c "echo nameserver 8.8.8.8 > /etc/resolv.conf" ==== Step 3: Install BIND and dig ==== Then, install bind and dnstools sudo apt-get update sudo apt-get install -y bind9 dnsutils net-tools ==== Step 4: Verify IP address ==== Then we verify the current IP address on the debian server using ifconfig . sudo ifconfig You should get output as below: {{::screenshot_2025-04-01_at_7.44.05 am.png?400|}} In this case, the IP address is 192.168.122.4 === Step 5: Configure BIND === First we will remove the default BIND configuration sudo mv /etc/bind/named.conf.options /etc/bind/named.conf.options.old Then we will use a text editor to open a blank config file: sudo nano /etc/bind/named.conf.options Adjust the following text and replcace the IP address with what you saw from ifconfig options { directory "/var/cache/bind"; dnssec-validation auto; listen-on { 192.168.122.4; 127.0.0.1; }; ## match your IP address recursion yes; # This tell BIND to recursively find DNS data. allow-query { trusted; }; ## Add security to prevent unwanted users }; acl "trusted" { 192.168.0.0/16; # The trusted network localhost; # Loopback interface }; Save and exit the file by holding "Ctrl and X" at the same time. At the next prompt, press "y" and hit enter to save the file. === Step 6: Check BIND config syntax === Bind has a tool to verify that the configuration has no mistakes so that BIND can work properly. sudo named-checkconf If there is no output from that command, BIND is ready to start. Start BIND with the following command sudo service bind9 start === Step 7: Test BIND === The following will use the local DNS server you have installed using "dig" dig @192.168.122.4 twitter.com Assess the response below and look at the Server response section: ; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> @192.168.122.4 twitter.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3236 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: d037dd9d1fddd3230100000067eb72700fd63029431f046c (good) ;; QUESTION SECTION: ;twitter.com. IN A ;; ANSWER SECTION: twitter.com. 300 IN A 162.159.140.229 ;; Query time: 36 msec ;; SERVER: 192.168.122.4#53(192.168.122.4) (UDP) ;; WHEN: Tue Apr 01 04:58:24 UTC 2025 ;; MSG SIZE rcvd: 84 Try the command again and see if there is a change in the query time. === Adjust the stub resolver to use the new DNS server === sudo sh -c "echo nameserver 192.168.122.4 > /etc/resolv.conf" The above command will delete the previous config so use carefully in future === Testing DNS with dig === Try the following dig commands and assess the results: You can substitute with your preferred domain. - To see the DNS referral process: dig +trace www.kenic.or.ke - To see mail servers for a domain: dig +short cnn.com - To see the name servers for a domain: dig +short angani.co ns