kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

DNS dig使用详解

https://www.codenong.com/cs106328924/

1
2
3
4
dig @192.58.128.30 +dnssec . A
dig @192.58.128.30 +dnssec . NS

dig @192.58.128.30 +dnssec . DNSKEY

一、使用dig发送不同DNS类型请求

1、A记录

1
2
dig www.baidu.com
dig a www.baidu.com +short

可以使用 +short 展示精简结果

2、CNAME记录

1
dig cname www.baidu.com

3、AAAA记录

指定域名服务器发送AAAA请求

1
dig @8.8.8.8 www.google.com AAAA

4、PTR记录, 地址反查

通过@指定域名服务器,注意:地址要反着写,而且需要加上.in-addr.arpa

1
dig @8.8.8.8 3.108.252.173.in-addr.arpa PTR

或者使用dig -x参数也可以

1
dig @8.8.8.8 -x 173.252.108.3

5、NS记录

注意:查询NS时,去掉最末尾的域名,不能写完整域名,比如dig www.baidu.com NS,这样是不可以的。应该是dig baidu.com NS,我们要查询的是能解析baidu.com的授权服务器是哪个。这里就要理解下域名迭代查询的含义了。

1
2
3
4
5
dig @8.8.8.8 google.com NS

或者

dig google.com NS

6、 SOA记录

上述的NS查询里,展示了很多个可以解析sohu.com下子域名的服务器,ns12/ns11等等。通过SOA可以查询哪个是授权机构的主服务器。如下抓包可以看出,ns11.sohu.com是主服务器

1
dig sohu.com SOA

7、MX记录

1
dig @8.8.8.8 wuxj.com MX

8、AXFR记录-

1
dig @8.8.8.8 wuxj.com AXFR

9、ANY-就是查询所有的参数记录

1
dig @8.8.8.8 wuxj.com ANY

二、dig选项设置

1)-b address 指定源 IP 地址,主机有多个地址时可以指定访问的源ip

1
dig @8.8.8.8 -b 10.16.191.143 m.linuxidc.com A

2) @address 指定dns服务器地址,配置了多个nameserver时可以使用

1
dig @8.8.8.8 -b 10.16.191.143 m.linuxidc.com A

3)-f filename 执行文档里的所有dig请求,一行一个

1
dig -f test

4)-p port 指定访问的dns服务器端口号,如指定一个非标准端口,需要先之前搭好的DNS服务器监听端口改为非标准端口

1
dig @8.8.8.8 -p 54 www.wuxj.com A

5)+[no]tcp 使用tcp发送dns请求,出AXFR 或 IXFR 请求,其他请求默认使用的是udp

1
dig m.linuxidc.com +tcp

6)+[no]short 提供简要答复

1
dig m.linuxidc.com +short

7、+trace 跟踪域名解析过程

1
dig m.linuxidc.com +trace

DNS的报文格式

https://blog.51cto.com/u_14398214/5071045

http://events.jianshu.io/p/1cdefa50f58d

https://zhuanlan.zhihu.com/p/143360037

14.3 DNS的报文格式

DNS 定义了一个用于查询和响应的报文格式。图 14-3 显示这个报文的总体格式。

这个报文由 12 字节长的首部和 4个长度可变的字段组成。标识字段由客户程序设置并由服务器返回结果。客户程序通过它来确定响应与查询是否匹配。

16 bit的标志字段被划分为若干子字段,如图 14-4 所示。

我们从最左位开始依次介绍各子字段:

• QR 是 1 bit 字段:0表示查询报文,1表示响应报文。

• opcode 是一个 4 bit 字段:通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)。

• AA 是1 bit标志,表示“授权回答 (authoritative answer)”。该名字服务器是授权于该域的。

• TC 是1 bit字段,表示“可截断的 (truncated)”。使用U D P时,它表示当应答的总长度超过 512 字节时,只返回前 512 个字节。

• RD 是1 bit字段表示“期望递归( recursion desired)”。该比特能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。在后面的例子中,我们将看到这两种类型查询的例子。

