Linux 域名与DNS解析

2020-04-28  本文已影响0人  月饮沙

域名与DNS解析

域名的组成

域名用点(.)来进行分隔,形成多层结构。位置越靠后,层级越高
所有域名都以.结束
域名层级示意图

图片.png
域名主要是为了方便记忆,IP地址才是机器间通信的真正机制

域名解析服务

域名解析服务(DNS)就是把域名转换成IP地址的服务。对应的服务器是域名服务器,网络协议是DNS协议
DNS协议属于TCP/IP栈中对应的应用层,但是实际传输还是基于UDP或者TCP协议,域名服务一般监听在端口53上

域名解析过程

通常来讲,每级DNS服务器,都有最近解析记录的缓存,当缓冲命中时,直接用缓存中的记录应答。如果缓存过期过不存在,域名解析以递归的方式执行,从顶级开始,发送给每个层级的域名服务器,直到得到解析结果
示例图


图片.png

配置DNS服务器

vi /etc/resolv.conf
nameserver 114.114.114.114

DNS服务管理数据方式

DNS服务通过资源记录的方式,再来管理所有数据
支持以下等多种类型的记录

解析DNS

命令

nslookup www.baidu.com

结果解析

Server:域名服务器
Address:域名服务器及端口号

No-authoritative answer:
非权威查询结果 由于服务区上设置的域名服务器不是直接管理要查询的域名的服务器,所以查询结果是非权威的

查看DNS解析过程

命令

dig +trace +nodnssec www.baidu.com
# +trace 表示开启跟踪查询
# +nodnssec 表示禁止 DNS 安全扩展

结果解析

结果分为4个部分

  1. 第一部分,从DNS服务器查到的根域名服务器(.)的NS记录
  2. 第二部分,从NS记录中选一个,并查询顶级域名(com.)的NS记录
  3. 第三部分,是从com.的NS记录中选择一个,并查询二级域名baidu.com 的NS服务器
  4. 第四部分,从baidu.com.的NS服务器查询最终主机的A记录

设置本地DNS解析

可以把主机名和IP地址的映射关机,写入本机的/etc/hosts文件中

cat /etc/hosts
127.0.0.1   localhost localhost.localdomain
::1         localhost6 localhost6.localdomain6
192.168.0.100 domain.com

也可以在内网中,搭建自定义的DNS服务器,专门用来解析内网中的域名。
内网DNS服务器,一般还会设置一个或多个上游DNS服务器,用来解析外网的域名

域名解析常见问题处理

DNS解析失败

现象

# nslookup time.geekbang.org
;; connection timed out; no servers could be reached

检查方法

nslookup -debug time.geekbang.org
/# nslookup -debug time.geekbang.org
;; Connection to 127.0.0.1#53(127.0.0.1) for time.geekbang.org failed: connection refused.
;; Connection to ::1#53(::1) for time.geekbang.org failed: address not available.

结果显示连接环回地址失败的53端口失败

DNS解析不稳定

现象

解析慢

/# time nslookup time.geekbang.org
Server:                8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:        time.geekbang.org
Address: 39.106.233.176

real        0m10.349s
user        0m0.004s
sys        0m0.0

偶尔解析失败

/# time nslookup time.geekbang.org
;; connection timed out; no servers could be reached

real        0m15.011s
user        0m0.006s
sys        0m0.006s

可能原因

检查方法

/# /etc/init.d/dnsmasq start
* Starting DNS forwarder and DHCP server dnsmasq                    [ OK ]

将DNS服务器更改为dnsmasq的监听地址
/# echo nameserver 127.0.0.1 >...

上一篇下一篇

猜你喜欢

热点阅读