(一)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 无连接的协议,双方在互相通信的时候,不需要建立虚链路,虚连接
- C/S模式
- 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 服务器提交请求,依次循环直到拿到查询的结果为止。
- 示意图说明
- (1)递归查询
- 递归查询和迭代查询的区别
- DNS解析
- DNS名称解析方式
- 名称—>IP:正向解析
- IP—>名称:反向解析
- 注意:二者的名称空间,非为同一个空间,非同一颗树,因此,也不是同一个解析库
- DNS服务器类型
- 负责解析至少一个域
- 主名称服务器
- 辅助名称服务器
- 不负责域解析:缓存名称服务器
- 负责解析至少一个域
一次完整的DNS查询请求所经过的流程
Client--->hosts文件--->DNS Local Cache--->服务商的DNS server (recursion) ---> DNS服务器
- 自己负责解析的域:直接查询数据库并返回答案
- 不是自己负责的解析域:server cache —> iteration(迭代)
- 解析答案
- 肯定答案
- 否定答案:不存在查询的键,因此,不存在与其查询键对应的值
- 权威答案:由直接负责DNS服务器返回的答案
- 非权威答案
- 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—>IPv4AAAA
:地址记录。FQDN—>IPv6CNAME
:canonical name 别名记录PTR
:pointer , IP—>FQDNMX
:mail exchanger 邮件交换器
- 优先级:0-99 数字越小优先级越高
- 资源记录:resource record
资源记录的定义格式
(非常重要,一定要牢记)
语法: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
- 可以通过include将其他文件包含进来,如:
- 解析库文件(非常重要)
- /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号端口用于解析
- 全局配置段
- 服务的主配置文件在: /etc/named.conf
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]
- 注意反向解析使用: dig -x ip
- +[no]trace :跟踪解析过程
- 其中 [query options]为查询选项,可以使用
- 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是在互联网上注册的域名)
};
- 一般定义在/etc/named.rfc1912.zones里面
- (2)建立区域数据文件(主要记录为A或者AAAA)
- 在/var/named目录下建立区域数据文件
- 区域数据文件的文件名为:/var/named/yhyblog.cn.zone
- 文件内容为:
- 在/var/named目录下建立区域数据文件
- (1)定义解析区域
$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
- 文件内容为:
- 在/var/named目录下建立区域数据文件
- (1)定义区域
$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服务器负责的域,是否给予解析
- 答:给予解析。如果不解析,你对外提供的产品服务别人如何访问
- (1)如果其他linux客户机在/etc/resolv.conf 文件中设置了指向我的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
- (1)定义区域
在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
- 星期一作业: