Linux进阶学习笔记之——主机名控制者:DNS服务器

DNS服务器

1、用网络主机名取得IP的历史渊源

1.1、单一文件处理上网的年代:/etc/hosts

利用某些特定的文件将主机名与IP地址做一个对应,如此一来,我们就可以通过主机名来取得该主机的IP了。这个文件就是:/etc/hosts

缺点:主机名与IP的对应无法自动在所有的计算机内更新,且要将主机名加入该文件仅能向INTERNIC注册,若IP数量太多,该文件会过大,也就更不利于其他主句同步化了

在私有网络内部,最好将所有的私有IP与主机名对应都写入这个文件中

1.2、分布式、阶层式主机名管理架构:DNS系统

DNS是一种因特网的通信协议,至于BIND则是提供这个DNS服务的软件。

[root@server ~]# yum install bind -y

1.3、完整主机名:Fully Qualified Domain Name(FQDN)

主机名+域名=完整主机名


2、DNS的主机名对应IP的查询流程

2.1、DNS的架构与查询流程

见计算机网络应用层——DNS系统

可以使用dig命令,使用追踪功能(+trace)分析每个查询阶段的DNS服务器:

[root@server ~]# yum install bind-utils -y
[root@server ~]# dig +trace www.baidu.com; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> +trace www.baidu.com
;; global options: +cmd
.                       156586  IN      NS      l.root-servers.net.
.                       156586  IN      NS      d.root-servers.net.
.                       156586  IN      NS      c.root-servers.net.
.                       156586  IN      NS      i.root-servers.net.
.                       156586  IN      NS      a.root-servers.net.
.                       156586  IN      NS      e.root-servers.net.
.                       156586  IN      NS      f.root-servers.net.
.                       156586  IN      NS      k.root-servers.net.
.                       156586  IN      NS      m.root-servers.net.
.                       156586  IN      NS      j.root-servers.net.
.                       156586  IN      NS      b.root-servers.net.
.                       156586  IN      NS      h.root-servers.net.
.                       156586  IN      NS      g.root-servers.net.
.                       518400  IN      RRSIG   NS 8 0 518400 20200805170000 20200723160000 46594 . 
#上面的在跟踪.的服务器
;; Received 525 bytes from 10.0.0.1#53(10.0.0.1) in 19 mscom.                    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.                    86400   IN      DS      30909 8 2 
;; Received 1173 bytes from 198.97.190.53#53(h.root-servers.net) in 112 msbaidu.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服务器
;; Received 761 bytes from 192.52.178.30#53(k.gtld-servers.net) in 375 mswww.baidu.com.          1200    IN      CNAME   www.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      ns1.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns2.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns4.a.shifen.com.
;; Received 239 bytes from 14.215.178.80#53(ns4.baidu.com) in 31 ms

2.2、DNS使用的port number

使用的是53这个端口。可以查看**/etc/services**这个文件。

通常DNS是以UDP这个较快的数据传输协议来查询的,但是万一没有办法查询到完整的信息时,就会再次以TCP这个协议来重新查询。

[root@server ~]# cat /etc/services | grep domain
domain          53/tcp                          # name-domain server
domain          53/udp

2.3、合法DNS的关键:申请区域查询授权

2.3.1、向上层区域注册取得合法的区域查询授权

申请一个合法的主机名就需要注册,那么注册取得的数据就有两种:一种是FQDN,一种是申请区域查询权。总之,要让你的主机名对应IP且让其他计算机都可以查询到,有两种方式:

  1. 上层DNS授权区域查询权,让你自己设置DNS服务器;这时,所有的主机名信息都以自己为准,与上层无关。
  2. 直接请上层DNS服务器来帮你设置主机名对应。这时,详细的设置数据由ISP搞定,即域名代管。

2.4、DNS数据库的记录:正解、反解、Zone的意义

