概述:
本篇为DNS服务器内容的第二部分主要介绍了从DNS服务器的配置,子域授权,转发服务器等相关内容
========================================================================
主从DNS服务器
★注意:从服务器是区域级别的概念
1)配置一个从区域步骤:
On Slave(在从服务器上)
1)定义区域
定义一个从区域:
·zone "ZONE_NAME" IN {
type slave;
file "slave/ZONE_NAME.zone"; 放在slave目录下
masters {MASTER_IP;};
};
·配置文件语法检查:named-checkconf
2)重载配置
rndc reload
systemctl reload named.service
示例:
vim /etc/named.rfc1912.zones # 编辑从服务器的配置文件,添加区域 zone "magedu.com" IN { type slave; file "slave/magedu.com.zone"; # 放在slave目录下 masters { 192.168.16.104;}; # 一定要指向主服务器的IP }; # 注意:这里不需要配置从服务器的解析数据库文件,接下来只需要在主服务器上添加从服务器的NS记录和对应的A记录即可On Master(在主服务器上)
1)确保区域数据文件中为每个从服务器配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址。
2)解析库文件语法检查
named-checkzone ZONE_NAM ZONE_FILE
3)重载配置
示例:
vim /var/named/magedu.com.zone # 编辑主服务器的数据库文件 ns2 IN A 192.168.16.105 # 添加从DNS服务器对应的IP地址 # 注意:修改完数据库文件之后,序列号一定要加1,这样从服务器才能检查到4)可以手动进项测试
# dig -t axfr magedu.com @192.168.16.104(主服务器地址,表示主服务器到从服务器的全量传送)
注意:
- 从服务器应该为一台独立的名称服务器(安装bind程序,编辑配置文件为缓存名称服务器,然后检查语法,启动服务器)
- 主服务器的区域解析库文件中必须有一条NS记录指向从服务器
- 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
- 主服务器得允许从服务器作区域传送
- 主从服务器时间应该同步,可通过ntp进行;
- bind程序的版本应该保持一致;否则,应该从高,主低。
- 主名称服务器数据库修改完之后一定要使相应的序列号加1,这样从服务器才可以检测到并及时更新,并且重载
时间同步;
任何在分布式环境中,让多台服务器基于某一种特定应用同时协调的内容、进程或服务,都应该做时间同步。
ntpdate命令,时间服务器如下:
time.nist.gov
time.nuri.net
0.asia.pool.ntp.org
1.asia.pool.ntp.org
2.asia.pool.ntp.org
3.asia.pool.ntp.org[[email protected] ~]# ntpdate time.nuri.net 6 Oct 17:04:01 ntpdate[2651]: adjust time server 211.115.194.21 offset 0.002132 sec [[email protected] ~]# ntpdate 1.asia.pool.ntp.org 6 Oct 17:10:54 ntpdate[1479]: adjust time server 202.65.114.202 offset -0.167026 sec
子域授权
注意:
1)我们注册了二级域名之后,域名服务商会提供给我们DNS服务器(群租),我们只需在其二级域下添加相应的主机记录(如web服务器的别名www,对应的ip地址)即可完成解析,但如果公司的部门很庞大,为了方便管理,需要单独对一个部门添加一个域名,这时,就需要在其二级域下添加一个三级域(如:ops.magedu.com.),而添加的三级域必须要经过上一级授权才可以。
2)ops.magedu.com.是一个三级域,www.ops.magedu.com.是三级域中的web服务器的别名;而 magedu.com 是一个二级域,www.magedu.com是一个二级域中web服务器的别名;
注意一定不要搞混淆了,虽然别名相同但域的级别不同。
3)每一个域名都必须要有与之对应的名称服务器才可以解析。
1)子域:
- 子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权
- 类似根域授权tld:
.com. IN NS ns1.com.
.com. IN NS ns2.com.
ns1.com. IN A 2.2.2.1
ns2.com. IN A 2.2.2.2
- magedu.com. 在.com的名称服务器上,解析库中添加资源记录:
magedu.com. IN NS ns1.magedu.com.
magedu.com. IN NS ns2.magedu.com.
magedu.com. IN NS ns3.magedu.com.
ns1.magedu.com. IN A 3.3.3.1
ns2.magedu.com. IN A 3.3.3.2
ns3.magedu.com. IN A 3.3.3.3
- glue record:粘合记录,父域授权子域的记录
2)互联网域名:
- 域名注册:
代理商:万网, 新网;godaddy
- 注册完成以后,想自己用专用服务来解析
管理后台:把NS记录指向的服务器名称,和A记录指向的服务器地址
阿里云DNS
这个域名是在阿里云注册的.com域名,这个管理界面就是向.com域名服务器授权来查询的。这是在wen界面进行的子域授权管理,及资源记录管理,那在DNS的配置文件中也很容易去配置实现子域授权,如下:
3)正向解析区域授权子域的方法:
★原理:
在本域名服务器上的正向解析库文件当中定义子域对应的DNS服务器的主机名和A记录即可。
★方法:
ops.magedu.com. IN NS ns1.ops.magedu.com. (三级域的DNS服务器名)
ops.magedu.com. IN NS ns2.ops.magedu.com.
ns1.ops.magedu.com. IN A IP.AD.DR.ES (服务器对应的ip地址)
ns2.ops.magedu.com. IN A IP.AD.DR.ES
具体步骤如下:
1)首先要在父域(二级域)的主DNS服务器上授权
# 编辑父域的解析数据库文件 vim /var/named/magedu.com.zone #添加授权子域的NS和A记录 ops.magedu.com. IN NS ns1.ops.magedu.com. ns1.ops. IN A 192.168.1.108注意:
每次修改解析数据库文件之后都要使序列号加1,这样从服务器才能够检测到序列号不一致,并及时更新从DNS服务器
修改完之后保存退出并重载(# rndc reload)
2)接下来配置子域服务器,其配置过程和之前的任何一个DNS服务器是一样的(安装bind程序,配置配置文件,定义手动添加区域解析库文件)如下:
- 首先安装bind程序;
# yum install bind -y
- 编辑配置文件/etc/named.conf,以缓存名称服务器的方式启动起来;
①全局配置段: options { any; };
②关闭dnssec
③关闭仅允许本地查询 //allow-query { localhost; };
④语法检查:named-checkconf [/etc/named.conf]
⑤启动服务,并查看状态 :systemctl start|status named
⑥检查53号端口是否启动:netstat -tunlp
- 配置其成为ops子域的主DNS域名服务器
①编辑 /etc/named.rfc1912.zones ,新增加一个区域
# vim /etc/named.rfc1912.zones ,在最后添加自己定义的区域 zone "ops.magedu.com" IN { type master; # 指定zone的类型 file "ops.magedu.com.zone"; # 该zone的名称 };②建立授权子域的区域解析库文件
# vim /var/named/ops.magedu.com.zone 建立定义区域的数据库文件 1 $TTL 3600 2 $ORIGIN ops.magedu.com. # 3 @ IN SOA ns1.ops.magedu.com. dnsadim.ops.magedu.com.( 4 2017100501 5 1H 6 10M 7 3D 8 1D ) 9 IN NS ns1 10 ns1 IN A 192.168.16.108 11 www IN A 192.168.16.108
- 权限及属主修改
# chgrup named /var/named/ops.magedu.com.zone
# chmod o= /var/named/ops.magedu.com.zone
- 主配置文件语法检查,解析库文件语法检查
# named-checkconf
# named-checkzone ops.magedu.com /var/named/ops.magedu.com.zone
- 重新加载区域
# rndc status|reload;
- 测试能否解析
转发服务器
★注意:被转发的服务器必须要能够为请求者做递归,否则转发请求不予进行;
★区域转发:仅转发对特定区域的解析请求,比全局转发优先级高;
- 格式:
zone "ZONE_NAME" IN {
type forward;
forward {first|only}; 转发方式
forwarders { SERVER_IP;}; 定义转发给的服务器ip
};
first:首先转发;转发器不响应时,自行去迭代查询;
only:只转发
- 注意:
如果不定义区域转发的话,子域要查找上一级就会先去找根再一步步查找,如果定义了区域转发(被转发的服务器为上一级的),子域就可以直接查找上一级而不通过查找根(比喻:家丑不可外扬)。
★全局转发: 针对凡本地没有通过zone定义的区域查询请求,全转发给指定的可以访问互联网的服务器;
Options {
.....
forward first|only;
fowarders{ SERVER_IP;};
.....
};
先去找 zone中定义的,如果没有就全局转发(比如:子域首先定义了区域转发,这样仅能查询自己的上一级,但之外的比如www.baidu.com是查询不了的;但是自己的父域是可以访问互联网的,这样就可以定义所有自己访问不了的统统转发给父域)
示例:
以子域授权为例,定义区域转发,子域查找上一级
vim /etc/named.rfc1912.zones # 编辑配置文件,新增加一个区域 zone "magedu.com" IN { type forward; forward only; # 只是内部使用,不需要迭代 forwarders { 192.168.16.108; }; # 定义父域DNS服务器的ip,如果有从服务器也写上 };
定义全局转发:
vim /etc/named.conf # 编辑named.conf文件,在options全局配置段中添加 options { listen-on port 53 { any; }; 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"; forward only forwarders { 192.168.1.108; }; # 表示只要是自己不负责的统统转发给192.168.1.108 //allow-query { localhost; };
bind中安全的相关配置
1)bind中的acl访问控制列表
★acl:
把一个或多个地址归并为一个集合,随后通过此名称即可对此集全内的所有主机实现统一调用;
格式:
acl acl_name{
ip;
net/prelen;
……
};
示例:
acl mynet{
172.16.0.0/16;
127.0.0.0/8;
};
★bind有四个内置的acl:
- none: 没有一个主机
- any: 任意主机
- localhost: 本机
- localnet: 本机的IP同掩码运算后得到的网络地址
★注意:只能先定义,后使用;因此一般定义在配置文件中,处于options的前面
2)控制访问指令
★访问控制的指令:
- allow-query {}:允许查询的主机;白名单;默认是所有主机,如果有的话只有定义在里面的才可以查询
- allow-transfer {}:允许向那些主机做区域传送;默认为向所有主机,应该配置为仅允许从服务器;
- allow-recursion {}: 允许那些主机向当前DNS服务器发起递归查询请求;
- allow-update {}: DDNS,允许动态更新区域数据库文件中的内容
bind view
- view:视图,一个bind服务器可定义多个view,每个view中可定义一个或多个zone,
每个view用来匹配一组客户端;
- 多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
- 格式:
view VIEW_NAME {
zone
zone
zone
};
示例:
view internal { match-client { 172.16.0.0/8; }; zone "magedu.com" IN { type master; file "magedu.com/internal"; }; }; view external { match-client { any; }; zone "magedu.com" IN { type master; file "magedu.com/external"; }; };
- 注意:
(1) 一旦启用了view,所有的zone都只能定义在view中
(2) 仅在允许递归请求的客户端所在view中定义根区域
(3) 客户端请求到达时,是自上而下检查每个view所服务的客户端列表
- CDN: Content Delivery Network
- 智能DNS:
dnspod
dns.la
后续还有一些内容:编译安装bind,压力测试,DNS排错这里先不做整理,后续用刀再做整理。