方法/步骤
-
查看本地dns配置。确保能上网,dns配置正确。可以查看网卡配置文件和dns配置文件,网卡里配置优先。
-
ping命令。第一行会返回域名及解析的ip。
-
host命令。会返回域名has ip 地址。
-
nslookup命令。输入命令后回车,在命令提示符输入域名,回车,就会显示域名的ip地址。
-
dig命令。会显示a记录即域名的解析。
-
dig命令可以trace解析过程,先访问13台根域root(.)服务器,其中一台根域服务器返回一级域名服务器(本例是.com.)的ip地址,一级服务器再返回二级域名服务器ip地址(本例 .baidu.com.)...... dig命令的其他参数,可以查看help。
(1) /etc/hosts :记录hostname对应的ip地址
/etc/resolv.conf :设置DNS服务器的ip地址
/etc/host.conf :指定域名解析的顺序(是从本地的hosts文件解析还是从DNS解析)
(2) DNS的查询指令:host、nslookup、dig,host 语法:
host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。
host(选项)(参数)
-a:显示详细的DNS信息;
-c<类型>:指定查询类型,默认值为“IN“;
-C:查询指定主机的完整的SOA记录;
-r:在查询域名时,不使用递归的查询方式;
-t<类型>:指定查询的域名信息类型;
-v:显示指令执行的详细信息;
-w:如果域名服务器没有给出应答信息,则总是等待,直到域名服务器给出应答;
-W<时间>:指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令;
-4:使用IPv4;
-6:使用IPv6.
1 [root@localhost ~]# host www.linuxde.net
www.linuxde.net is an alias for host.1.linuxde.net. host.1.linuxde.net has address 100.42.212.8
[root@localhost ~]# host -a www.linuxde.net Trying "www.linuxde.net" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34671 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.linuxde.net. IN ANY ;; ANSWER SECTION: www.linuxde.net. 463 IN CNAME host.1.linuxde.net. Received 54 bytes from 202.96.104.15#53 in 0 ms(3) Nslookup 语法:
Nslookup [FQDN] [server]
Nslookup
参数说明:
可以直接在nslookup后加上待查询的主机名称或者ip,【server】可有可无。
如果在nslookup后面没有加上任何主机名称或ip,那将进入nslookup的查询功能。在nslookup的查询功能当中,可以输入其他参数来进行特殊查询,例如:
Set type=any :列出所有的信息
Set type=mx :列出与mx相关的信息
(4) Dig 语法:
Dig [@server] [FQDN] [type]
参数说明:
@server :如果不想以/etc/resolv.conf来作为dns主机,则可以在此填入其他的ip
Type :预设是查询A记录,你可以在这里写入其他的记录,如:MX,NS等。
此功能亦可使用[-t type]来处理。
下面是 dig 的一些比较常用的命令:
# dig 最基本的用法
1 dig @server sina.com.cn.
# 用 dig 查看 zone 数据传输
1 dig @server zx.xmgd.com. AXFR
# 用 dig 查看 zone 数据的增量传输
1 dig @server zx.xmgd.com. IXFR=N
# 用 dig 查看反向解析
1 dig -x 210.52.83.228 @server
# 查找一个域的授权 dns 服务器
1 dig xmgd.com. +nssearch
# 从根服务器开始追踪一个域名的解析过程
1 dig xmgd.com +trace
# 查看你使用的是哪个 F root dns server
1 dig +norec @F.ROOT-SERVERS.NET HOSTNAME.BIND CHAOS TXT
一般来说linux下查询域名解析有两种选择,nslookup或者dig,而在使用上我觉得dig更加方便顺手,如果是在debian下的话,只要装上dnsutils这个包就可以使用dig命令了,最基本的使用方式就是:
1 dig www.baidu.com
即查询域名的A记录,查询的dns服务器将采用系统配置的服务器,即/etc/resovle.conf 中的,如果要查询其他类型的记录,比如MX,CNAME,NS,PTR等,只需将类型加在命令后面即可
1 dig www.baidu.com mx 2 dig www.baidu.com ns
此外,如果你是一个系统管理员,部署好了一台dns服务器之后想对它进行解析测试,就必须要显式指定待测试的dns服务器地址了,例如
1 dig @180.97.33.107 www.baidu.com a
默认情况下dig将采用udp协议进行查询,如果要采用tcp方式,可以加上 +tcp参数
1 dig www.baidu.com a +tcp
另外一个重要的功能是+trace参数,使用这个参数之后将显示从根域逐级查询的过程
1 dig www.baidu.com a +trace
比如,对本站域名www.linuxers.cn A记录的trace查询可以看到根域.,顶级域.cn,以及linuxers.cn的域名权威服务器的地址及其各自的返回结果,这样对于追踪dns解析中的问题有很大的帮助。