DNS服务器里记录的数据成为数据库,而在数据库里面针对每个要解析的域,就称为区域(Zone)。

  • 从主机名查询到IP的流程:正解
  • 从IP查询到主机名的流程:反解
  • 不管是正解还是反解,每个域的记录就是一个区域(Zone)
2.4.1、正解的设置权以及DNS正解Zone记录的标志

那谁可以申请正解的DNS服务器架设权呢?答案是,都可以。正解的域名只需要符合INTERNIC和ISP规范即可只要该域没有人使用,那谁先抢到,就能够使用。通常正解的Zone具有以下几种标志:

  • SOA:就是开始验证(Start of Authority)的缩写;
  • NS:就是名称服务器(Name Server)的缩写,后面记录的数据是DNS服务器的意义
  • A:就是地址(Address)的缩写,后面记录的是IP的对应(很重要)
2.4.2、反解的设置权以及DNS反解Zone记录的标志

若有反解需求,就需要你向你的直属上层ISP申请才行。那么反击的Zone主要记录的信息有哪些呢?除了服务器必备的NS和SOA外,最重要的就是:

  • PTR:就是指向(PointTeR)的缩写,后面记录的数据就是反解到主机名
2.4.3、每台DNS都需要的正解:hint

有没有哪个Zone是特别重要的?有的,那就是.。从DNS查询流程来说**,当DNS服务器在自己的数据库找不到所需的数据时,一定会去找.**。这个记录.的Zone的类型,就被称为hint类型。所以,一台简单的正解DNS服务器,基本上就要两个Zone才行,一个是hint,一个是关于自己的域的正解Zone

2.5、DNS数据库类型:hint、Master/Slave架构

为了解决不同DNS服务器上面的数据同步问题,因此在.(root)这个hint类型的数据库文件外,还有两种基本类型,分别是Master数据库和Slave数据库类型

2.5.1、Master

这种类型的DNS数据库中,里边的所有主机名对应关系信息等,全部要管理员自己动手去修改与设置,设置完成后还需要重新启动DNS去读取正确的数据库内容,才算完成数据库更新

2.2.2、Slave

Slave从Master那取得数据库内容。同步更新。


3、Client端的设置

3.1、相关配置文件

相关配置文件说明
/etc/hosts最早的Hostname对应IP的文件
/etc/resolv.conf就是ISP的DNS服务器IP记录处
/etc/nsswitch.conf决定先要使用/etc/hosts还是/etc/resolv.conf的设置

一般而言,Linux的默认主机名与IP的对应关系都以/etc/hosts为优先:

[root@client ~]# cat /etc/nsswitch.conf | grep ^hosts
hosts:      files dns myhostname
#files:就是/etc/hosts
#dns:就是/etc/resolv.conf
#myhostname:就是本地解析
[root@client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search lan
nameserver 10.0.0.1

3.2、DNS的正解、反解查询命令

3.2.1、dig命令
[root@client ~]# dig [options] FQDN [@server]
选项与参数:
@server:如果不以/etc/resolv.conf的设置来作为DNS的查询,可在此填入其他IP
options:+trace:就是从.开始追踪-t type:查询的数据主要有MX、NS、SOA等类型-x:查询反解信息,非常重要的项目
#使用默认值查询server.lan(服务器)
[root@client ~]# dig server.lan; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> server.lan
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61723
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:		<==提出问题的部分
;server.lan.                    IN      A;; ANSWER SECTION:			<==主要的回答阶段
server.lan.             0       IN      A       10.0.0.185;; Query time: 0 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: 五 7月 24 10:13:40 CST 2020
;; MSG SIZE  rcvd: 55#查询server.lan的SOA信息
[root@client ~]# dig -t SOA server.lan; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> -t SOA server.lan
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7207
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:
;server.lan.                    IN      SOA;; Query time: 0 msec
;; SERVER: 10.0.0.1#53(10.0.0.1)
;; WHEN: 五 7月 24 10:18:45 CST 2020
;; MSG SIZE  rcvd: 28#反解信息
[root@client ~]# dig -x 58.87.106.144; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>>


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部