DNS 简介

DNS是什么

DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址。你可以把它想象成一本巨大的电话本。举例来说,如果你要访问域名 math.stackexchange.com,首先要通过 DNS 查出它的 I P地址是 151.101.129.69。

查询过程

使用 dig 命令可以显示整个查询过程,加short可以直接得到ip地址

dig +short everlose.github.com

显示 185.199.110.153,就是 github 的地址。

DNS 服务器

本机一定要知道 DNS 服务器的IP地址,通过DNS服务器才能知道某个域名的IP到底是什么,才能上网。

DNS 服务器的 IP 地址,有可能是动态的,每次上网时由网关分配,这叫做 DHCP 机制;也有可能是事先指定的固定地址。Linux 系统里面,DNS 服务器的IP地址保存在 /etc/resolv.conf 文件。

$ cat /etc/resolv.conf

# Generated by NetworkManager
search localdomain
nameserver 8.8.8.8
nameserver 74.82.42.42
nameserver 8.8.4.4

打开 MAC 下的网络偏好设置里某个网络的高级选项中的 DNS 服务器选项就能看见自己设置的 DNS 服务器,DNS 服务器里最有名的就是 Google 的 8.8.8.8 和 Level 3 的 4.2.2.2。

域名的层级

www.github.com.root

主机名.次级域名.顶级域名.根域名

所有域名的尾部都有一个根域名,根域名对于所有域名都是一样的,所以平时都是省略的,也就是说 www.github.com 真正的域名就是www.github.com.root。

DNS 的记录类型

域名与 IP 之间的对应关系,称为 "记录"(record)。根据使用场景,"记录"可以分成不同的类型(type),前面已经看到了有 A 记录和 NS 记录。常见的 DNS 记录类型如下。

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

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

CNAME everlose.github.io 这个域名就是一个CNAME记录。

PTR 记录用于从 IP 地址反查域名。dig 命令的 -x 参数用于查询 PTR 记录 dig -x 192.30.252.153。能知道此 ip 的服务器域名是pages.github.com

其它dns工具

  • host 此命令可以看作dig命令的简化版,返回当前请求域名的各种记录。运行命令host github.com可以得到ip地址,也可以运行host 192.30.252.153得到域名
  • nslookup 此命令用于互动式查询域名记录
  • whois 此命令用来查看域名注册情况:whois github.com

原文地址:http://www.ruanyifeng.com/blog/2016/06/dns.html

posted @ 2020-04-26 15:32  Ever-Lose  阅读(319)  评论(0编辑  收藏  举报