(DNS)

 

(一)DNS入门介绍

先关selinux和firewalld(setenforce 0; systemctl stop firewalld.service )
前言:DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

  • socket 
    • C/S模式 
      • Clients:发起应用请求的程序
      • Server:相应请求(提供服务)的程序 
        • 服务器端的程序必须监听在一个socket上(Socket=IP+Port),且套接字必须在客户端和服务端都有
    • 传输层协议:TCP , UDP , SCTP 
      • TCP :transmission control protocol 面向连接的协议,双方在互相通信的时候,需要建立虚链路,虚连接
      • UDP:user datagram protocol 无连接的协议,双方在互相通信的时候,不需要建立虚链路,虚连接
  • DNS(domain name service)应用层协议 
    • 属于C/S模式
    • 监听的端口:53/udp, 53/tcp
    • www.baidu.com: FQDN( full qualified damain name )
    • top level domain 
      • 组织域:.com , .net , .org , gov , edu , mil
      • 国家域:.cn , hk , tw , .jp
    • DNS查询类型 
      • 递归查询:从客户机到本地设置的DNS服务器
      • 迭代查询:从根服务器到各个子服务器
  • 通常的DNS查询过程
1)当用户在浏览器输入域名的时候,首先会在本地的hosts文件中查找,如果hosts文件中没有对应域名的IP地址,那么就会发起一个DNS协议的网络请求,对DNS根服务器的53号端口发起一个UDP请求,根服务器在解析浏览器发送的DNS请求之后,会查找本地的DNS数据库,在本地的数据库查找完毕之后会通过网络响应给客户端。那么,这个时候客户端就拿到了域名对应的IP地址,就可以访问服务器了。
2)对于用户第一次输入一个域名的时候,先会查找本地的hosts文件,如果hosts文件没有找到,那么将会在本地的DNS缓存中查找,如果本地缓存中没有找到,那么就会去找DNS服务器了。那么当DNS服务器返回解析到的IP地址给用户的时候,将会先将域名对应的IP地址暂存至缓存
  • DNS的查询分类 
    • 递归查询和迭代查询的区别 
      • (1)递归查询 
        • 递归查询是客户端面向本地的DNS服务器的一种查询方式,在该模式下运营商的DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
      • (2)迭代查询 
        • 迭代查询是运营商的DNS 服务器代理用户的DNS请求,面向全球的DNS服务器进行的查询。当客户机发送查询请求时是递归查询,而运营商的DNS服务器会首先请求根DNS 服务器,而根DNS服务器并不直接回复查询结果,而是告诉运营商DNS服务器另一台DNS 服务器地址,运营商DNS服务器再向这台DNS 服务器提交请求,依次循环直到拿到查询的结果为止。
        • 示意图说明

Alt text

  • DNS解析 
    • DNS名称解析方式 
      • 名称—>IP:正向解析
      • IP—>名称:反向解析
      • 注意:二者的名称空间,非为同一个空间,非同一颗树,因此,也不是同一个解析库
    • DNS服务器类型 
      • 负责解析至少一个域 
        • 主名称服务器
        • 辅助名称服务器
      • 不负责域解析:缓存名称服务器
    • 一次完整的DNS查询请求所经过的流程 
      • Client--->hosts文件--->DNS Local Cache--->服务商的DNS server (recursion) ---> DNS服务器 
        • 自己负责解析的域:直接查询数据库并返回答案
        • 不是自己负责的解析域:server cache —> iteration(迭代)
      • 解析答案 
        • 肯定答案
        • 否定答案:不存在查询的键,因此,不存在与其查询键对应的值
        • 权威答案:由直接负责DNS服务器返回的答案
        • 非权威答案
    其实我们申请一个域名的时候,一个都是申请一个二级域,比如yhyblog.cn。这就是一个二级域。而一个二级域可以申请多个域名,如:www.yhyblog.cn。如果有机会,希望可以带着大家在阿里云上购买域名、服务器,搭建自己的博客站点

(二)DNS主从服务器配置说明

