服务器基础,Linux基础之DNS服务器第一篇

DNS 服务器基础

 

简介

  • DNS服务器牵扯到家庭,公司,公司,国家等等领域,只假如网络不必须就要用到她
  • DNS(Domain Name Server,域名服务器)是开始展览域名(domain
    name)和与之相呼应的IP地址 (IP address)转换的服务器
  • DNS中保留了一张域名(domain name)和与之相呼应的IP地址 (IP
    address)的表,以分析消息的域名
  • 这一篇笔者演说示DNF服务器搭建
  • 其次篇主要讲的是根服务器和COM服务器的搭建,并和此外DNS服务器通信的亲自去做
  • 那大家发轫

一、DNS简介

DNS(Domain Name System,域名种类)是因特网的一项服务;

DNS 是将域名和IP地址相互映射的1个分布式数据库;

DNS 是1种应用层协议,使用UDP和TCP的53端口;

DNS域名和DNS域名结构

图片 1

名称 代表意义
com 公司、行号、企业
org 组织、机构
edu 教育单位
gov 政府单位
net 网络、通信
mil 军事单位
  • 根域
    • 服务器首要用来保管互连网的主目录,环球唯有1叁台(这一叁台根域名服务器名字分别为“A”至“M”),一个为主根服务器在美利坚同车笠之盟
    • 任何11个均为辅根服务器,当中八个在United States,欧洲3个,位于United Kingdom和瑞典王国,澳大乌兰巴托(Australia)一个位于扶桑
  • 一流域名:Top Level Domain: tld
    • com, edu, mil, gov, net, org, int,arpa
    • 顶级域名中只含有3个“.”,且“.”左侧要有内容字段。超级域名又被堪当超级域名
  • 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
  • 二级域名
    • 二级域名的权重高于二级目录,二级域名是作为二个独自的域名现身在互连网络,而二级目录是以网站子页面出现的,所以广大人感到两者之间的权重同样,这种认知是荒唐的
    • 有的是人都误把带www当成超级域名,把任何前缀的正是二级域名,是漏洞百出的。正确的域名划分为:
    • .com 拔尖域名
    • baidu.com 拔尖域名
    • www.baidu.com
      二级域名
    • bbs.baidu .com 二级域名
    • tieba.baidu .com 二级域名
  • 三级域名
    • 三级域名是形如“www.beiji.baidu.com”的域名,能够用作是二级域名的子域名,特征为域名包蕴四个“.”,一般的话,三级域名皆避防费的
  • 最多127级域名
    • arpa是二个例外的域名
  • 她用于,域名的反向深入分析

1、DNS域命名空间

DNS域命名空间是壹种档次结构,一般可分为根域、拔尖域、二级域、子域以及主机名;

图片 2

 

1)根域
运用“.”表示,位于域命名空间档次结构的最高层;
脚下布满于天下的根服务器只有一叁台,全体由Internet互联网音讯大旨(InterNIC)管理,在根域服务器中只保留了其下层的超级域的DNS服务器名称和IP地址对应提到;
2)顶级域(TLD,Top Level Domain)
一流域位于根域下层,能够分成两类:组织域(.com,.net,.org,.gov,.edu,.mil等)和国家域(.iq,.tw,.hk,.jp,.cn等);
3)二级域
二级域位于顶尖域下层,是指为了在Internet上运用而注册到个人或企职业单位的域名;
4)子域
子域是遵照具体意况从二级域中按单位或地理地点创造;
5)主机名
放在DNS域命名空间的最低层,主要指Computer的主机名;
专注:FQDN(Full Qualified Domain
Name,完全合格域名)包含域名和主机名;

DNS原理

  • 譬喻说笔者想拜会1个网址,你的网卡钦命了DNS,一般邮电通讯或联通,铁通等等的技师,会给网卡配他们的DNS服务器的
  • Computer会发出三个时域信号,那一个时域信号正是发给你钦定的DNS服务器的,那些信号便是你想访问的那几个网址
  • 而是那些DNS服务器正好里面未有那条记下,他会去找根服务器
  • 根服务器里面存放的是全体的,一流域名服务器的DNS,如.com,.cn
  • 根里面就从未有过那么些地址,可是他会推荐您去找个哪个一流域名结尾的服务器如.com结尾的DNS服务器
  • 结果你电脑又去找.comDNS服务器,若是您是二级域名的话就找到了,假诺您是三级域名这还要继续找下去
  • 服务器基础,Linux基础之DNS服务器第一篇。然则他只是明亮他的IP,并不是其一网址的服务器,你会随之那个IP找到这些IP的DNS服务器
  • 最终正是找到了,因为这么些DNS服务器一定领悟他服务器的IP,最终你们就能够握手,通讯了
  • 可是大家计算机都会有连个DNS服务器IP,即使二个坏了我们1致可以请求找别的一个DNS服务器

二、DNS名称剖析方法

1)正向分析:由域名查找IP地址;
2)反向分析:由IP地址查找域名;
专注:2者的命名空间不在同贰个空中,不是同样棵树,由此也不是同3个深入分析库;

DNS解析

  • DNS查询类型:
    • 递归查询
      :递归说简练点正是,负担到底都以她壹人,获取到终极结出
    • 迭代查询 :
      迭代的乐趣正是,你问她难点他帮您推荐一位叫您去问人家难点
  • 名称服务器:域内负担分析本域内的名称的主机
    • 根服务器:壹三组服务器
    • 中玖个在美利坚联邦合众国,
    • 北美洲3个,位于大不列颠及苏格兰联合王国和瑞典王国
    • 南美洲三个位于日本
  • 解析类型:
    • FQDN –> IP
    • IP –> FQDN
    • 小心:正面与反面向分析是五个例外的名号空间,是两棵不一致的深入分析树

3、DNS查询

1)递归查询
当DNS服务器收到到查询请求时,不论成功或退步,都会做出相应的响应(产生在DNS客户端与DNS服务器之间);
2)迭代询问
DNS服务器依据自个儿的高速缓存或区域的数目,以最好结果响应;假诺服务器不恐怕分析,它也许回到三个指针;指针指向下级域名的DNS服务器,继续该进程,直到找到具有所查询名字的DNS服务器,或知道出错、超时结束(产生在DNS服务器之间);

BIND等DNS软件

  • 晋升DNS服务的有很种种软件
  • 里面用的最多的要么BIND
  • BIND是Berkeley大学宣布的一款软件
  • 方今新的来替代BIND的软件,叫unbound
  • 咱俩在此处设置的照旧BIND,首先大家来探望她的安装包

[root@localhost ~]# yum info bind
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
Name        : bind
Arch        : x86_64
Epoch       : 32
Version     : 9.9.4    <<<版本
Release     : 37.el7
Size        : 1.8 M
Repo        : bash
Summary     : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
URL         : http://www.isc.org/products/BIND/   <<官方网站
License     : ISC
Description : BIND (Berkeley Internet Name Domain) is an implementation of the DNS
            : (Domain Name System) protocols. BIND includes a DNS server (named),
            : which resolves host names to IP addresses; a resolver library
            : (routines for applications to use when interfacing with DNS); and
            : tools for verifying that the DNS server is operating properly.
  • 咱俩也来看看unbound,因为刚出来市场上反应好像不是相当的大,因为太新

[root@localhost ~]# yum info unbound
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Available Packages
Name        : unbound
Arch        : x86_64
Version     : 1.4.20   <<版本
Release     : 28.el7
Size        : 473 k
Repo        : bash
Summary     : Validating, recursive, and caching DNS(SEC) resolver
URL         : http://www.nlnetlabs.nl/unbound/   <<官方网站
License     : BSD
Description : Unbound is a validating, recursive, and caching DNS(SEC) resolver.
            : 
            : The C implementation of Unbound is developed and maintained by NLnet
            : Labs. It is based on ideas and algorithms taken from a java prototype
            : developed by Verisign labs, Nominet, Kirei and ep.net.
            : 
            : Unbound is designed as a set of modular components, so that also
            : DNSSEC (secure DNS) validation and stub-resolvers (that do not run
            : as a server, but are linked into an application) are easily possible.
  • dnsmasq,也提供了有的大概的DNS服务和DHCP服务