• RA 是 1 bit 字段,表示“可用递归”。如果名字服务器支持递归查询,则在响应中将该比特设置为1。在后面的例子中可看到大多数名字服务器都提供递归查询,除了某些根服务器。

• 随后的 3 bit 字段必须为0。

• rcode 是一个 4 bit 的返回码字段。通常的值为 0(没有差错)和3(名字差错)。名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。

随后的 4 个 16 bit 字段说明最后 4个变长字段中包含的条目数。对于查询报文,问题(question)数通常是1,而其他3项则均为0。类似地,对于应答报文,回答数至少是 1,剩下的两项可以是0或非0。

14.3.1 DNS查询报文中的问题部分

问题部分中每个问题的格式如图 14-5 所示,通常只有一个问题。

查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为 0结束,长度为0的标识符是根标识符。计数字节的值必须是 0 ~ 63 的数,因为标识符的最大长度仅为 63(在本节的后面我们将看到计数字节的最高两比特为1,即值 192 ~ 255,将用于压缩格式)。不像我们已经看到的许多其他报文格式,该字段无需以整 32 bit 边界结束,即无需填充字节。

图 14-6 显示了如何存储域名 gemini.tuc.noao.edu。

每个问题有一个查询类型,而每个响应(也称一个资源记录,我们下面将谈到)也有一个类型。大约有 20 个不同的类型值,其中的一些目前已经过时。图 14-7 显示了其中的一些值。查询类型是类型的一个超集 (superset):图中显示的类型值中只有两个能用于查询类型。

最常用的查询类型是 A类型,表示期望获得查询名的 IP 地址。一个 PTR 查询则请求获得一个 IP 地址对应的域名。这是一个指针查询,我们将在 14.5 节介绍。其他的查询类型将在 14.6 节介绍。

查询类通常是1,指互联网地址(某些站点也支持其他非 IP地址)

14.3.2 DNS响应报文中的资源记录部分

DNS报文中最后的三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录R R(Resource Record)的相同格式。图14-8显示了资源记录的格式。

域名是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式(图 14-6)相同。

类型说明 RR的类型码。它的值和前面介绍的查询类型值是一样的。类通常为 1,指Internet数据。

生存时间字段是客户程序保留该资源记录的秒数。资源记录通常的生存时间值为 2天。资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型 1(A记录)资源数据是4字节的IP地址。



应答部分(Answer、Authority、Additional)

报文 中文 长度 说明
NAME 0x00结束
TYPE 查询类型 2
CLASS 查询类 2
TimeToLive 生存时间 4
DaTaLength 资源数据长度 2
DaTa 资源数据 DaTaLength



1.2.1、QTYPE说明

类型 助记符 说明
1 A 由域名获得IPv4地址
2 NS 查询域名服务器
3 MD 过期类型
4 MF 过期类型
5 CNAME 查询规范名称
6 SOA 开始授权
7 MB 指定邮箱域名
8 MG 指定邮件组成员
9 MR 指定邮件重命名域名
A NULL 指定空的资源记录
B WKS 熟知服务
C PTR 把IP地址转换成域名
D HINFO 主机信息
E MINFO 指定邮箱或列表信息
F MX 邮件交换
10 TXT 文本信息
28 AAAA 由域名获得IPv6地址
252 AXFR 传送整个区的请求
255 ANY 对所有记录的请求



1.2.2、QCLASS说明

数值 类型 说明
01 IN Internet类别
02 CSNET 过期类型
03 Chaos
04 MIT Athena Hesiod



DNS查询报文实例

CentOS的pcspkr模块, 报警声

http://code.js-code.com/centos/120705.html

加载pcspkr模块打开beep

1
2
3
[root@localhost~]# modprobe pcspkr
[root@localhost~]# lsmod | grep pcspkr
pcspkr    20000

卸载pcspkr模块关闭beep

1
[root@localhost~]# rmmod pcspkr

永久禁止加载pcspkr模块

1
2
3
4
5
6
[root@localhost~]# vim /etc/modprobe.d/blacklist.conf
blacklist pcspkr


[root@localhost~]# vim /etc/rc.local
/sbin/rmmod pcspkr