前言:

  • DNS主服务器——辅助服务器 
    • 主DNS服务器:维护所负责解析的域数据库的那台服务器,读写操作均可进行
    • 从DNS服务器:从主DNS服务器那里或其他从DNS服务器那里复制一份解析库;但只能进行读操作 
      • 复制操作的实施方式 
        • 序列号:serial,也就是数据库的版本号,当主服务器的数据库发生变化时,其版本号递增
        • 刷新时间间隔:refresh,从服务器每隔多久到主服务器检查更新情况
        • 重试时间间隔:retry,从服务器从主服务器请求数据库失败,再次发起请求的时长
        • 过期时长:expire,从服务器始终练习不到主服务器,多久之后放弃从主服务器同步数据库,停止提供服务
        • 否定答案的缓存时长
      • 主服务器通知从服务器更新数据
      • 数据区域传送 
        • 全量传送(axfr):将整个数据库进行传送
        • 增量传送(ixfr):仅仅传送变更的数据
      • 区域(zone)和域(domain) 
        • yhyblog.cn 域 
          • FQDN--->IP 
            • 正向解析库 + 正向解析功能 == 正向解析区域
          • IP ---> FQDN 
            • 反向解析库 + 方向解析功能 == 方向解析区域
      • 区域数据库文件 
        • 资源记录:resource record 
          • 记录有其类型:A , AAAA , PTR, SOA , NS , CNAME , MX
          • 例如:IP和域名的对应关系、IP和邮件地址的对应关系
        • SOA:start of authority 起始授权记录,一个区域解析库有且只能有一个SOA记录,必须放在第一条,表示授权一个解析区域
        • NS:name service 域名服务记录,一个区域解析库可以有多个NS记录,其中一个为主的。一个NS记录表示给一个区域进行解析
        • A:address,地址记录,FQDN—>IPv4
        • AAAA:地址记录。FQDN—>IPv6
        • CNAME:canonical name 别名记录
        • PTR:pointer , IP—>FQDN
        • MX:mail exchanger 邮件交换器 
          • 优先级:0-99 数字越小优先级越高
      • 资源记录的定义格式 (非常重要,一定要牢记) 
        • 语法:name(资源记录名) [TTL值] IN RR_type(资源记录类型) 值
  • SOA记录详解 
    • name : 当前区域的名字,例如 yhyblog.cn 或者2.3.4.in-addr.arpa
    • value:有多部分组成 
      • (1)当前区域的区域名称(也可以使用主DNS服务器名称)
      • (2)当前区域管理员的邮箱地址,但地址中不能使用@符号,一般使用点号来替代
      • (3)(主从服务协调属性的定义以及否定答案的TTL)
yhyblog.cn 86400 IN SOA yhyblog.cn.  admin.yhyblog.cn. (

2017082101 ;serial
2H ; refresh
10M; retry
1W ; expire
1D ; negative answer ttl

)
  • NS记录详解 
    • name : 当前区域的区域名称
    • value:当前区域的某DNS服务器的名字,例如 ns.yhyblog.cn 
      • 注意:一个区域有多个ns记录
 yhyblog.cn. 86400 IN NS www.yhyblog.cn
yhyblog.cn. 86400 IN NS bbs.yhyblog.cn
  • MX记录 
    • name:当前区域的区域名称
    • value:当前区域某个邮件交换器的主机名 
      • 注意:MX记录可以有多个,但是每个记录的value之前应该有一个数字表示其优先级
 yhyblog.cn.   IN   MX  10   mx1.yhyblog.cn.
yhyblog.cn. IN MX 20 mx2.yhyblog.cn.
  • A记录 
    • name:某FQDN, 例如:www.yhyblog.cn
    • value:某IPv4地址
www.yhyblog.cn    IN   A    1.1.1.1
www.yhyblog.cn IN A 1.1.1.2
bbs.yhyblog.cn IN A 1.1.1.1
  • AAAA记录 
    • name:某FQDN, 例如:www.yhyblog.cn
    • value:某IPv6地址
  • PTR 
    • name :IP地址,有特定格式,IP反过来写,而且有特定后缀,例如:1.2.3.4的记录应该写为4.3.2.1.in-addr.arpa.;
    • value : FQND
4.3.2.1.in-addr.arpa.   IN    PTR   www.yhyblog.cn
  • CNAME 
    • name:别名, FQDN格式的别名
    • value:FQDN的正式名称
 web.yhyblog.cn.  IN   CNAME   www.yhyblog.cn
  • 区域数据库书写格式的注意点

1)TTL可以从全局继承
2)@表示当前区域的名称
3)相邻的两条记录其name相同时,后面的可省略
4)对于正向区域来说,各XM , NS等类型的记录的value为FQDN , 此FQDN应该有一个A记录

(三)下午上课前简要回顾和展望

前言:上课先讲清楚理论知识,下午进行实际操作
经过上午对DNS理论知识的讲解,同学们已经了解了对DNS服务的一个简要的配置与DNS服务的一个应用场景。下午通过搭建DNS服务器让大家熟悉DNS服务器的搭建过程,以及通过讲解DNS服务器的主从复制,扩展到数据库的主从复制

  • 资源记录的类型:SOA NS MX A AAAA PTR CNAME
  • 区域传送的类型:全量传送 , 增量传送
  • 资源记录定义的格式 
    • 语法:资源记录名 [TTL值] IN 资源记录类型 值
  • 课外练习:在阿里云的万网上注册一个域名,在购买一个虚拟主机

(四)DNS and bind实战

前言:

  • BIND 的安装配置 
    • BIND:Berkeley Internet name domain 。
