Linux中Dig工具解析DNS名称服务器 (名称服务器 linux dig)
一、引言
在互联网上,每个设备的唯一标识是IP地址,但IP地址对于人来说不直观,经常会给人带来困扰。为了方便人们记忆、使用、管理,DNS(Domn Name System)系统被广泛应用于互联网信息传输。DNS是一种分布式数据库系统,它通过域名将IP地址映射到可读性更高的主机名上。
DNS分层体系结构由多个域名服务器组成,每个域名服务器都负责管理一定范围的域名。当客户端需要访问某个域名时,它将会发送DNS查询请求到联网的某个域名服务器,该服务器会将查询请求转发到它所属的上层域名服务器和下层域名服务器,最终找到目标域名所对应的IP地址,将响应返回给客户端。
虽然DNS在互联网的工作过程中扮演着一种非常重要的角色,但是由于网络运营商的不稳定性、网络拥堵、DNS服务器负载等原因,DNS解析中的错误十分普遍。为了解决这些问题,可以使用一些工具来解析、监视DNS结构。本文将详细介绍Linux中的Dig工具。
二、Dig工具介绍
Dig(Domn Information Groper)是一个轻量级的命令行工具,它可以用来获取DNS信息,例如获取主机名或IP地址、查询和解析任何DNS记录等。它是一个由ISC(Internet Systems Consortium)开发的免费开源软件,适用于Linux和Unix系统,并且在大多数Linux发行版中已经预装。
三、Dig工具的基本用法
Dig工具的基本语法如下所示:
“`
dig [@server] [-b address] [-c class] [-f filename] [-k filename]
[-p port] [-t type] [-x addr] [-y name:key] [-4]
[-6] [name] [type] [class] [queryopt…]
“`
参数含义:
– [@server] 指定要查询的DNS服务器的IP地址或主机名。如果不指定,默认会查询本地DNS服务器。
– [-b address] 指定查询的源地址。
– [-c class] 指定查询的类别号。可以是IN(Internet)、CH(Chaos) 或HS(Hesiod)。
– [-f filename] 从文件中读取命令行的参数。
– [-k filename] 指定信任软件关键和其他属性所需的公钥,以确保解析的信息正确。
– [-p port] 指定使用的端口号。
– [-t type] 指定查询的记录类型。可以是A(IPv4地址)、AAAA(IPv6地址)、CNAME(统一资源定位器重命名)、MX(邮件交换器地址)等。
– [-x addr] 查询反向域名,即通过指定IP地址查询域名。
– [-y name:key] 用于加密DNS查询。
– [-4] 强制使用IPv4地址。
– [-6] 强制使用IPv6地址。
基本查询语法:
– 查询A记录:`dig A www.bdu.com`
– 查询CNAME记录:`dig CNAME www.bdu.com`
– 查询MX记录:`dig MX bdu.com`
– 查询NS记录:`dig NS bdu.com`
四、使用Dig工具解析DNS服务器
1. 查询域名对应IP地址
在Linux命令行中输入以下命令:
“`
dig www.bdu.com
“`
该命令将查询百度的IP地址和其他相关信息。如果成功,将显示以下内容:
“`
; > DiG 9.11.4-P2-RedHat-9.11.4-4.P2.el7_8.6 > www.bdu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 4, ADDITIONAL: 9
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.bdu.com. IN A
;; ANSWER SECTION:
www.bdu.com. 167 IN A 39.156.66.15
www.bdu.com. 167 IN A 39.156.69.79
www.bdu.com. 167 IN A 39.156.66.14
www.bdu.com. 167 IN A 39.156.69.75
;; AUTHORITY SECTION:
bdu.com. 921 IN NS ns1.bdu.com.
bdu.com. 921 IN NS ns4.bdu.com.
bdu.com. 921 IN NS ns2.bdu.com.
bdu.com. 921 IN NS ns3.bdu.com.
;; ADDITIONAL SECTION:
ns1.bdu.com. 899 IN A 180.76.130.11
ns1.bdu.com. 899 IN AAAA 2400:da00::a9
ns2.bdu.com. 1084 IN A 61.135.169.121
ns3.bdu.com. 1046 IN A 119.75.222.17
ns3.bdu.com. 1046 IN AAAA 2400:da00::b9
ns4.bdu.com. 858 IN A 115.239.210.38
ns4.bdu.com. 858 IN AAAA 2400:da00::b5
;; Query time: 42 msec
;; SERVER: 192.168.7.1#53(192.168.7.1)
;; WHEN: Sun Oct 03 21:53:48 CST 2023
;; MSG SIZE rcvd: 342
“`
上面的输出信息说明:
– QUESTION SECTION:查询的问题部分,即查询的域名和类型。
– ANSWER SECTION:回答部分,即查询到的域名和对应的IP地址。
– AUTHORITY SECTION:权威部分,即该域名的权威DNS服务器。
– ADDITIONAL SECTION:附加信息部分,即与查询相关的其他信息。
2. 查询PTR记录
通过查询IP地址的PTR记录,可以获得该IP地址所对应的域名。在Linux命令行中,输入以下命令:
“`
dig -x 39.156.66.15 +short
“`
该命令将查询39.156.66.15的PTR记录并返回查询结果。+short参数用来简化查询结果,只显示查询到的域名,而不显示其他信息。输出结果如下所示:
“`
shifen5.bdu.com.
“`
3. 设置DNS服务器
如果要查询网络上的某些特定IP,需要设置自己的DNS服务器来查询。假设我要查询114.114.114.114这个IP的域名,但我的DNS服务器不知道它的域名,此时可以通过设置公共DNS服务器来查询。在Linux命令行中,输入以下命令:
“`
dig @114.114.114.114 -x 114.114.114.114 +trace
“`
该命令将使用114.114.114.114作为DNS服务器查询114.114.114.114的PTR记录,+trace参数用来显示查询过程中每一个DNS服务器的IP地址。结果如下所示:
“`
; > DiG 9.11.4-P2-RedHat-9.11.4-4.P2.el7_8.6 > @114.114.114.114 -x 114.114.114.114 +trace
; (1 server found)
;; global options: +cmd
. 30790 IN NS a.root-servers.net.
. 30790 IN NS c.root-servers.net.
. 30790 IN NS d.root-servers.net.
. 30790 IN NS e.root-servers.net.
. 30790 IN NS f.root-servers.net.
. 30790 IN NS g.root-servers.net.
. 30790 IN NS h.root-servers.net.
. 30790 IN NS i.root-servers.net.
. 30790 IN NS j.root-servers.net.
. 30790 IN NS k.root-servers.net.
. 30790 IN NS l.root-servers.net.
. 30790 IN NS m.root-servers.net.
. 30790 IN NS b.root-servers.net.
. 30790 IN RRSIG NS 8 0 518400 20231015170000 20231002160000 20236 . HUmKA9mSji8q6U1Bo6Umxlr/7mbUtfc2vgkdcBZmTjZXs16N9HnubP+T mNvsIAgdfEuas/swEOGwz0Z0TbagDNsdd+EWMNs9XlyW8sPKfLlD/o1b vwua4zGG4DBiOgtAKxM50AvRvpo9OkS609GBfu6+lO/clLae2Qo52MeF 3=
;; Received 525 bytes from 114.114.114.114#53(114.114.114.114) in 7 ms
114.in-addr.arpa. 172800 IN NS ns1.apnic.net.
114.in-addr.arpa. 172800 IN NS ns2.ln.net.
114.in-addr.arpa. 172800 IN NS ns3.apnic.net.
114.in-addr.arpa. 172800 IN NS snicdns1.apnic.net.
114.in-addr.arpa. 86400 IN DS 19182 8 2 67B7E1D7282F6077D98B44FEE9BF12ED84D67E0C617F8D99E0F87E5D 1BFD864D
114.in-addr.arpa. 86400 IN RRSIG DS 8 1 86400 20231014170000 20231001170000 20236 . SAKgEHzLwJVtGrRHvz/H/QgzsNwj2xMn/At8wmYlcGjrLg84Pc7Vw0H8 nGIZVgDueEjPghsZP6oLlTvg9StTuF+2b2yW6q8zQZkaJ6Byd+p/vSjm 6f8SmL9X4AeVsO/jy4f8mwptIZIAKzHNa+90sZsPtvnW+X9Yv49/HS1M i2c=
C.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.in-addr.arpa. 86400 IN NSEC C.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.in-addr.arpa. NS RRSIG NSEC
C.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.in-addr.arpa. PTR dns.google.
C.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.4.1.1.in-addr.arpa. RRSIG PTR 8 2 86400 20231014170000 20231001170000 20236 . bF0XhtLHbcncjKpZs+o/YhGmZ1NAi8EWeKkcQ2DyYvSiFcWz8qhP6Z+I 72SJB6U3w6PkFILdDP4KHo4L/6p9W6f8ttCkx6lSj6zzxbq6w8eZFyij s4G4bYh9BvpW0RZgprO/RsUTdVmCMEHhO8i6OgYPQwjTavTis9gslyW8 ghw=
;; Received 603 bytes from 192.58.128.30#53(a.root-servers.net) in 1947 ms
;; AUTHORITY SECTION:
114.in-addr.arpa. 172800 IN NS ns3.apnic.net.
114.in-addr.arpa. 172800 IN NS ns1.apnic.net.
114.in-addr.arpa. 172800 IN NS snicdns1.apnic.net.
114.in-addr.arpa. 172800 IN NS ns2.ln.net.
114.in-addr.arpa. 86400 IN DS 19182 8 2 67B7E1D7282F6077D98B44FEE9BF12ED84D67E0C617F8D99E0F87E5D 1BFD864D
114.in-addr.arpa. 86400 IN RRSIG DS 8 1 86400 20231014170000 20231001170000 20236 . SAKgEHzLwJVtGrRHvz/H/QgzsNwj2xMn/At8wmYlcGjrLg84Pc7Vw0H8 nGIZVgDueEjPghsZP6oLlTvg9StTuF+2b2yW6q8zQZkaJ6Byd+p/vSjm 6f8SmL9X4AeVsO/jy4f8mwptIZIAKzHNa+90sZsPtvnW+X9Yv49/HS1M i2c=
;; Received 341 bytes from 202.12.29.59#53(ns3.apnic.net) in 217 ms
4. 监视DNS服务器
Dig工具还可以用来监视DNS服务器的响应情况。在Linux命令行中,输入以下命令:
“`
dig @8.8.8.8 google.com
“`
该命令将查询Google的IP地址,并使用Google的DNS服务器进行查询。在查询过程中,会显示查询状态、响应时间和其他详细信息。用户可以通过从这些信息监视查询响应时间、记录数和DNS服务器中的DNS记录数,以及其他有用的细节信息。
五、
在本文中,我们给出了使用Dig工具查询DNS信息的基本用法。通过使用Dig工具,用户可以轻松地查询域