1.DNS (Domain Name Service 域名解析)

DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网而不需要记忆能够直接被机器识别的IP。

BIND:  Berkeley Internet Name Domain  -->实现

监听端口: UDP:53  TCP:53

DNS默认是工作在UDP下,因为UDP快。一旦网络出现问题,才用TCP。

TCP传输:建立连接需要三次握手,四次断开。需要一定的网络代价。传文件用

UDP: 直接的传输,会丢包。快,即时通信qq用。

搭建步骤如下:

1.安装软件。2.修改配置文件(至少能够解析3个域+自己定义的域)

3.编写区域数据文件。4.启动服务测试。

2.主机间通讯机制的演变
MAC ==》IP ==》主机名

名称解析

名称解析的过程:就是某个应用程序基于某个搜索键在指定数据库中,查询,查询到对应的键,与键对应值被找出来的过程.

/etc/passwd
  <--
 root

login:

password:

输入用户名和密码之后,怎么知道passwd文件和shadow文件?查看文件more
/etc/nsswitch.conf

解析机制

# cat
/etc/nsswitch.conf

在这个文件中可以看到hosts后面的定义

主机名-->IP
      
正向解析

IP-->主机名 反向解析

hosts:
  file
 dns

2、域名解析发展历程

1)本地hosts

每台机器都需要维护一份,不知道新的主机,随着机器越来越多,维护成本高,通信之间不方便(不同机器直接通信访问本地的host文件)

2)地址分配机构(ftp)

每台机器到ICANNN进行注册,每台机器定期的从最全的服务器上去下载/刷新hosts文件;随着机器的数量的增多,服务器的带宽是有限的,很慢的

3)集中解析机制

机器本身不存hosts文件,直接去服务器请求,只发送请求的带宽

4)分布式数据库

主服务器建立了很多的子服务器,子服务分模块存储各个域名。

主服务器,下面有很多小服务器(1,2,3…),假如A访问B,通过主服务器反馈:我不知道B是谁,但是1号机器知道,你去问他吧,A再访问1号机器,1号机器解析反馈B的IP给A,A拿到B的IP后,再访问B

3.域介绍

 说明:www.baidu.com严格的说应该是www.baidu.com.后面得加根域

• 一级域/顶级域

• 早期有ICANN(The
Internet Corporation for Assigned Names and
Numbers)自行创建服务器

– 一级域分三类

– 1.组织域:.com,.org,.net,.mil,.gov,.edu
(.mil是军队的意思)

– 2.国家域:.cn,.hk,.tw,.jp,.us,.uk(中国,香港,台湾,日本,美国,英国)

– 3.反向域:.in-addr.arpa(IP-->主机名)

• 二级域(在互联网上,通常二级域就由公司等去申请的,因此通常被称为组织域)

说明点:

1)分属两个不同域的相同主机名是不会存在问题的.

2)而主机名的书写习惯是自下向上的,自底向上进行追溯

3)在书写上可以省略.(根域),但是在配置DNS时,绝对不能省略,否则可能会补上其他域名

4.DNS解析过程

 DNS服务器的类型(能双向问,能解析本地域加上缓存名称服务器)

-
   主DNS服务器
   (master)

-
   辅助DNS服务器(数据从主同步过来)

缓存名称服务器:只能单向问,不能解析本地域

 参考答案:告诉你去找com

 权威答案:直接告诉你IP地址

 迭代:先问根,根说是com,再去问com

 递归-->逐层向下,逐层向上,只发一次请求就能得到权威答案的称为递归

 根为谁提供递归?根不为任何人提供递归

 外来机器可否指定本DNS?看本地是否愿意了,比如谷歌提供的 8.8.8.8

 肯定应答: 给你响应了,就是肯定应答

 否定应答: ping 一个不存在的主机,得不到答复

肯定应答(有这个ip,并给你这个ip,本地DNS要缓存)

否定应答(没有这个ip,本地DNS要缓存)

 关于应答的缓存:

 为了加快访问速度,会对肯定答案进行缓存,那否定答案呢? 也需要缓存的,防止在一段时间内重复此访问

 肯定应答和否定应答有缓存时间,是需要设定的

FQDN(俗称网址)

 FQDN:Full
Qualified Domain Name

 完全限定域名 www.baidu.com

 FQDN-->IP正向解析
 IP-->FQDN反向解析

域:Domain 逻辑空间                 区域:zone
物理空间

DNS服务器的类型(能双向问,能解析本地域加上缓存名称服务器)

-
   主DNS服务器
   (master)

-
   辅助DNS服务器(数据从主同步过来)