(1)bind是dns协议的一种实现,也就是说,bind仅仅是实现DNS协议的一种应用程序
(2)bind运行后的进程名叫named,不叫bind
  • 程序包: 
    • bind-libs:被bind和bind-utils包中的程序共同用到的库文件
    • bind-utils:bind客户端程序集,例如:dig , host , nslookup等
    • bind:提供的dns server 程序、以及几个常用的测试程序
    • bind-chroot:选装,让named运行在jail中
  • bind 
    • 服务的主配置文件在: /etc/named.conf 
      • 可以通过include将其他文件包含进来,如: 
        • /etc/named.iscdlv.key
        • /etc/named.rfc1912.zones
        • /etc/named.root.key
    • 解析库文件(非常重要) 
      • /var/named/目录下
      • 一般名字命名为:区域名称.zone
      • 注意:
      • (1)一台DNS服务器可以同时为多个区域提供解析 
        • 例如:可以为yhyblog.cn、uplooking.com、baidu.com等区域提供解析服务
      • (2)必须要有根区域解析库文件,告诉DNS服务器根节点服务器地址,named.ca
      • (3)还应该有两个区域解析库文件,localhost 和 127.0.0.1的正反向解析库 
        • 正向解析库叫:/var/named/named.localhost
        • 反向解析库叫:/var/named/named.loopback
    • rndc:名称服务器的远程控制工具 
      • 默认工作在953/tcp , 监听于127.0.0.1地址,因此仅仅是本地使用
    • bind程序安装完成之后,默认即可作为缓存名称服务器使用,就像我们经常在指定114.114.114.114.114一样,如果没有专门负责解析的区域。可直接启动服务。但是先不启动,先修改配置文件 
      • CentOS 6 : service named start
      • CentOS 7 : systemctl start named.service
    • bind的主配置文件(/etc/named.conf)格式详解 
      • 全局配置段 
        • options{...}
      • 日志配置段 
        • logging{...}
      • 区域配置段 
        • zone{...} 那些由本机负责解析的区域,或转发的区域
        • 注意:对于DNS主机来说,每一个配置语句必须以分号结尾
      • 作为缓存名称服务器的配置,修改配置文件/etc/named.conf 
        • 监听能与外部主机通信的地址,删除127.0.0.1, 只保留listen-on port 53 { }; 如果想监听特定的主机,listen-on port 53 { 192.168.23.3; }; 
          • 并且关闭 dnssec-enable no; dnssec-validation no; dnssec-lookaside no; 注释 allow-query { localhost; };
        • 只要修改了配置文件,必须检查配置文件的语法错误 
          • named-checkconf /etc/name.conf
        • 启动服务 
          • systemctl start named.service
      • DNS服务既监听TCP的53号端口用于传送,又监听UDP的53号端口用于解析
  • DNS缓存服务器的配置步骤(必须掌握)
1:yum 安装bind

2:编辑主配置文件/etc/named.conf

3:修改全局配置段中
listen-on port 53 { 192.168.23.10; };
//allow-query { localhost; };
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;

4:检查配置文件是否修改正确
named-checkconf /etc/named.conf

5:重启named程序
systemctl start named.service

6:开启另外一台主机,使用nmtui命令,设置其DNS为192.168.23.10,且重启网卡

7:再ping下百度,看看是否可以正常解析
  • DNS测试工具的使用(了解) 
    • dig命令, host命令, nslookup命令,rndc命令
  • dig命令(直接测试DNS性能,不会查询/etc/hosts文件) 
    • dig [-t RR_TYPE] name [@SERVER] [query options] 如果[@SERVER]不写,那就使用本地指定的dns服务器,如果指定了就不会读本地的dns服务器 
      • 其中 [query options]为查询选项,可以使用 
        • +[no]trace :跟踪解析过程 
          • dig -t A www.baidu.com +trace
        • +[no]recurse:进行递归解析 
          • dig -t A www.baidu.com +recurse
        • 用于测试dns系统,因此其不会查询hosts文件 
          • 注意反向解析使用: dig -x ip 
            • dig -x 115.239.210.176
          • 模拟区域传送 
            • dig -t axfr DOMAIN [@SERVER]
  • host命令:直接返回解析结果 
    • host [-t RR_TYPE] name SERVER_IP
    • host -t A www.baidu.com
    • host -t NS baidu.com
    • host -t MX baidu.com
  • nslookup命令 
    • nslookup [ -options ] [ name ] [server]
[root@nds1 etc]# nslookup
> server 192.168.23.10
Default server: 192.168.23.10
Address: 192.168.23.10#53
> set q=A
> www.sina.com
Server: 192.168.23.10
Address: 192.168.23.10#53

Non-authoritative answer:
www.sina.com canonical name = us.sina.com.cn.
us.sina.com.cn canonical name = spool.grid.sinaedge.com.
Name: spool.grid.sinaedge.com
Address: 222.76.214.60
  • rndc命令:用于named服务控制命令 
    • rndc status :查看状态
    • rndc flush :清空缓存服务器缓存
