zoukankan      html  css  js  c++  java
  • DNS: Internet’s Directory

    关于DNS

    互联网上几乎一切活动都以DNS请求开始。DNS(Domain Name System)是Internet的目录。访问URL时,设备所要做的第一件事就是询问目录,根据域名查出IP地址。

    查询过程

    例如:访问www.baidu.com

    1. 首先检查本机hosts文件
    2. 向本地DNS服务器查找www.baidu.com的IP
    3. DNS服务器查询
    4. 告知本地DNS服务器去com域名服务器查询
    5. 向com域名服务器查询
    6. 告知本地DNS服务器去baidu.com域名服务器查询
    7. baidu.com域名服务器查询
    8. 告知本地DNS服务器www.baidu.com的IP

    dig

    解析域名

    • dig www.baidu.com
    • dig www.baidu.com @114.114.114.114,查指定DNS服务器为114.114.114.114
    • dig www.baidu.com @114.114.114.114 ns,查指定域名记录ns

    简单解析域名

    dig www.baidu.com 
    

    结果如下:

    ; <<>> DiG 9.10.6 <<>> www.baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22401
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;www.baidu.com.			IN	A
    
    ;; ANSWER SECTION:
    www.baidu.com.		255	IN	CNAME	www.a.shifen.com.
    www.a.shifen.com.	172	IN	CNAME	www.wshifen.com.
    www.wshifen.com.	293	IN	A	103.235.46.39
    
    ;; Query time: 53 msec
    ;; SERVER: 8.8.8.8#53(8.8.8.8)
    ;; WHEN: Tue Mar 19 19:06:52 CST 2019
    ;; MSG SIZE  rcvd: 111
    

    第一段是查询参数和统计

    ; <<>> DiG 9.10.6 <<>> www.baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22303
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
    

    第二段是查询内容,表示查询域名www.baidu.comA记录,A是address的缩写。

    ;; QUESTION SECTION:
    ;www.baidu.com.			IN	A
    

    第三段是DNS服务器的答复,www.baidu.com有两个CNAME记录,一个A记录,即一个IP地址。35是TTL值(Time to live 的缩写),表示缓存时间,即35秒之内不用重新查询

    ;; ANSWER SECTION:
    www.baidu.com.		789	IN	CNAME	www.a.shifen.com.
    www.a.shifen.com.	95	IN	CNAME	www.wshifen.com.
    www.wshifen.com.	35	IN	A	103.235.46.39
    

    第四段是DNS服务器的一些传输信息

    ;; Query time: 53 msec
    ;; SERVER: 8.8.8.8#53(8.8.8.8)
    ;; WHEN: Tue Mar 19 18:35:33 CST 2019
    ;; MSG SIZE  rcvd: 111
    

    查指定域名记录

    dig www.baidu.com @114.114.114.114 ns
    

    结果如下:

    ; <<>> DiG 9.10.6 <<>> www.baidu.com @114.114.114.114 ns
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13293
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;www.baidu.com.			IN	NS
    
    ;; ANSWER SECTION:
    www.baidu.com.		30	IN	CNAME	www.a.shifen.com.
    www.a.shifen.com.	30	IN	CNAME	www.wshifen.com.
    
    ;; AUTHORITY SECTION:
    wshifen.com.		30	IN	SOA	ns1.wshifen.com. baidu_dns_master.baidu.com. 1903190001 60 30 2592000 3600
    
    ;; Query time: 225 msec
    ;; SERVER: 114.114.114.114#53(114.114.114.114)
    ;; WHEN: Tue Mar 19 19:07:32 CST 2019
    ;; MSG SIZE  rcvd: 152
    

    第四段显示www.baidu.comNS记录(Name Server的缩写),即哪些服务器负责管理www.baidu.com的DNS记录

    ;; AUTHORITY SECTION:
    wshifen.com.		62	IN	SOA	ns1.wshifen.com. baidu_dns_master.baidu.com. 1903190001 60 30 2592000 3600
    

    域名层级结构

    www.example.com.root
    主机名.次级域名.顶级域名.根域名
    

    分级查询

    dig +trace www.baidu.com
    

    第一段列出根域名.的所有NS记录,即所有根域名服务器。根据内置的根域名服务器IP地址,DNS服务器向所有这些IP地址发出查询请求,询问www.baidu.com的顶级域名服务器com.的NS记录。最先回复的根域名服务器将被缓存,以后只向这台服务器发请求。

    ; <<>> DiG 9.10.6 <<>> +trace www.baidu.com
    ;; global options: +cmd
    .			102290	IN	NS	a.root-servers.net.
    .			102290	IN	NS	b.root-servers.net.
    .			102290	IN	NS	c.root-servers.net.
    .			102290	IN	NS	d.root-servers.net.
    .			102290	IN	NS	e.root-servers.net.
    .			102290	IN	NS	f.root-servers.net.
    .			102290	IN	NS	g.root-servers.net.
    .			102290	IN	NS	h.root-servers.net.
    .			102290	IN	NS	i.root-servers.net.
    

    接着是第二段

    com.			172800	IN	NS	a.gtld-servers.net.
    com.			172800	IN	NS	b.gtld-servers.net.
    com.			172800	IN	NS	c.gtld-servers.net.
    com.			172800	IN	NS	d.gtld-servers.net.
    com.			172800	IN	NS	e.gtld-servers.net.
    com.			172800	IN	NS	f.gtld-servers.net.
    com.			172800	IN	NS	g.gtld-servers.net.
    com.			172800	IN	NS	h.gtld-servers.net.
    com.			172800	IN	NS	i.gtld-servers.net.
    com.			172800	IN	NS	j.gtld-servers.net.
    com.			172800	IN	NS	k.gtld-servers.net.
    com.			172800	IN	NS	l.gtld-servers.net.
    com.			172800	IN	NS	m.gtld-servers.net.
    

    第二段显示显示.com域名的13条NS记录,同时返回的还有每一条记录对应的IP地址。

    然后,DNS服务器向这些顶级域名服务器发出查询请求,询问www.baidu.com的次级域名baidu.com的NS记录。

    baidu.com.		172800	IN	NS	ns2.baidu.com.
    baidu.com.		172800	IN	NS	ns3.baidu.com.
    baidu.com.		172800	IN	NS	ns4.baidu.com.
    baidu.com.		172800	IN	NS	ns1.baidu.com.
    baidu.com.		172800	IN	NS	ns7.baidu.com.
    

    上面结果显示baidu.com有五条NS记录。

    然后,DNS服务器向上面这五台NS服务器查询www.baidu.com的主机名。

    www.baidu.com.		1200	IN	CNAME	www.a.shifen.com.
    a.shifen.com.		1200	IN	NS	ns4.a.shifen.com.
    a.shifen.com.		1200	IN	NS	ns3.a.shifen.com.
    a.shifen.com.		1200	IN	NS	ns5.a.shifen.com.
    a.shifen.com.		1200	IN	NS	ns2.a.shifen.com.
    a.shifen.com.		1200	IN	NS	ns1.a.shifen.com.
    ;; Received 239 bytes from 112.80.248.64#53(ns3.baidu.com) in 16 ms
    

    上面结果显示,最先返回结果的NS服务器是ns3.baidu.com,IP地址为112.80.248.64

    NS记录的查询

    dig命令可以单独查看每一级域名的NS记录,+short参数可以显示简化的结果

    dig ns com
    dig ns example.com
    dig +short ns com
    dig +short ns example.com
    

    常见域名记录类型

    域名与IP之间的对应关系,称为记录。

    A   主机记录,把一个域名解析成IP地址
    CNAME   别名记录,把一个域名解析到另一个域名 
    NS  域名解析服务器记录 
    MX  邮件交换记录,返回接收电子邮件的服务器地址 
    PTR 指针记录,A记录的逆向记录,把IP解析成域名
    TXT 为域名设置说明
    

    一般来说,为了服务的安全可靠,至少应该有两条NS记录,而A记录和MX记录也可以有多条,这样就提供了服务的冗余性,防止出现单点失败。

    CNAME记录主要用于域名的内部跳转,为服务器配置提供灵活性,用户感知不到。举例来说,www.baidu.com这个域名就是一个CNAME记录。

    ;; ANSWER SECTION:
    www.baidu.com.		430	IN	CNAME	www.a.shifen.com.
    www.a.shifen.com.	231	IN	CNAME	www.wshifen.com.
    www.wshifen.com.	286	IN	A	103.235.46.39
    

    上面结果显示,www.baidu.com的CNAME记录指向www.wshifen.com。也就是说,用户查询www.baidu.com的时候,实际上返回的是www.wshifen.com的IP地址。这样的好处是,变更服务器IP地址的时候,只要修改www.wshifen.com这个域名就可以了,用户的www.baidu.com域名不用修改。

    由于CNAME记录就是一个替换,所以域名一旦设置CNAME记录以后,就不能再设置其他记录了(比如A记录和MX记录),这是为了防止产生冲突。举例来说,foo.com指向bar.com,而两个域名各有自己的MX记录,如果两者不一致,就会产生问题。由于顶级域名通常要设置MX记录,所以一般不允许用户对顶级域名设置CNAME记录。

    PTR记录用于从IP地址反查域名。dig命令的-x参数用于查询PTR记录。

    $ dig -x 192.30.252.153
    
    ...
    
    ;; ANSWER SECTION:
    153.252.30.192.in-addr.arpa. 2635 IN	PTR	lb-192-30-252-153-iad.github.com.
    

    上面结果显示,192.30.252.153这台服务器的域名是lb-192-30-252-153-iad.github.com

    逆向查询的一个应用,是可以防止垃圾邮件,即验证发送邮件的IP地址,是否真的有它所声称的域名。

    其他DNS工具

    • host
    • nslookup

    参考:

    http://www.ruanyifeng.com/blog/2016/06/dns.html

  • 相关阅读:
    EL表达式判断
    java反射机制,通过类名获取对象,通过方法名和参数调
    MYSQL删除重复数据
    centos apache 隐藏和伪装 版本信息
    CentOS安装crontab及使用方法
    Samba出现“您可能没有权限使用网络资源”解决方法
    Idea使用备忘
    Jenkins入门教程
    multiple datasource config
    windows环境下PostgreSQL的安装
  • 原文地址:https://www.cnblogs.com/mark-zh/p/10615063.html
Copyright © 2011-2022 走看看