Linux命令学习之nslookup

2024-04-01 05:18
文章标签 linux 学习 命令 nslookup

本文主要是介绍Linux命令学习之nslookup,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

比如我想查看 一个IP地址的域名的话:可以用nslookup这个命令
(117)yyang@milse05#nslookup ip_address

参考:http://roclinux.cn/?p=2441
【nslookup何许人?】

nslookup命令,是Linux里非常常用的网络命令,简而言之就是“查DNS信息用的”。

通过man nslookup可以看到对于nslookup的官方解释是“query Internet name servers interactively”。

【nslookup作者何许人?】

通过man nslookup可以看到其作者是Andrew Cherenson,我寻找到了他的Linkedin主页,原来

他是一位计算机科学的高材生,曾经就读于哈佛大学和加州大学伯克利分校。

目前就职于ChoiceStream公司,

【系统没有nslookup命令?】

如果你的Linux系统没有nslookup命令,那么八成是你没有安装bind-utils包。

直接yum install bind-utils就可以解决问题了。

【nslookup的两种模式】

nslookup是一个能够查询互联网域名服务器信息的程序。他有两种工作模式,即“交互模式”和“非交互模式”。

在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。

而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。

【如何进入交互模式?】

进入交互模式,总共有两种方法。


第一种方法,直接输入nslookup命令,不加任何参数,则直接进入交互模式,此时nslookup会连接到默认的域名服务器(即/etc/resolv.conf的第一个dns地址)。

第二种方法,是支持选定不同域名服务器的。需要设置第一个参数为“-”,然后第二个参数是设置要连接的域名服务器主机名或IP地址。

【如何进入非交互模式?】

如果你直接在nslookup命令后加上所要查询的IP或主机名,那么就进入了非交互模式。当然,这个时候你也可以在第二个参数位置设置所要连接的域名服务器。

【选项和参数】

nslookup不仅支持设置参数,也是支持设置选项(options)的。比如可以使用-query来设置查询类型为主机信息,同时设置初始超时时限为10秒:

nslookup -query=hinfo -timeout=10
【交互模式很强大】

1 直接查询域名
如果你直接输入域名(以www.baidu.com举例),会有类似如下的输出:

$ nslookup
> www.baidu.com
Server:         61.139.2.69 //上连的DNS服务器
Address:        61.139.2.69#53 //上连的DNS服务器的IP地址与端口号

Non-authoritative answer: //非权威答案,即从上连DNS服务器的本地缓存中读取出的值,而非实际去查询到的值
www.baidu.com   canonical name = www.a.shifen.com. //说明www.baidu.com有个别名叫www.a.shifen.com
Name:   www.a.shifen.com //域名www.a.shifen.com
Address: 119.75.217.56 //对应的IP地址之一
Name:   www.a.shifen.com
Address: 119.75.218.77//对应的IP地址之二
2 server [domain]
首先nslookup会连接到当前的默认上连DNS服务器去查询domain的IP地址,并将之作为当前默认上连DNS服务器。
另外,还有一个命令叫做lserver [domain],它与server的区别在于,它是取本地的第一台DNS服务器来查询domain的IP地址,并将之作为当前默认上连DNS服务器。(lserver中的首字母l就是local的意思)

$ nslookup
> www.baidu.com //以默认的上连DNS服务器来查询
Server:         61.139.2.69
Address:        61.139.2.69#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 119.75.218.77 //对应的描述信息为“北京市 百度网讯科技”
Name:   www.a.shifen.com
Address: 119.75.217.56
> server 8.8.8.8 //更改了上连的DNS服务器地址
Default server: 8.8.8.8
Address: 8.8.8.8#53
> www.baidu.com 以更改后的上连DNS服务器来查询
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 220.181.111.147 //对应的描述信息为“北京市(南三环洋桥电信机房) 电信”
可见,两个不同的上连DNS服务器返回的IP地址是不同的。

3 exit
退出nslookup的交互模式。

4 set all
列出nslookup工具的常用选项的当前设置值。

> set all
Default server: 8.8.8.8 //当前的上连DNS服务器
Address: 8.8.8.8#53 //当前的上连DNS服务器的IP地址和端口

Set options:
  novc                  nodebug         nod2
  search                recurse
  timeout = 0           retry = 3       port = 53
  querytype = A         class = IN
  srchlist =
5 set class=[value]
可以更改查询类,而不同的类设定了不同的协议族。

IN:Internet类(默认)
CH:Chaos类
HS:Hesiod类
一般我们最长使用IN。而Hesiod之前仅在M.I.T(Massachusetts Institute of Technology,即麻省理工学院)范围内使用,现在甚至已经无人使用。而Chaos也几乎灭绝,曾经BIND套装用Chaos来协助检查版本号信息。