[root@localhost ~]# yum info dnsmasq
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
Name        : dnsmasq
Arch        : x86_64
Version     : 2.66
Release     : 21.el7
Size        : 464 k
Repo        : installed
From repo   : anaconda
Summary     : A lightweight DHCP/caching DNS server
URL         : http://www.thekelleys.org.uk/dnsmasq/
License     : GPLv2
Description : Dnsmasq is lightweight, easy to configure DNS forwarder and DHCP server.
            : It is designed to provide DNS and, optionally, DHCP, to a small network.
            : It can serve the names of local machines which are not in the global
            : DNS. The DHCP server integrates with the DNS server and allows machines
            : with DHCP-allocated addresses to appear in the DNS with names configured
            : either in each host or in a central configuration file. Dnsmasq supports
            : static and dynamic DHCP leases and BOOTP for network booting of diskless
            : machines.

四、一回完整的DNS查询过程

 

图片 3
Client—–>hosts文件—–>DNS Local
Cache—–>DNS Server (recursion,递归)—–>

  • 若为本人担当剖判的域:直接查询数据库并回到答案;
  • 若不是团结担负分析的域:Server Cache—–>iteration(迭代)

DNS服务器搭建

  • 接下去本人将安插DNS服务器
  • 我是在CentOS7.3上边演示的那大家伊始
  • 当然在上马在此之前先运维下yum repolist翻开下下yum源是还是不是正规
  • 还要在狠抓验在此之前先把防火墙和S埃利nux全给关了以防出难点
  • 首先安装bind,运转命令yum -y install bind

[root@localhost ~]# yum -y install bind
Total                                                                                                                                                         20 MB/s | 2.8 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 32:bind-libs-9.9.4-37.el7.x86_64                                                                                                                                          1/2 
  Installing : 32:bind-9.9.4-37.el7.x86_64                                                                                                                                               2/2 
  Verifying  : 32:bind-9.9.4-37.el7.x86_64                                                                                                                                               1/2 
  Verifying  : 32:bind-libs-9.9.4-37.el7.x86_64                                                                                                                                          2/2 

Installed:
  bind.x86_64 32:9.9.4-37.el7                                                                                                                                                                

Dependency Installed:
  bind-libs.x86_64 32:9.9.4-37.el7                                                                                                                                                           

Complete!
  • 在运行rpm -ql bind,看一下她的文件列表

[root@localhost ~]# rpm -ql bind
/etc/logrotate.d/named
/etc/named
/etc/named.conf     <<配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf  
/etc/rndc.key
/etc/rwtab.d/named
/etc/sysconfig/named
/run/named
/usr/lib/systemd/system/named-setup-rndc.service
/usr/lib/systemd/system/named.service
/usr/lib/tmpfiles.d/named.conf
/usr/lib64/bind
/usr/libexec/generate-rndc-key.sh
/usr/sbin/arpaname
/usr/sbin/ddns-confgen
/usr/sbin/dnssec-checkds
/usr/sbin/dnssec-coverage
/var/log/named.log   <<日志
/var/log/named.log
/var/named
/var/named/data
/var/named/dynamic
/var/named/named.ca   << 世界十三个根服务器地址
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
/var/named/slaves
  • 小编们去用命令,cat /var/named/named.ca进去看下