缓存名称服务器(只能单向问,不能解析本地域,至少能的解析 根域 、localhost 、127.0.0.1反向域进行解析)

5.区域文件与资源记录

区域数据文件,里面的一行行的对应关系是资源记录(比如/etc/hosts文件)

资源记录(Resource Record,简称RR)

资源记录有类型,用于表示资源的功能

1)SOA:Start Of
Authority,起始授权记录这一区域划归谁管理

2)NS:Name Server,域名服务器

3)MX:Mail
eXchanger:邮件交换器

4)A:Address,(FQDN-->IP)正向解析

5)PTR: PoinTeR,(IP-->FQDN)反向解析

6)AAAA:Address,FQDN-->IPv6

7)CNAME:Canonical
Name,正式名称(别名记录)

早期DNS只支持FQDN-->IP的解析

后来利用指针实现反向解析,两种实现机制不同,所以

正向反向工作起来不相同,解析技术相差甚远

所以正反向解析使用的不是同一种技术,所以不能在同一个数据库中进行

域:Domain 逻辑空间     区域:zone
物理空间

DNS服务器的类型:1、主DNS服务器
   2、辅助DNS服务器 
  3、缓存名称服务器

6.安装软件bind:

yum install bind

DNS相关文件说明:

主配置文件:/etc/named.conf

启停脚本:/etc/rc.d/init.d/named

区域数据文件:/var/named/

7.删除并重写配置文件(/etc/named.conf)

删除主配置文件:rm /etc/named.conf
 重新写配置文件: vim /etc/named.conf

#至少对三个域的解析,叫缓存名称服务,加上对本地域的解析,就叫DNS
  (根域,local域,反向域,本地域)

内容如下:语法是:1 花括号后面有;
2 花括号里面的每行后面有;

#定义全局选项

options{

directory
 "/var/named";

};

# zone
  hint线索,可以解析,具体解析要到相对应的文件去实现

zone
 "."  IN {

type
hint;

file
"named.ca";

};

zone
 "localhost" IN {

type master
;

file
"named.localhost";

};

zone
 "1.0.0.127.in-addr.arpa"  IN
{

type master
;

file
"named.loopback";

};

# “lbg.com”双引号里面定义的名字叫区域名称

zone
 "lbg.com" IN {

type
master;

file
"lbg.com.zone";

};

上面最后的lbg.com就是本地域,其中本地域的文件/var/named/lbg.com.zone要自己建,自己编辑.

8.新建区域数据文件并编辑.(/var/named/lbg.com.zone)

 /var/named/bsr.com.zone就是区域数据文件,里面内容就是资源记录.@就是区域名称.

SOA记录,起始授权记录 ,有且只有一个,必须在第一个

#习惯性写一个@ 符号,@ 符号表示区域名称,$全局定义肯定应答缓存时间,默认是秒

ttl : time to
life  时间周期

区域数据文件里第一条必须是SOA(起始授权记录),里面的域名必须是绝对写法.

NS记录标识当前域的DNS服务器是谁的.故后面必须有对应的解析ip.有几个DNS服务器就写几条.NS记录必须写.

MX记录可写可不写.

资源记录的格式:

name
    [ttl(缓存时间)]
    IN(internet)
    资源记录类型(RRtype)
 Value(每行只有一条记录)

/var/named/bsr.com.zone里面内容例子:

例子:

@
600 IN SOA  dns.lbg.com.
   admin.bosenrui.com.(管理员邮箱)

600
      #为肯定应答缓存时间

20170716
  #序列号(serial number)
;(分号标示注释)注释内容,十进制数据,不能超过10位,通常使用日期,例如2014031001(辅助DNS同步用)

4H
      #刷新时间(refresh
time) ;即每隔多久到主服务器检查一次(如4H)

1D
      #重试时间(retry
time) ;应该小于refresh time(如果成功,又开始刷新时间)

7D
      #过期时间/失效时间(expire
time); (如果过了这个时间就自杀了)

7D
      #否定应答缓存时间negative
answer ttl ;否定答案的ttl,否定答案客户端能够缓存多久

@ IN  NS  dns
    #
前面是写绝对FQDN,如果写相对FQDN,“dns” 就补上bsr.com.  如何判断,看后面的 " ."

@  IN  MX  10
 mail  #
 10邮件的表示优先级

dns   IN
  A
  192.168.88.4
 # (DNS服务器要和本机的IP一样)除了SOA之外的@ 记录,其他的资源记录都要写与之对应的A记录

Lbg IN
CNAME     #别名记录

书写格式

name
    [ttl(缓存时间)]
    IN(internet)
    资源记录类型(RRtype)
 Value