如何搭建一个正向解析服务器
1:在阿里云购买一个域名和服务器主机
2:在域名后台修改域名的NS记录指向服务器主机的IP地址
  • 配置解析一个正向区域 
    • 前提条件:(1)在互联网注册一个域名。(2)有一台互联网主机(云服务主机)(3)在域名服务注册的后台设置指向这台互联网主机
    • 配置 正向区域的步骤
    • 以yhyblog.cn域为例 
      • (1)定义解析区域 
        • 一般定义在/etc/named.rfc1912.zones里面 
          • zone "ZONE_NAME" IN { 
            type { master | slave | hint | forward }; 
            file "ZONE_NAME.zone"; 
            };
          • 例如:在/etc/named.rfc1912.zones中添加这几行 
            zone "yhyblog.cn" IN { 
            type master; 
            file "yhyblog.cn.zone"; (这里的yhyblog.cn.zone中的yhyblog.cn是在互联网上注册的域名) 
            };
      • (2)建立区域数据文件(主要记录为A或者AAAA) 
        • 在/var/named目录下建立区域数据文件 
          • 区域数据文件的文件名为:/var/named/yhyblog.cn.zone
          • 文件内容为:
$TTL 3600

$ORIGIN yhyblog.cn. ; 这里会自动补全yhyblog.cn
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017082101
1H
10M
3D
1D ) ; SOA记录是授权一个yhyblog.cn解析域

IN NS ns1 ; NS记录是用来指定解析yhyblog.cn域,ns1为解析服务器的域名
IN MX 10 mx1 ; MX记录是用来指定解析yhyblog.cn域,ns1为解析服务器的邮件地址
IN MX 20 mx2
ns1 IN A 192.168.23.10 ;ns1域名也必须有一条A记录
mx1 IN A 192.168.23.10 ;xm1域名也必须有一条A记录
mx2 IN A 192.168.23.10 ;xm2域名也必须有一条A记录
www IN A 192.168.23.3
web IN CNAME www
bbs IN A 192.168.23.7
bbs IN A 192.168.23.8
  • 修改yhyblog.cn.zone的权限和属组 
    • chown .named /var/named/yhyblog.cn.zone
    • chmod o= /var/named/yhyblog.cn.zone
  • 检查配置文件和区域解析库文件的语法错误 
    • named-checkconf /etc/named.conf
    • named-checkconf /etc/named.rfc1912.zones
    • named-checkzoen yhyblog.cn /var/named/yhyblog.cn.zone
  • 重启named服务让服务器重载配置文件和区域数据文件 
    • rndc reload 或 systemctl reload named.service
  • 使用dig命令测试当前配置的解析区域

    • dig -t A www.yhyblog.cn @192.168.23.10
  • 总结如何配置一个正向解析区域的详细步骤(必须掌握)

1:定义解析区域, 编辑/etc/named.rfc1912.zones文件,添加
zone "yhyblog.cn" IN {
type master;
file "yhyblog.cn.zone";
};


2: 编辑/var/named/yhyblog.cn.zone,添加解析区域
$TTL 3600
; 这里会自动补全yhyblog.cn
$ORIGIN yhyblog.cn.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017082101
1H
10M
3D
1D )

IN NS ns1
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 192.168.23.10
mx1 IN A 192.168.23.10
mx2 IN A 192.168.23.10
www IN A 192.168.23.3
web IN CNAME www
bbs IN A 192.168.23.7
bbs IN A 192.168.23.8

3:修改yhyblog.cn.zone的权限和属组
chown .named /var/named/yhyblog.cn.zone
chmod o= /var/named/yhyblog.cn.zone

4:检查配置文件和区域解析库文件的语法错误
named-checkconf /etc/named.conf
named-checkconf /etc/named.rfc1912.zones
named-checkzoen yhyblog.cn /var/named/yhyblog.cn.zone

5:重启named服务让服务器重载配置文件和区域数据文件
systemctl reload named.service 或 rndc reload

6:使用dig命令测试当前配置的解析区域
dig -t A www.yhyblog.cn @192.168.23.10

7: 在其他的主机上,将DNS设置为:192.168.23.10,再使用dig命令检查
  • 配置解析一个反向解析区域 
    • (1)定义区域 
      • 在主配置文件中或在主配置文件的辅助配置文件中实现 
        • zone “ZONE_NAME” IN {
        • type { master | slave | hint | forward };
        • file “ZONE_NAME.zone”;
        • };
      • 注意:
      • 1. 区域名字就是注册的域名
      • 2. 方向区域的名字是这样的 
        • 反写的网段地址.in-addr.arpa 
          • 例如:10.168.192.in-addr.arpa
    • 定义区域解析库文件(主要记录为PTR) 
      • 在/var/named目录下建立区域数据文件 
        • 区域数据文件的文件名为:/var/named/192.168.23.3.zone
        • 文件内容为:
$TTL 3600
$ORIGIN 23.168.192.in-addr.arpa.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017082101
1H
10M
3D
12H )
IN NS ns1.yhyblog.cn.
10 IN PTR ns1.yhyblog.cn.
10 IN PTR mx1.yhyblog.cn.
10 IN PTR mx2.yhyblog.cn.
3 IN PTR www.yhyblog.cn.
7 IN PTR bbs.yhyblog.cn.
8 IN PTR bbs.yhyblog.cn.
  • 并且修改yhyblog.cn.zone的权限和属组 
    • chown .named /var/named/192.168.23.zone
    • chmod o= /var/named/192.168.23.zone
  • 检查配置文件和区域解析库文件的语法错误 
    • named-checkconf /etc/named.conf
    • named-checkconf /etc/named.rfc1912.zones
    • named-checkzone 10.168.192.in-addr.arpa /var/named/192.168.23.zone
  • (3)让服务器重载配置文件和区域数据文件

    • rndc reload 或 systemctl reload named.service
  • 总结如何配置一个反向解析区域的详细步骤(必须掌握)