;; ADDITIONAL SECTION:
a.root-servers.net. 3600000 IN  A   198.41.0.4   <<ipv4地址 这个地址在美国,可以把IP粘贴到百度上可以查出来
a.root-servers.net. 3600000 IN  AAAA    2001:503:ba3e::2:30   <<ipv6地址
b.root-servers.net. 3600000 IN  A   192.228.79.201
c.root-servers.net. 3600000 IN  A   192.33.4.12
d.root-servers.net. 3600000 IN  A   199.7.91.13
d.root-servers.net. 3600000 IN  AAAA    2001:500:2d::d
e.root-servers.net. 3600000 IN  A   192.203.230.10
f.root-servers.net. 3600000 IN  A   192.5.5.241
f.root-servers.net. 3600000 IN  AAAA    2001:500:2f::f
g.root-servers.net. 3600000 IN  A   192.112.36.4
h.root-servers.net. 3600000 IN  A   128.63.2.53
h.root-servers.net. 3600000 IN  AAAA    2001:500:1::803f:235
i.root-servers.net. 3600000 IN  A   192.36.148.17
i.root-servers.net. 3600000 IN  AAAA    2001:7fe::53
j.root-servers.net. 3600000 IN  A   192.58.128.30
j.root-servers.net. 3600000 IN  AAAA    2001:503:c27::2:30
k.root-servers.net. 3600000 IN  A   193.0.14.129
k.root-servers.net. 3600000 IN  AAAA    2001:7fd::1
l.root-servers.net. 3600000 IN  A   199.7.83.42
l.root-servers.net. 3600000 IN  AAAA    2001:500:3::42
m.root-servers.net. 3600000 IN  A   202.12.27.33
m.root-servers.net. 3600000 IN  AAAA    2001:dc3::35
  • 软件包已消除装好,接下去本人起步DNS服务器,运行命令systemctl start named
  • 在用命令systemctl enable named,把她设为开机运营

[root@localhost ~]# systemctl  enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
  • 既是服务业已起步那大家看下他对应的端口号53端口展开未有,运转命令
    ss -nutl,他会用三个端口三个是TCP的53一个是UDP的53

[root@localhost ~]# ss -nutl
Netid State      Recv-Q Send-Q                                               Local Address:Port                                                              Peer Address:Port              
udp   UNCONN     0      0                                                                *:15562                                                                        *:*                  
udp   UNCONN     0      0                                                        127.0.0.1:53                                                                           *:*                  
udp   UNCONN     0      0                                                                *:68                                                                           *:*                  
udp   UNCONN     0      0                                                              ::1:53                                                                          :::*                  
udp   UNCONN     0      0                                                               :::10338                                                                       :::*                  
tcp   LISTEN     0      10                                                       127.0.0.1:53                                                                           *:*                  
tcp   LISTEN     0      128                                                              *:22                                                                           *:*                  
tcp   LISTEN     0      128                                                      127.0.0.1:953                                                                          *:*                  
tcp   LISTEN     0      100                                                      127.0.0.1:25                                                                           *:*                  
tcp   LISTEN     0      10                                                             ::1:53                                                                          :::*                  
tcp   LISTEN     0      128                                                             :::22                                                                          :::*                  
tcp   LISTEN     0      128                                                            ::1:953                                                                         :::*                  
tcp   LISTEN     0      100                                                            ::1:25                                                                          :::*    
  • 至今劳动业已运转,可是他对应的端口是有标题标,因为绑在了本人本地CentOS7.三的地点网卡,既然绑定的外人怎么访问作者的DNS服务器
  • 自己用自个儿筹划好的客户机CentOS6.9来做客下本人的DNS服务器
  • 能够用命令telnet 172.16.253.8 53,telnet假使是最小化安装是未曾的急需重新安装
  • 172.16.253.8是我CentOS7.3的IP,53是钦点的端口

[root@localhost ~]# telnet 172.16.253.8 53 
Trying 172.16.253.8...
telnet: connect to address 172.16.253.8: Connection refused   <<链接拒绝的意思
  • 接下去本人要打初叶口,要开垦端口的话大家要进去/etc/named.conf,里面去修改配置文件
  • 在改在此以前要专注下她的主人和组的主题素材,不然会出难题,组必要求有读权限,备份配置文件的时候要小心