name是指区域名称,通常可以简写为“@”

value DNS服务器的FQDN(可以使用相对名称)

NS:name:区域名称,通常可以简写为@.value:DNS服务器的FQDN(可以使用相对名称)

例子: @ 600 IN NS ns

A指A记录,只能出现在正向区域数据文件中,但凡以FQDN作为其值得记录,都应该给这个值创建至少一条A记录,以方便这个FQDN也有其IP地址

MX:可以有多个

name:区域名称,用于标识smtp服务器

value:包含优先级和FQDN

优先级:0-99,数字越小,级别越高,

例子:

@
600
 IN
MX
10
mail

@
600
 IN
MX
20
mail2

CNAME(用于创建别名)

name :FQDN(可以使用相对名称)

value :FQDN(可以使用相对名称)

例子:ftp
IN
CNAME
www

检查named的配置文件的语法错误: named-checkconf

9.测试DNS(/etc/resolv.conf)

 在测试主机上:vim /etc/resolv.conf
 进去修改

添加一行: nameserver 192.168.88.4
 #修改成本地DNS服务IP

服务器端启动:service named start

里面可以写多条nameserver ip 作为次选NDS服务.

当服务器主机本身也要用这个DNS时,若不在其 /etc/resolv.conf
里添上nameserver
 192.168.88.4,其不一定可用DNS,想确保可用,加上即可.

重启服务:service named restart

客户端ping试下.

2.
NDS反向解析(ip--->FQDN)

1.修改配置文件(/etc/named.conf)

将ip的网络位反着写.

在/etc/named.conf下添加一行:

 zone “88.168.192.in-addr.arpa” IN
{

type master;

file “192.168.88.zone”

}

2.创建编辑反向区域文件

在/var/named里创建反向解析文件192.168.88.zone,并编写反向区域解析文件.

第一行SOA不变,后面行的所有域都必须写绝对路径. 反向解析主要的类型是PTR(pointer 指针)

3.测试(host/dig -t)

host命令和dig命都是是用来测试DNS服务器.

dig 命令

dig
[-t type] [-x addr]  [hostname]
 [@DNS服务器(指定服务器解析)]

host

host[-t
type] {hostname} [server]

测试时在服务器端的虚拟机:--rndc-confgen -r /dev/urandom

Host -t选项可正向解析与反向解析.

Dig命令里-t测试正向解析,-x测试反向解析.结果分:提问段/应答段/认证段/附加段.

正向解析:(dig -t A www.lbg.com
)
 需加上类型.

反向解析:(dig -x
192.168.88.2),无须加类型.

注意:

host -t SOA
www.lbg.com  这样ping 没有应答,必须去掉 www.
 (跟区域名称,不要跟FQDN,说白了就是跟@符号)

dig
 -t NS www.lbg.com 这样ping 没有应答,必须去掉 www.

MX 也是这么查

host -t
 A www.lbg.com 这样OK

dig
 -t  A www.lbg.com
 这样OK

@指定DNS服务IP 优先级别高于 /etc/resolv.conf 里面的配置

指定DNS进行测试,主从服务器都是可以的

host -t A
www.lbg.com 192.168.100.10
   --指定DNS进行测试

dig -t A
sb.lbg.com @192.168.100.10
     --指定DNS进行测试

3.设置辅助DNS服务

1.安装软件: yum install
bind

 2.修改主配置文件和子配置文件:

主配置文件:/etc/named.conf.

子配置文件:vim
/etc/named.rfc1912.zones

3.启动服务:
service named start

再查看/var/named/slaves目录,里面就同步了区域文件.

4.测试。区域传送文件: /var/named/slaves

dig -t axfr lbg.com
 完全区域传送

  5.验证区域数据文件的同步性:

第一步:编辑主服务器上的数据文件vim
lbg.com.zone,增加如下的信息:

@
IN  NS  dns1.lbg.com.

dns1
IN A  192.168.100.11

第二步:主服务器上重启服务并登陆客户端切换到/var/named/slaves后

查看文件 more
lbg.com.zone 发现数据文件并没有及时的更新

第三步:修改主服务上的数据文件vim lbg.com.zone,修改序列号,稍微的变动即可

第四步:主服务上的服务重启,并切换到从服务器的相关目录下,查看文件more
lbg.com.zone

可以看到,这次是可以了

说明:只要两边的区域文件是一样的,就是会认为是一样的。要想立即同步,修改序列号就可以了。可能有防火墙的限制。