1:编辑/etc/named.rfc1912.zones,添加
zone "23.168.192.in-addr.arpa" IN {
type master;
file "192.168.23.zone";
};

2: 在/var/named/下,创建一个192.168.23.zone文件
$TTL 3600
$ORIGIN 23.168.192.in-addr.arpa.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017082101
1H
10M
3D
12H )
IN NS ns1.yhyblog.cn.
10 IN PTR ns1.yhyblog.cn.
10 IN PTR mx1.yhyblog.cn.
10 IN PTR mx2.yhyblog.cn.
3 IN PTR www.yhyblog.cn.
7 IN PTR bbs.yhyblog.cn.
8 IN PTR bbs.yhyblog.cn.

3:修改yhyblog.cn.zone的权限和属组
chown .named /var/named/192.168.23.zone
chmod o= /var/named/192.168.23.zone

4:检查配置文件和区域解析库文件的语法错误
named-checkconf /etc/named.conf
named-checkconf /etc/named.rfc1912.zones
named-checkzone 23.168.192.in-addr.arpa /var/named/192.168.23.zone

5:重启named服务让服务器重载配置文件和区域数据文件
systemctl reload named.service 或 rndc reload

6:使用dig命令测试当前配置的反向解析区域
dig -x 192.168.23.10

7: 在其他的主机上,将DNS设置为:192.168.23.10,再使用dig命令检查

(五)主从DNS服务器实战

前言:从服务器只是在区域级别进行的。也就是说,一台从服务器只是主服务器的一个区域的副本,不是所有区域的副本。如果要配置成主服务器上所有的区域的副本,那么需要配置所有的从服务器的区域。
因此,了解了主从复制是区域级别的主从复制之后,我们就可以部署两台服务器。第一台服务器有一个主区域和一个从区域,第二天服务器有一个第一台服务器的从区域,和一个主区域
主从服务器还可以继续级联,也就是说从从服务器可以是其他服务器的主服务器,但也是区域级别的复制
这里主服务器的IP地址为:192.168.23.10
这里从服务器的IP地址为:192.168.23.11

  • DNS服务器解析方案

    • (1)如果其他linux客户机在/etc/resolv.conf 文件中设置了指向我的DNS服务器的解析,我的DNS服务器是否给予解析? 
      • 答:不解析,因为这种递归解析会消耗我的DNS服务器的资源
    • (2)如果其他linux客户机通过自己的DNS服务器,从根服务器开始解析,一直解析到我的DNS服务器,并且请求的域就是我的DNS服务器负责的域,是否给予解析 
      • 答:给予解析。如果不解析,你对外提供的产品服务别人如何访问
  • 主从服务器是区域级别的概念

    • 如何配置一个从区域 
      • 在Slave 服务器上(192.168.23.11) 
        • (1)定义区域 
          • 定义一个从区域
          • zone "ZONE_NAME" IN { 
            type slave ; 
            file "slaves/ZONE_NAME.zone"; 
            masters { MASTER_IP } 
            };
        • 例如:在/etc/named.rfc1912.zones文件中增加: 
          • zone "yhyblog.cn" IN { 
            type slave; 
            masters { 192.168.23.3; }; 
            file "slaves/yhyblog.cn.zone"; 
            }; 
            zone "10.168.192.in-addr.arpa" IN { 
            type slave; 
            file "slaves/192.168.23.zone"; 
            masters { 192.168.23.3; }; 
            };
          • 注意:这里为什么要将从服务器的域写在slaves目录下?这是由于named这个进程是以named的身份运行的,但是/etc/named/目录的属组是named,没有写权限,那么主服务器将不能够以named的身份在/etc/named/目录下写入数据。那么可以在/etc/named/slaves目录下写,/etc/named/slaves目录的权限为:drwxrwx--- 2 named named 6 1月 17 20:00 slaves,可以写数据。那么是否可以将/etc/named/目录改为named用户组成员可以写呢?不行,如果这样做的话,那么如果named进程被劫持,将会有权利清空里面的所有的数据,这样就是为什么会有一个/etc/named/slaves目录专门为从DNS服务器写域解析库的原因。
          • 配置文件语法检查:named-checkconf
        • (2)重载配置 
          • rndc reload 或 systemctl reload named.service
      • 在Master服务器上(192.168.23.10) 
        • (1)确保区域数据文件中应该为每一个从DNS服务器配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A记录后面的地址为真正的从服务器的IP地址
        • 例如:在/var/named/yhyblog.cn.zone文件里修改:
$TTL 3600
$ORIGIN yhyblog.cn.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017010802
1H
10M
3D
1D )

IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 192.168.23.3
ns2 IN A 192.168.23.4
mx1 IN A 192.168.23.4
mx2 IN A 192.168.23.5
www IN A 192.168.23.3
web IN CNAME www
bbs IN A 192.168.23.7
bbs IN A 192.168.23.8
pop3 IN A 192.168.23.9
  • 例如:在/var/named/yhyblog.cn.zone文件里修改
$TTL 3600
$ORIGIN 10.168.192.in-addr.arpa.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017010803
1H
10M
3D
12H )
IN NS ns1.yhyblog.cn.
IN NS ns2.yhyblog.cn.
3 IN PTR ns1.yhyblog.cn.
3 IN PTR ns2.yhyblog.cn.
4 IN PTR mx1.yhyblog.cn.
5 IN PTR mx2.yhyblog.cn.
3 IN PTR www.yhyblog.cn.
7 IN PTR bbs.yhyblog.cn.
8 IN PTR bbs.yhyblog.cn.
9 IN PTR pop3.yhyblog.cn.
  • 注意:如果要测试是否主从同步使用dig命令(在从服务器上) 
    • 例如:dig -t axfr yhyblog.cn @192.168.23.10
    • 例如:dig -t axfr 23.168.192.in-addr.arpa @192.168.23.10
    • 注意:时间要同步,主从服务器都使用ntpdate命令同步,写在contab -e中

(六)子域授权

前言:如果我们现在在公司的内网搭建一个内部的DNS服务,那么现在对于yhyblog.cn来说,公司内部有很多部门。例如ops.yhyblog.cn,java.yhyblog.cn, python.yhyblog.cn。且每一个部门有很多的服务器需要得到解析,例如:www.ops.yhyblog.cn需要被公司内部的DNS服务器解析。那么如何让公司内网的DNS主机只解析二级域,不会解析三级域,那么如何让其他的主机解析三级域呢?

  • 子域授权

    • 正向解析区域授权子域的方法 
      • ops.yhyblog.cn. IN NS ns1.ops.yhyblog.cn.
      • ops.yhyblog.cn. IN NS ns2.ops.yhyblog.cn.
      • ns1.ops.yhyblog.cn. IN A IP
      • ns2.ops.yhyblog.cn. IN A IP 
        • 例如:在主DNS服务器/var/named/yhyblog.cn.zone 中添加:
        • ops IN NS ns1.ops 
          ns1.ops IN A 192.168.23.12
        • 例如:子域服务器中,在/etc/named.rfc1912.zones中添加: 
          zone "ops.yhyblog.cn" IN { 
          type master; 
          file "ops.yhyblog.cn.zone"; 
          };
        • 例如:子域服务器中,在/var/named//var/named/ops.yhyblog.cn.zone中添加
        • $TTL 3600 
          $ORIGIN ops.yhyblog.cn. 
          @ IN SOA ns1.ops.yhyblog.cn. dnsadmin.ops.yhyblog.cn. ( 
          2017010802 
          1H 
          10M 
          3D 
          1D ) 
          IN NS ns1 
          ns1 IN A 192.168.23.12 
          www IN A 192.168.23.10 
    • 定义转发(仅仅转发对某个特定区域的解析请求) 
      • 注意:被转发的服务器必须允许为当前服务器做递归查询,否则转发无效 
        • 就是在被转发的主DNS服务器中添加
        • acl mynet { 
          192.168.23.0/24; 
          127.0.0.0/8; 
          };
        • allow-recursion { mynet; }; 允许这个网段的服务器做递归查询
      • (1)区域转发:仅转发对某特定区域的解析请求 
        • zone "ZONE_NAME" IN{ 
          type forward; 
          forward {first|only}; 
          forwarders { SERVER_IP; }; 
          注意:first:为首先转发,转发器不响应时,自行去迭代查询 
          only: 只转发 
          }
        • 例如:在主DNS服务器/var/named/yhyblog.cn.zone 中添加:
        • ops IN NS ns1.ops 
          ns1.ops IN A 192.168.23.5
        • 例如:在主DNS服务器/etc/named.rfc1912.zones中添加:
        • zone "yhyblog.cn" IN { 
          type forward; 
          forward only; 
          forwarders { 192.168.23.3; 192.168.23.4; }; 
          };
      • (2)全局转发:凡是本地没有通过zone定义的区域查询请求,通通转给某转发器(DNS服务器) 
        • options { 
          forward {only|first}; 
          forwarders {SERVER_IP}; 
          }
        • 例如:在子域服务器中的/etc/named.conf中
        • forward only; 
          forwarders { 192.168.23.3; };
    • 在bind中与安全相关的配置(了解) 
      • acl:访问控制列表,把一个或多个地址归并为一个命名的集合,随后通过此名称即可对此集合命令的所有主机实现统一调用
      • acl acl_name { 
        ip; 
        net/mask 
        }
      • 例如: 
        • acl mynet { 
          192.168.23.0/24; 
          127.0.0.0/8; 
          };
      • bind有四个内置的acl 
        • none:没有一个主机
        • any:任意主机
        • local:本机
        • localnet:本机所在的IP所属的网络
      • 访问控制命令 
        • allow-query {}:允许查询的主机,白名单
        • allow-transfer {}:允许向哪些主机做区域传送,默认为所有主机,应该配置为仅允许从服务器
        • allow-recursion {}:允许哪个主机向当前的DNS服务器发起递归请求,不允许递归的服务器不会转发请求,因此,dns服务器只允许指定的服务器进行递归查询
        • allow-update {}:DDNS , 允许动态更新区域数据库文件中的内容
  • 配置主从服务器步骤(必须掌握)


