Skip to main content
Engineering LibreTexts

10-F.11.2: Network Troubleshooting Commands - dig / nslookup / host

  • Page ID
    40970
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    The dig Command

    The dig command stands for Domain Information Groper. It is a network administration command-line tool for querying the Domain Name System (DNS). The dig command is useful for network troubleshooting and for educational purposes. It can operate based on command line option and flag arguments, or in batch mode by reading requests from an operating system file. When a specific name server is not specified in the command invocation, it uses the operating system's default resolver, usually configured in the file resolv.conf. Without any arguments it queries the DNS root zone.

    Syntax:

    dig [ OPTIONS ]

    dig is very easy to use, and works well without any options. The list of options is quite long, feel free to consult the man page for this command.

    The following example is a simple lookup of the IP address for the server specified on the command line - deltacollege.edu. The lines that begin with a semi-colon provide comments about the output.

    pbmac@pbmac-server $ dig deltacollege.edu
    ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> deltacollege.edu
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64205
    ;; flags: qr rd ra; QUERY: 1, Answer: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;deltacollege.edu.        IN    A
    
    ;; Answer SECTION:
    deltacollege.edu.    3599    IN    A    52.36.131.229
    
    

    The nslookup Command

    nslookup is a network administration command-line tool available in many computer operating systems for querying the Domain Name System (DNS) to obtain domain name or IP address mapping, or other DNS records. The name "nslookup" means "name server lookup."

    The command does not use the operating system's local Domain Name System resolver library to perform its queries, and thus may behave differently from dig, which it does. Additionally, vendor-provided versions may include output of other sources of name information, such as host files and Network Information Service. Some behaviors of nslookup may be modified by the contents of resolv.conf.

    Syntax:

    nslookup [ OPTION ] [name | -] [server]

    It is possible to use nslookup in a command line mode, or an interactive mode. In the first example the command prints output and returns to the system prompt. In the second example issuing nslookup alone takes the user to a command prompt where command specific input can be entered.

    pbmac@pbmac-server $ nslookup deltacollege.edu
    Server:        8.8.8.8
    Address:    8.8.8.8#53
    
    Non-authoritative answer:
    Name:    deltacollege.edu
    Address: 52.36.131.229
    
    pbmac@pbmac-server $ nslookup
    > deltacollege.edu
    Server:        8.8.8.8
    Address:    8.8.8.8#53
    
    Non-authoritative answer:
    Name:    deltacollege.edu
    Address: 52.36.131.229
    >
    

    The host Command

    The host command in Linux system is used for DNS (Domain Name System) lookup. It is used to find the IP address of a particular domain name, or if you want to find out the domain name of a particular IP address the host command becomes handy. You can also find more specific details of a domain by specifying the corresponding option along with the domain name.

    Syntax:

    host [ OPTIONS ] hostname

    Command Options

    Options Meaning
    -4 This option specifies that only IPv4 should be used for query transport. See also the -6 option.
    -6 This option specifies that only IPv6 should be used for query transport. See also the -4 option.
    -a The -a ("all") option is normally equivalent to -v -t ANY. It also affects the behavior of the -l list zone option.
    -A The -A ("almost all") option is equivalent to -a, except that RRSIG, NSEC, and NSEC3 records are omitted from the output.
    -c class This option specifies the query class, which can be used to lookup HS (Hesiod) or CH (Chaosnet) class resource records. The default class is IN (Internet).
    -C This option indicates that named should check consistency, meaning that host queries the SOA records for zone name from all the listed authoritative name servers for that zone. The list of name servers is defined by the NS records that are found for the zone.
    -d This option prints debugging traces, and is equivalent to the -v verbose option.
    -l This option tells named` to list the zone, meaning the ``host command performs a zone transfer of zone name and prints out the NS, PTR, and address records (A/AAAA).
    -N ndots This option specifies the number of dots (ndots) that have to be in name for it to be considered absolute. The default value is that defined using the ndots statement in /etc/resolv.conf, or 1 if no ndots statement is present. Names with fewer dots are interpreted as relative names, and are searched for in the domains listed in the search or domain directive in /etc/resolv.conf.
    -p port This option specifies the port to query on the server. The default is 53.
    -r This option specifies a non-recursive query; setting this option clears the RD (recursion desired) bit in the query. This means that the name server receiving the query does not attempt to resolve name. The -r option enables host to mimic the behavior of a name server by making non-recursive queries, and expecting to receive answers to those queries that can be referrals to other name servers.
    -R number This option specifies the number of retries for UDP queries. If number is negative or zero, the number of retries is silently set to 1. The default value is 1, or the value of the attempts option in /etc/resolv.conf, if set.
    -s This option tells named not to send the query to the next nameserver if any server responds with a SERVFAIL response, which is the reverse of normal stub resolver behavior.
    -t type This option specifies the query type. The type argument can be any recognized query type: CNAME, NS, SOA, TXT, DNSKEY, AXFR, etc.

    Without a hostname the command will print out the command options.

    Using the -v option generates a very verbose output - gives a lot of information.

    pbmac@pbmac-server $ host -v deltacollege.edu
    Trying "deltacollege.edu"
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53400
    ;; flags: qr rd ra; QUERY: 1, Answer: 1, AUTHORITY: 0, ADDITIONAL: 0
    ;; QUESTION SECTION:
    ;deltacollege.edu.        IN    A
    
    ;; Answer SECTION:
    deltacollege.edu.    3599    IN    A    52.36.131.229
    Received 50 bytes from 8.8.8.8#53 in 164 ms
    Trying "deltacollege.edu"
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4462
    ;; flags: qr rd ra; QUERY: 1, Answer: 0, AUTHORITY: 1, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;deltacollege.edu.        IN    AAAA
    ;; AUTHORITY SECTION:
    deltacollege.edu.    1799    IN    SOA    sdc-ns2.deltacampus.net. hostmaster.deltacollege.edu. 2015121323 1200 600 1209600 3600
    
    Received 104 bytes from 8.8.8.8#53 in 187 ms
    Trying "deltacollege.edu"
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41683
    ;; flags: qr rd ra; QUERY: 1, Answer: 4, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;deltacollege.edu.        IN    MX
    
    ;; Answer SECTION:
    deltacollege.edu.    3599    IN    MX    20 mailin.deltacollege.edu.
    deltacollege.edu.    299    IN    MX    15 mailin1.deltacollege.edu.
    deltacollege.edu.    3599    IN    MX    5 deltacollege-edu.mail.protection.outlook.com.
    deltacollege.edu.    3599    IN    MX    15 mailin3.deltacollege.edu.
    Received 165 bytes from 8.8.8.8#53 in 133 ms
    

    Adapted from:
    "dig (command)" by Multiple ContributorsWikipedia is licensed under CC BY-SA 3.0
    "host command in Linux with examples" by sethusubramanian, Geeks for Geeks is licensed under CC BY-SA 4.0


    10-F.11.2: Network Troubleshooting Commands - dig / nslookup / host is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by LibreTexts.