linux之DNS服务的更多相关文章

  1. linux 软连接创建 压缩解压缩 linux的dns服务相关

    linux软连接创建 注意用绝对路径,语法如下 ln -s 目标文件绝对路径 软连接名字绝对路径 ln -s /小护士.txt /tmp/hs.txt 修改linux的PS1变量,命令提示符变量 PS ...

  2. 【Linux】DNS服务-BIND从服务器、缓存服务器及转发服务器配置(三)

    环境 操作系统:CentOS 6.5 DNS软件:bind(安装参照:[Linux]DNS服务-BIND基础配置(二)) BIND从服务器 从服务器就是在bind的主配置文件中添加从域example. ...

  3. Linux下DNS服务(Bind9)之Web管理利器-NamedManager部署说明

    NamedManager 是一个基于Web的DNS管理系统,可用来添加.调整和删除DNS的zones/records数据.它使用Bind作为底层DNS服务,提供一个现代Ajax的Web界面,支持 IP ...

  4. 【Linux】DNS服务-BIND基础配置(二)

    BIND简介 现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet ...

  5. 【Linux】DNS服务-BIND基础配置

    1.BIND简介 现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Intern ...

  6. Linux学习-DNS服务相关

    一.DNS服务简介 1.基本概念 (1) DNS( Domain Name System )域名系统,是一种组织成域层次结构的计算机和网络服务命名系统,是一个应用层协议,使用TCP与UDP的53端口, ...

  7. Linux:DNS主、从、缓存服务器配置、DNS同步加密TSIG配置、DNS分离解析配置

    DNS主服务器配置(正向解析.反向解析) 正向解析:根据主机名查找对应的IP地址.当用户访问一个域名时(不考虑hosts文件等因素),正常情况会向指定的DNS主机发送递归查询请求反向解析:根据IP地址 ...

  8. DNS服务和BIND

    今天我们来介绍一下DNS服务,在大家的印象中DNS可能只是将域名解析为IP地址,可能其他的暂时还不太了解,希望本篇内容能帮助大家. 1.什么是DNS? DNS( Domain Name System) ...

  9. Linux校园网DNS问题

    问题 我发现在windows下连接校园网后能正常使用网络,可是到了Linux下,连接成功后还是不行 解决 在windows下找到ipv4的配置,然后查看一下那个DNS服务器的ip 在我们成都信息工程大 ...

随机推荐

  1. java中的t怎么用

    <T> T表示返回值是一个泛型,传递啥,就返回啥类型的数据,而单独的T就是表示限制你传递的参数类型,这个案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值<T ...

  2. DFS深度优先搜索算法

    Lake Counting(POJ No.2386) 有一个大小为N*M的园子,雨后积起了水.八连通的积水被认为是在一起的.请求出园子里共有多少个水洼?(八连通是指下图中相对w的*部分) * * * ...

  3. xshell多窗口同时执行输入命令

  4. pmm-server 搭建

    1 搭建docker centos 下 参考文档搭建docker  https://www.cnblogs.com/brady-wang/p/11543237.html docker create \ ...

  5. spring boot:实现图片文件上传并生成缩略图(spring boot 2.3.1)

    一,为什么要给图片生成缩略图? 1, 用户上传的原始图片如果太大,不能直接展示在网站页面上, 因为不但流费server的流量,而且用户打开时非常费时间, 所以要生成缩略图. 2,服务端管理图片要注意的 ...

  6. git 团队协作的一些命令

    1.开分支 git branch 新分支名 例如,在master分支下,新开一个开发分支: git branch dev 2.切换到新分支 git checkout 分支名 例如,在master分支下 ...

  7. JavaScript正则表达式随笔

    概念先行. 正则表达式:又称规则表达式.常用于检索,替换符合某种符合(规则)的文本. 组成:普通字符和元字符,普通字符就是一个普通的查找串,如abc,原字符具有特殊含义. 这里研究的是JavaScri ...

  8. String字符串性能优化的探究

    一.背景 String 对象是我们使用最频繁的一个对象类型,但它的性能问题却是最容易被忽略的.String 对象作为 Java 语言中重要的数据类型,是内存中占用空间最大的一个对象,高效地使用字符串, ...

  9. 正式班D21

    2020.11.03星期二 正式班D21 目录 11.5 源码包 11.5.1 预先安装编译安装依赖的库 11.5.2 官网下载源码包 11.5.3 解压.编译.编译安装 11.5 源码包 11.5. ...

  10. Redis学习五(Redis 阻塞的原因及其排查方向).

    一.慢查询 因为 Redis 是单线程的,大量的慢查询可能会导致 redis-server 阻塞,可以通过 slowlog get n 获取慢日志,查看详情情况. 二.bigkey 大对象 bigke ...