1:yum 安装bind

2:编辑主配置文件/etc/named.conf

3:修改全局配置段中
listen-on port 53 { 192.168.23.11; };
//allow-query { localhost; };
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;

4:检查配置文件是否修改正确
named-checkconf /etc/named.conf

5:重启named程序
systemctl start named.service

6:开启另外一台主机,使用nmtui命令,设置其DNS为192.168.23.11,且重启网卡

7:再ping下百度,看看是否可以正常解析

8:编辑/etc/named.rfc1912.zones文件
zone "yhyblog.cn" IN {
type slave;
file "slaves/yhyblog.cn";
masters { 192.168.23.10; };
};

9:检查下从服务器的配置文件是否错误
named-checkconf /etc/named.rfc1912.zones

10:再回到主服务器,编辑/var/named/yhyblog.cn.zone文件(在主从复制中,每次修改主服务器配置文件都需要将序列号加1)
$TTL 3600
; 这里会自动补全yhyblog.cn
$ORIGIN yhyblog.cn.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017082102
1H
10M
3D
1D )

IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 192.168.23.10
ns2 IN A 192.168.23.11 ; 指定这个ns记录的IP是从服务器的IP地址
mx1 IN A 192.168.23.10
mx2 IN A 192.168.23.10
www IN A 192.168.23.3
web IN CNAME www
bbs IN A 192.168.23.7
bbs IN A 192.168.23.8

11:检查下主服务器的配置文件是否错误
named-checkzone yhyblog.cn yhyblog.cn.zone

12:重启主服务器
systemctl reload named.service

13: 重启从服务器
systemctl reload named.service

14:查看是否开始同步,是否同步成功
systemctl status named.service

15:在从服务器中自动生成了一个/var/named/slaves/yhyblog.cn文件

16:且在另外一台服务器上,dig测试一下,是否可以解析

17: 如果现在给主服务器添加一条pop3的A记录,且修改序列号
$TTL 3600
; 这里会自动补全yhyblog.cn
$ORIGIN yhyblog.cn.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017082102
1H
10M
3D
1D )

IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 192.168.23.10
ns2 IN A 192.168.23.11
mx1 IN A 192.168.23.10
mx2 IN A 192.168.23.10
www IN A 192.168.23.3
web IN CNAME www
bbs IN A 192.168.23.7
bbs IN A 192.168.23.8
pop3 IN A 192.168.23.9

18:重启主服务器
systemctl reload named.service

此时已经实现了正向区域的主从同步,那么还需要实现反向区域的主从同步

19:在从服务器再次编辑/etc/named.rfc1912.zones文件,添加一个反向区域的从设置
zone "23.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.23.zone";
masters { 192.168.23.10; };
};

20: 编辑主服务器的反向解析区域文件,添加一条NS记录,且A记录对于的地址指向192.168.23.11
$TTL 3600
$ORIGIN 23.168.192.in-addr.arpa.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017082101
1H
10M
3D
12H )
IN NS ns1.yhyblog.cn.
IN NS ns2.yhyblog.cn.
10 IN PTR ns1.yhyblog.cn.
11 IN PTR ns2.yhyblog.cn.
10 IN PTR mx1.yhyblog.cn.
10 IN PTR mx2.yhyblog.cn.
3 IN PTR www.yhyblog.cn.
7 IN PTR bbs.yhyblog.cn.
8 IN PTR bbs.yhyblog.cn.

21: 创建下反向解析是否配置正确
named-checkzone 23.168.192.in-addr.arpa 192.168.23.zone

22: 主服务器重新reload
systemctl reload named.service

23: 从服务器重新reload
systemctl reload named.service

24:为了测试反向解析是否配置成功,将主服务器的反向解析添加一条pop3的PTR记录,且修改序列号
$TTL 3600
$ORIGIN 23.168.192.in-addr.arpa.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017082102
1H
10M
3D
12H )
IN NS ns1.yhyblog.cn.
IN NS ns2.yhyblog.cn.
10 IN PTR ns1.yhyblog.cn.
11 IN PTR ns2.yhyblog.cn.
10 IN PTR mx1.yhyblog.cn.
10 IN PTR mx2.yhyblog.cn.
3 IN PTR www.yhyblog.cn.
7 IN PTR bbs.yhyblog.cn.
8 IN PTR bbs.yhyblog.cn.
9 IN PTR pop3.yhyblog.cn.

