一个计算机技术爱好者与学习者

0%

DNS入门篇

1. DNS简介

网域名称(英语:Domain Name,简称:Domain),简称域名、网域,是由一串用点分隔的字符组成的互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。域名可以说是一个IP地址的代称,目的是为了便于记忆后者。例如,wikipedia.org是一个域名。人们可以直接访问wikipedia.org来代替IP地址,然后域名系统(DNS)就会将它转化成便于机器识别的IP地址。这样,人们只需要记忆wikipedia.org这一串带有特殊含义的字符,而不需要记忆没有含义的数字。

域名的核心是域名系统(英语:Domain Name System,缩写:DNS),域名系统中的任何名称都是域名。在域名系统的层次结构中,各种域名都隶属于域名系统根域的下级。域名的第一级是顶级域,它包括通用顶级域,例如.com、.net和.org;以及国家和地区顶级域,例如.us、.cn和.tk。顶级域名下一层是二级域名,一级一级地往下。现在,还有一些新兴的中文域名,例如.在线等。这些域名向人们提供注册服务,人们可以用它创建公开的互联网资源或运行网站。顶级域名的管理服务由对应的域名注册管理机构(域名注册局)负责,注册服务通常由域名注册商负责。

域名系统(英语:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

参考文档:

2. DNS记录类型

域名与IP之间的对应关系,称为”记录”(record)。根据使用场景,”记录”可以分成不同的类型(type)。
常见的DNS记录类型如下:

  • A:地址记录(Address),返回域名指向的IP地址。
  • NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
  • MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
  • CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转,详见下文。
  • PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名,详见下文。

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

3. DNS解析流程

DNS解析流程,简单来说就是分级查询。

  1. 用户请求本地域名服务器,如果有结果就直接返回;如果没有结果,就请求根域名服务器
  2. 请求根域名服务器,拿到顶级域名(一级域名)服务器的NS记录和A记录
  3. 请求顶级域名服务器,拿到二级域名服务器的NS记录和A记录
  4. 请求二级域名服务器,拿到三级或四级域名的NS记录和A记录

查看分级查询过程:

1
dig +trace www.baidu.com

4. DNS配置

4.1. 配置文件

主机上,我们通过配置文件 /etc/resolv.conf 指定DNS服务器。
例如:

1
nameserver 10.96.0.10

4.2. search和ndots

举个例子:

1
2
3
nameserver 10.96.0.10
search svc.cluster.local cluster.local
options ndots:5

当域名的点的数量小于ndots的数量时会依次加上后缀(search)去DNS服务器查找,如果都找不到再直接去DNS服务器查找域名。

4.3. nsswitch.conf

nsswitch全称为: network service switch,是一个通用框架,是各种类型存储交互的公共实现,实现名称解析服务。
nsswitch.conf 决定系统获取解析的顺序。
例如:

1
hosts:      files dns

以上配置,在域名解析时,就会先读取本地 /etc/hosts ,再请求dns服务器。

4.4. ubuntu20

对于ubuntu20,dns的配置方法是比较特殊的。参考文档Ubuntu20.04 系统中设置dns并生效

1、修改dns的配置
/etc/systemd/resolved.conf 中修改

1
DNS=180.76.76.76 114.114.114.114

2、重启systemd-resolved

1
2
systemctl enable systemd-resolved
systemctl restart systemd-resolved

3、使用新的resolv.conf

1
2
3
cat /run/systemd/resolve/resolv.conf
mv /etc/resolv.conf{,.bak}
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

5. DNS解析查询命令

5.1. 查询顺序说明

  • nslookup/dig会直接查询DNS服务器
  • ping、host、curl等命令实际上会查看本地hosts,再根据resolv.conf中的配置查询域名。

5.2. dig

查看域名解析记录

1
dig www.voidking.com

查看每一级域名的NS记录

1
2
dig ns com
dig ns voidking.com

5.3. nslookup

查看域名解析记录

1
nslookup www.voidking.com

5.4. host

查看域名解析记录

1
host www.voidking.com

6. 公共DNS服务器

6.1. 百度DNS

1
2
180.76.76.76
114.114.114.114

6.2. GoogleDNS

1
2
8.8.8.8
8.8.4.4

6.3. 114DNS

1
2
114.114.114.114
114.114.115.115

6.4. 阿里DNS

1
2
223.5.5.5
223.6.6.6

6.5. OneDNS

1
2
112.124.47.27
114.215.126.16

6.6. DNS派

1
2
101.226.4.6
123.125.81.6

6.7. OpenDNS

1
2
208.67.222.222
208.67.220.220
  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-dns-start/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~