Web Programming TutorialsLearn How to Build DNS Module Utility Modules in Nodejs

Learn How to Build DNS Module Utility Modules in Nodejs

In this article, we are going to discuss building the Node.js DNS module. A DNS module is used to do the DNS lookup and underlying operating system name resolution functionalities through an asynchronous network wrapper. We use the following syntax to import an asynchronous network wrapper.

// Command to import DNS Module in Node.js.

var dns = require("dns");

Methods present in the DNS Module of Node.Js
The following are the basic methods and their descriptions which are present in the DNS Module of Node.js.

S No

Method

Description

1.

dns.lookup(hostname[, options], callback)

This method is used to resolve a hostname (e.g. ‘www.eduonix.com’) into A (IPv4) default or AAAA (IPv6) address record. Options can be an object or integer. If options is an integer, then it must be 4 or 6 for IPv4 or IPv6 respectively.

2.

dns.lookupService(address, port, callback)

This method is used to resolve the given address and port into a hostname and service using the getnameinfo.

3.

dns.resolve(hostname[, rrtype], callback)

This method is used to resolve a hostname (e.g. ‘www.eduonix.com’) into an array of the record types specified by rrtype.

4.

dns.resolve4(hostname, callback)

This method is same as dns.resolve () method but only for IPv4 queries (A records). Addresses is an array of IPv4 addresses (e.g. [‘ 67.227.229.33’, etc.]).

5.

dns.resolve6(hostname, callback)

This method is same as dns.resolve4 () except for IPv6 queries (an AAAA query).

6.

dns.resolveMx (hostname, callback)

This method is same as dns.resolve (), but only for mail exchange queries (MX records).

7.

dns.resolveTxt (hostname, callback)

This method is same as dns.resolve (), but only for text queries (TXT records).

8.

dns.resolveSrv (hostname, callback)

This method is same as dns.resolve (), but only for service records (SRV records).

9.

dns.resolveSoa(hostname, callback)

This method is same as dns.resolve (), but only for start of authority record queries (SOA record).

10.

dns.resolveNs (hostname, callback)

This method is same as dns.resolve (), but only for name server records (NS records).

11

dns.resolveCname (hostname, callback)

This method is same as dns.resolve (), but only for canonical name records (CNAME records).

12

dns.reverse (ip, callback)

This method is used to resolve an ip address to an array of hostnames.

13

dns.getServers ()

This method is used to return an array of IP addresses as strings that are currently being used for resolution.

14

dns.setServers (servers)

For the given array of IP addresses as strings, this method is used to set them as the servers in order to use for resolving.

‘dns.resolve ()’ method rrtypes:
The following are the rrtypes used by ‘dns.resolve ()’ method:

S No.

rrtypes

Description

1.

A

This rrtype is used for the IPV4 addresses, which are default.

2.

AAAA

This rrtype is used for the IPV6 addresses.

3.

CNAME

This rrtype is used for the canonical name records.

4.

MX

This rrtype is used for the mail exchange records.

5.

NS

This rrtype is used for the name server records.

6.

PTR

This rrtype is used for the reverse IP lookups.

7.

SOA

This rrtype is used for the start of authority record.

8.

SRV

This rrtype is used for the SRV records.

9.

TXT

This rrtype is used for the text records.

Error Codes returned by DNS query
The following are the error codes returned by the DNS Query.

S No.

Error Codes

Description

1.

dns.NODATA

This error code is returned by the DNS server when there is no data.

2.

dns.FORMERR

This error code is returned by the DNS server when query was badly formatted.

3.

dns.SERVFAIL

This error code is returned by the DNS server when there is general failure.

4.

dns.NOTFOUND

This error code is returned by the DNS server when domain name not found.

5.

dns.NOTIMP

This error code is returned by the DNS server when it does not implement requested operation.

6.

dns.REFUSED

This error code is returned by the DNS server when DNS server refused the query.

7.

dns.BADQUERY

This error code is returned by the DNS server when there is a badly formatted DNS query.

8.

dns.BADNAME

This error code is returned by the DNS server when there is a badly formatted hostname.

9.

dns.BADFAMILY

This error code is returned by the DNS server when unsupported address family.

10.

dns.BADRESP

This error code is returned by the DNS server when there is a badly formatted DNS reply.

11.

dns.CONNREFUSED

This error code is returned by the DNS server when it could not contact the DNS servers.

12.

dns.TIMEOUT

Timeout while contacting DNS servers.

13.

dns.EOF

This error code is returned by the DNS server at the end of a file.

14.

dns.FILE

This error code is returned by the DNS server when there is an error reading the file.

15.

dns.NOMEM

This error code is returned by the DNS server when it is out of memory.

16.

dns.DESTRUCTION

This error code is returned by the DNS server when the channel is being destroyed.

17.

dns.BADSTR

This error code is returned by the DNS server when there is a badly formatted string.

18.

dns.BADFLAGS

This error code is returned by the DNS server when the Illegal flags are specified.

19.

dns.NONAME

This error code is returned by the DNS server when the given hostname is not numeric.

20.

dns.BADHINTS

This error code is returned by the DNS server when Illegal hints flags are specified.

21.

dns.NOTINITIALIZED

This error code is returned by the DNS server when c-ares library initialization has not yet been performed.

22.

dns.LOADIPHLPAPI

This error code is returned by the DNS server when there is an error in loading iphlpapi.dll.

23.

dns.ADDRGETNETWORKPARAMS

This error code is returned by the DNS server when it could not find the GetNetworkParams function.

24.

dns.CANCELLED

This error code is returned by the DNS server when the DNS query is cancelled.

Example on use of DNS Module in Node.js Application
In the following example, we are going to demonstrate the use of the above DNS module methods. Here, we are going to create one js file named DNSModuleServer.js, which has the following code.

DNSModuleServer.js

var dns = require('dns');

dns.lookup('www.eduonix.com', function onLookup(err, address, family) {
   console.log('IP Address for www.eduonix.com:', address);
   dns.reverse(address, function (err, hostnames) {
      if (err) {
         console.log(err.stack);
      }

      console.log('reverse for IP Address ' + address + ': ' + JSON.stringify(hostnames));
   });  
});

Explanation of the code
In the above code, we are looking up ‘www.eduonix.com’ domain and retrieving IP address which are printed on the console. Next, we are using the ‘reverse’ method to print the reverse of the host name by using the method ‘JSON.stringify (hostnames))’.

Output
When we execute the above Node.js programs, then we will observe the following output on the console.

IP Address for www.eduonix.com: 67.227.229.33
reverse for IP Address 67.227.229.33: ["host.eduonix.com"]

Source code for this DNS module of Node.js blog

Conclusion: –
In this article, we discussed the various methods present in the DNS module of Node.js. We have imported the DNS module and use the associated methods to build a DNS Module utility.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Exclusive content

- Advertisement -

Latest article

21,501FansLike
4,106FollowersFollow
106,000SubscribersSubscribe

More article

- Advertisement -