[root@localhost ~]# ll /etc/named.conf 
-rw-r-----. 1 root named 1705 Mar 22  2016 /etc/named.conf
  • 接下去大家修改配置文件,运维命令vim /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {
        listen-on port 53 { 127.0.0.1; };  <<  要修改的行,或者把他注释掉
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; };

        /* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
         - If your recursive DNS server has a public IP address, you MUST enable access 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
  • 把个中的127.0.0.1除去换成localhost,注释掉也能够
  • 修改玩现在,试行命令systemctl reload named,来重新读取配置文件
  • 前几天在实施下ss -nutl,命令查看下成功了没

[root@localhost ~]# ss -nutl
Netid State      Recv-Q Send-Q                                               Local Address:Port                                                              Peer Address:Port              
udp   UNCONN     0      0                                                                *:15562                                                                        *:*                  
udp   UNCONN     0      0                                                     172.16.253.8:53                                                                           *:*                  
udp   UNCONN     0      0                                                        127.0.0.1:53                                                                           *:*                  
udp   UNCONN     0      0                                                                *:68                                                                           *:*                  
udp   UNCONN     0      0                                                              ::1:53                                                                          :::*                  
udp   UNCONN     0      0                                                               :::10338                                                                       :::*                  
tcp   LISTEN     0      10                                                    172.16.253.8:53                                                                           *:*                  
tcp   LISTEN     0      10                                                       127.0.0.1:53                                                                           *:*                  
tcp   LISTEN     0      128                                                              *:22                                                                           *:*                  
tcp   LISTEN     0      128                                                      127.0.0.1:953                                                                          *:*                  
tcp   LISTEN     0      100                                                      127.0.0.1:25                                                                           *:*                  
tcp   LISTEN     0      10                                                             ::1:53                                                                          :::*                  
tcp   LISTEN     0      128                                                             :::22                                                                          :::*                  
tcp   LISTEN     0      128                                                            ::1:953                                                                         :::*                  
tcp   LISTEN     0      100                                                            ::1:25                                                                          :::*  
  • 现已打响,大家在用作者的CentOS6.9-1,的机械连接下

[root@localhost ~]# telnet 172.16.253.8 53 
Trying 172.16.253.8...
Connected to 172.16.253.8.
Escape character is '^]'.
  • 延续成功,那样小编的CentOS7.3服务器就足以对外服务器了
  • DNS服务配成功,呵呵那只好算是七个缓存服务器,或转发服务器
  • 其次篇作者将搭建根服务器的搭建和从等等的搭建

伍、剖析答案

  • 毫无疑问答案
  • 否认答案:不设有询问的键,由此,不存在与之相应的值;

 

  • 权威答案:由直接承担的DNS服务器重回的答案;
  • 非权威答案

 

二、DNS服务器的品类

担任分析至少2个域:

  • 主DNS服务器
  • 辅助DNS服务器

不肩负域分析:

  • 缓存DNS服务器

1)主-辅DNS服务器

  • 主DNS服务器:维护所担负深入分析的域数据库的那台服务器,读写操作均可进展;
  • 扶植DNS服务器:从主DNS服务器或任何的从DNS服务器这里“复制”1份分析库,但只能实行读操作;

二)“复制”操作的落实格局

  • 序列号:serial,相当于数据库的版本号;主服务器数据库内容发生变化时,其版本号递增;
  • 刷新时间距离:refresh,从服务器每回到主服务器检查连串号更新情形;
  • 重试时间间隔:retry,从服务器从主服务器请求同步分析库战败时,再一次发起尝试请求的年华间隔;
  • 过期时间长度:expire,从服务器始终关系不到主服务时,多久之后屏弃从主服务器同步数据,并终止提供劳务;
  • 否定答案的缓存时间长度:negative answer ttl;

小心:主服务器数据库发生变化时,主服务器会“文告”从服务器随时更新数据;

叁)区域传送

  • 全量传送:axfr,传送整个数据库;
  • 增量传送:ixfr,仅传送变化的数量;

注意:区域(zone)和域(domain)的区别:
区域为概略概念,域为逻辑概念;
如bruce.com域包涵正向深入分析库(FQDN—>IP)和反向分析(IP—>FQDN),每一种深入分析库即为2个剖析区域;

 

相关文章