6 set [no]debug
可以用来设置是否进入调试模式。如果set debug,则会进入到调试模式,查询过程中会显示完整的响应包以及其中的交互包。

$ nslookup
> set debug //进入调试模式
> www.baidu.com
Server:         61.139.2.69
Address:        61.139.2.69#53

------------
    QUESTIONS: //发出的查询请求
        www.baidu.com, type = A, class = IN 
    ANSWERS: //返回的信息
    ->  www.baidu.com
        canonical name = www.a.shifen.com.
        ttl = 1192
    ->  www.a.shifen.com
        internet address = 119.75.217.56
        ttl = 262
    ->  www.a.shifen.com
        internet address = 119.75.218.77
        ttl = 262
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
------------
Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 119.75.217.56
Name:   www.a.shifen.com
Address: 119.75.218.77
7 set [no]d2
开启了高级调试模式,会输出很多nslookup内部工作的信息,包括了许多函数调用信息。

8 set domain=[name]
用于设置默认的域。这样的话,对于所有不包含“.”的查询请求,都会自动在尾部追查此域。

$ nslookup
> set all //首先显示上连DNS服务器信息以及所有的当前选项信息
Default server: 61.139.2.69
Address: 61.139.2.69#53
Default server: 8.8.8.8
Address: 8.8.8.8#53
Default server: 202.102.224.68
Address: 202.102.224.68#53

Set options:
  novc                  nodebug         nod2
  search                recurse
  timeout = 0           retry = 3       port = 53
  querytype = A         class = IN
  srchlist =  //可以看到srchlist(即search list为空)
> set domain=baidu.com //设置默认域为baidu.com
> image //直接查询image
Server:         61.139.2.69
Address:        61.139.2.69#53

Non-authoritative answer:
image.baidu.com canonical name = image.n.shifen.com. //可以看到已默认追加了.baidu.com域,变成了image.baidu.com
Name:   image.n.shifen.com
Address: 220.181.111.131
> set domain= //清除domain设置
> image
Server:         61.139.2.69
Address:        61.139.2.69#53

Non-authoritative answer:
Name:   image
Address: 61.139.8.100 //于是,可以发现,域名解析又被劫持了...
9 set [no]search
如果设置了set search,那么当查询的字串中只包含一个句点,且结尾非句点时,nslookup会将domain设置的域追加到查询字串的尾部来尝试查询。

10 set port=[value]
众所周知,DNS默认的服务端口是53。当某些特殊情况,此端口改变时,可以通过本命令来设置。

11 set type=[value]
也可以写成set querytype=[value],用于更改信息查询类型。
默认情况下,nslookup是查询域名所对应的A记录,而如果你想查询其对应的MX记录等信息时,就需要专门设置type值了。
目前常用的type值如下:

A:查看主机的IPv4地址
AAAA:查看主机的IPv6地址
ANY:查看关于主机域的所有信息
CNAME:查找与别名对应的正式名字
HINFO:查找主机的CPU与操作系统类型
MINFO:查找邮箱信息
MX:查找邮件交换信息
NS:查找主机域的域名服务器
PTR:查找与给定IP地址匹配的主机名
RP:查找域负责人记录
SOA:查找域内的SOA地址
UINFO:查找用户信息
例如,针对MX类型的查询结果如下:

> set type=MX
> baidu.com //查询MX信息
Server:         61.139.2.69
Address:        61.139.2.69#53

Non-authoritative answer:
baidu.com       mail exchanger = 20 jpmx.baidu.com.
baidu.com       mail exchanger = 20 mx50.baidu.com.
baidu.com       mail exchanger = 10 mx.mailcdn.baidu.com.
baidu.com       mail exchanger = 20 mx1.baidu.com.

Authoritative answers can be found from:
> set type=A
> baidu.com //查询A记录
Server:         61.139.2.69
Address:        61.139.2.69#53

Non-authoritative answer:
Name:   baidu.com
Address: 123.125.114.144
Name:   baidu.com
Address: 220.181.111.85
Name:   baidu.com
Address: 220.181.111.86
12 retry=[number] / timeout=[number]
可以用来设置查询重试的次数,以及每次查询的超时时限。

【总结】
其实nslookup命令的man信息不长,大家仔细阅读个20、30分钟也就基本掌握了。
nslookup命令很小,但却很实用,它是我们与DNS服务器之间很好很方便的通讯桥梁。
————————————————
版权声明:本文为CSDN博主「忽略的爱」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huluedeai/article/details/50674286

这篇关于Linux命令学习之nslookup的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/866284

相关文章

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro