In a previous article, we discussed the concept and importance of DNS resolver servers. In this article, we will delve into the process of setting up a DNS resolver server on a Linux machine. It's important to note that the steps may vary depending on the Linux distribution you are using. For the purpose of this article, we will focus on Debian.
Step 1: Install bind9
sudo apt-get install bind9
Step 2: Configure bind9 as the primary DNS server
Edit the named.conf configuration file located in the /etc/bind/ directory. Use your preferred text editor to open the file.
vim /etc/bind/named.conf.local
Within the named.conf file, you will need to configure the zone for your domain and specify the file where you will store the DNS records. In my scenario, I have created two distinct zones: one for my database servers and another for my application servers.
zone "db.noratech" {
type master;
file "/etc/bind/db.noratech";
};
zone "api.noratech" {
type master;
file "/etc/bind/api.noratech";
};
Step 3: Create the zone files
let's create the db.noratech config file
sudo vim /etc/bind/db.noratech
Then write the following :
$TTL 86400
@ IN SOA ns1.dns.noratech. admin.db.noratech. (
2022021201 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns1.dns.noratech.
@ IN NS ns2.dns.noratech.
ns1.dns.noratech. IN A <DNS-resolver-IP>
ns2.dns.noratech. IN A <DNS-resolver-IP>
<yourDbName> IN A <yourDbIP>
<yourDbName> IN A <yourDbIP>
In the provided DNS configuration snippet, the $TTL directive is responsible for setting the time-to-live value for the DNS records. If you would like to understand the other directives and their significance in more detail, I recommend referring to our previous article "How DNS Resolver Works."
Additionally, the A records play a crucial role in associating DNS names with their corresponding IP addresses. To customize the configuration for your specific setup, replace <DNS-resolver-IP> with the IP address of your DNS resolver server.
Similarly, substitute <yourDbName> with the desired name for your database server, and replace <yourDbIP>with the appropriate IP address assigned to your database server.
Don't forget to do the same with api.noratech
Step 4: Verify your configurations
Check the syntax using the following command:
named-checkconf
Restart the bind9 service:
systemctl restart bind9
To check the functionality, you can use the following command:
dig @<DNS-resolver-IP> <yourDbName>.db.noratech
These steps will help you set up a standalone DNS resolver server on your Linux machine.
Step 5: Test from a client machine
Now let's test it from a client machine running macOS, you can change the DNS configuration in the System Preferences. Here's how you can do it:
System Preferences > Network > select Wifi ( or Ethernet ) > Advanced > DNS > + > add the IP address of your DNS resolver server > OK
Then try to call your app server through curl or a browser.
That's a wrap!
We hope you found this article helpful in setting your own DNS Resolver ♡
Opmerkingen