24:主服务器再次reload一下
systemctl reload named.service

25:在192.168.23.12主机上,设置DNS为从服务器的地址,使用dig命令进行测试
dig -x 192.168.23.9
dig -t A pop3.yhyblog.cn
  • 配置子域授权(必须掌握)
  • 主机IP划分:192.168.23.10(主),192.168.23.11(从),192.168.23.12(子域)
1:在主服务器上,编辑/var/named/yhyblog.cn,添加一条子域的NS记录, 和子域的A记录,且修改序列号
$ORIGIN yhyblog.cn.
@ IN SOA ns1.yhyblog.cn. dnsadmin.yhyblog.cn. (
2017082103
1H
10M
3D
1D )

IN NS ns1
IN NS ns2
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 192.168.23.10
ns2 IN A 192.168.23.11
mx1 IN A 192.168.23.10
mx2 IN A 192.168.23.10
www IN A 192.168.23.3
web IN CNAME www
bbs IN A 192.168.23.7
bbs IN A 192.168.23.8
pop3 IN A 192.168.23.9


ops IN NS ns1.ops
ns1.ops IN A 192.168.23.12


2:主服务器重新reload
systemctl reload named.service

3:那么现在在子域服务器上配置子域解析库
yum install -y bind

4: 修改配置文件
listen-on port 53 { 192.168.23.12; };
//allow-query { localhost; };
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;

5:启动服务
systemctl start named.service

6:编辑/etc/named.rfc1912.zones ,添加子域的正向解析区域
zone "ops.yhyblog.cn" IN {
type master;
file "ops.yhyblog.cn.zone";
};

7:编辑/var/named/ops.yhyblog.cn.zone文件,添加
$TTL 3600
$ORIGIN ops.yhyblog.cn.
@ IN SOA ns1.ops.yhyblog.cn. dnsadmin.ops.yhyblog.cn. (
2017082101
1H
10M
3D
1D )

IN NS ns1
ns1 IN A 192.168.23.12
www IN A 192.168.23.100

8:修改权限
chmod o= /var/named/ops.yhyblog.cn.zone
chown .named /var/named/ops.yhyblog.cn.zone

9:做语法检查
named-checkzone /var/named/ops.yhyblog.cn.zone
named-checkzone ops.yhyblog.cn /var/named/ops.yhyblog.cn.zone

10:重启reload
systemctl reload named.service

11:最后使用dig命令对www.ops.yhyblog.cn进行检查
dig -t A www.ops.yhyblog.cn @192.168.23.10
dig -t A www.ops.yhyblog.cn @192.168.23.11
  • 在子域中定义区域转发(必须掌握)
  • 将父域的解析转发,这里是将yhyblog.cn的解析转发给父域进行解析

1:在192.168.23.12上编辑/etc/named.rfc1912.zones,添加
zone "yhyblog.cn" IN {
type forward;
forward only;
forwarders { 192.168.23.10; 192.168.23.11; };
};

2:检查下配置文件
named-checkconf /etc/named.rfc1912.zones

3:重新reload一下
systemctl reload named.service

4:使用dig解析一下父域负责解析的地址
dig -t A bbs.yhyblog.cn @192.168.23.12

  • 在子域中定义全局转发(必须掌握)
  • 任何解析都转发给解析服务器进行解析
1:在192.168.23.12子域服务器中编辑/etc/named.conf ,在optios中添加
forward only;
forwarders { 192.168.23.10; };

2:重启reload
systemctl reload named.service

3:使用全局转发
dig -t A www.baidu.com @192.168.23.12
  • 传送的安全控制机制(必须掌握)
  • 案例:父域的正向解析只能传送给从服务器
1:编辑192.168.23.10的/etc/named.rfc1912.zones文件,在yhyblog.cn的正向解析中添加
zone "yhyblog.cn" IN {
type master;
file "yhyblog.cn.zone";
allow-transfer { slaves; }; // 指定传送为从服务器
};

2:在192.168.23.10的/etc/named.conf文件定义,slaves主机IP,写在options之上
acl slaves {

192.168.23.11;

};
options{
...
...
}

3:在子域服务器192.168.23.12上,使用dig命令测试传送
dig -t axfr yhyblog.cn @192.168.23.10
传送失败

3:在从服务器192.168.23.11上,使用dig命令测试传送
传送成功
  • 案例:指定允许递归查询的主机,以主DNS服务器为例(只有允许递归查询的主机才能转发)
1:编辑192.168.23.10中的/etc/named.conf文件,在options{}之上添加
acl recursive {
192.168.23.0/24;
127.0.0.0/8;
};

2:在options中修改
将recursion yes改为allow-recursion { recursive; };

3:重启reload
systemctl reload named.service
    • 星期一作业: 
      • 正向解析区域
      • 反向解析区域
      • 主从复制
      • 定义子域解析
      • 基本的安全控制81
posted @ 2017-10-20 09:14  昌北F4  阅读(307)  评论(0编辑  收藏  举报