当用户输入错误的URL,使用泛域名解析,定向到一个友好错误页面。
URL重定向:当访问到一个不存在(错误)的页面的时候,重定向到一个固定的提示页面
DNS主从复制
dig命令深解
递归查询
dig +recurse -t A www.baidu.com @172.25.254.111
使用+trace,请求递归查询
解析分布过程查询
dig +trace -t A www.baidu.com @172.25.254.111*
使用+trace,可以看到DNS解析记录:"."-->".com"-->"baidu.com"-->"www.baidu.com"
为了让dns服务器进行递归查询,编辑配置文件,vim /etc/named.conf
options {
directory "/var/named";
// recursion no; //拒绝开启递归功能
// recursion yes; //开启递归功能,这种方式没有过滤,会帮助任何人进行递归
allow-recursion { 172.25.254.0/24; };//规定只给某一网段请求递归
};
完全区域传送
理论上不能让其他主机进行区域传送(从机可以),编辑配置文件规定权限
zone "qpy.com" IN{
type master; file "qpy.com.zone"; allow-transfer { 172.25.254.2; }; //添加只允许该IP进行区域传送};//定义完成重器named
如此定义之后,只能由172.25.254.2使用以下命令获取区域内的所有(或者部分)数据
dig -t axfr qpy.com
得到区域内的所有数据
[root@localhost named]# dig -t axfr qpy.com
; <<>> DiG 9.9.4-RedHat-9.9.4-14.el7 <<>> -t axfr qpy.com;; global options: +cmdqpy.com. 600 IN SOA www.qpy.com. root.localhost.qpy.com. 2018032701 3600 300 172800 21600qpy.com. 600 IN NS www.qpy.com.qpy.com. 600 IN MX 10 mail.qpy.com.*.qpy.com. 600 IN A 172.25.254.2ftp.qpy.com. 600 IN A 172.25.254.2ftp.qpy.com. 600 IN A 172.25.254.111mail.qpy.com. 600 IN A 172.25.254.2www.qpy.com. 600 IN A 172.25.254.111www.qpy.com. 600 IN A 172.25.254.2qpy.com. 600 IN SOA www.qpy.com. root.localhost.qpy.com. 2018032701 3600 300 172800 21600;; Query time: 0 msec;; SERVER: 172.25.254.111#53(172.25.254.111);; WHEN: Wed Mar 28 15:45:44 CST 2018;; XFR size: 10 records (messages 1, bytes 253)
增量区域传送
从服务器建立
dns服务,两个服务器可以互为主从
从服务配置DNS服务
安装bind包
yum install bind bind-libs.x86_64 bind-utils.x86_64
修改从服务器配置文件
options {
directory "/var/named";
allow-recursion { 172.25.254.0/24; }; notify yes; //启动通知功能};
logging {
channel default_debug { file "data/named.run"; severity dynamic; };};
zone "." IN {
type hint; file "named.ca";};
zone "localhost" IN{
type master; file "named.localhost";};
zone "0.25.172.in-addr.arpa" IN{
type master; file "named.loopback";};
zone "qpy.com" IN{
type slave; //表明自己是从服务器 file "slaves/qpy.com.zone"; //存放在slaves目录下 masters { 172.25.254.111; }; //指定主服务器是谁 allow-transfer { 172.25.254.2; };};
zone "254.25.172.in-addr.arpa" IN{
type slave; file "slaves/172.25.254.zone"; masters { 172.25.254.111; };};
修改主服务器区域数据文件
qpy.com. IN NS back
back IN A 172.25.254.2
//添加从服务器的NS记录和A记录,保证主服务可以找到从服务器,并且同步数据
//每当添加一个从服务器,都要在主服务器上添加NS记录
修改完配置文件后重器服务。
测试
在主服务器上尝试增加DNS记录,重新reload或者等待TTL,可以实现同步。
主服务修改区域数据文件:
hello IN A 172.25.254.6
//添加了一条记录
reload主服务器,可以查看主服务器日志:
Mar 28 16:28:26 localhost named[17094]: zone qpy.com/IN: sending notifies (serial 2018032702)Mar 28 16:28:26 localhost named[17094]: runningMar 28 16:28:26 localhost named[17094]: client 172.25.254.2#40532 (qpy.com): transfer of 'qpy.com/IN': AXFR-style IXFR startedMar 28 16:28:26 localhost named[17094]: client 172.25.254.2#40532 (qpy.com): transfer of 'qpy.com/IN': AXFR-style IXFR endedMar 28 16:28:26 localhost systemd: Reloaded Berkeley Internet Name Domain (DNS).
从服务查看同步情况
在从服务器的/var/named/salves/下,会同步主服务器的修改
cat /var/named/slaves/qpy.com.zone
$ORIGIN .$TTL 600 ; 10 minutesqpy.com IN SOA www.qpy.com. root.localhost.qpy.com. (
2018032702 ; serial 3600 ; refresh (1 hour) 300 ; retry (5 minutes) 172800 ; expire (2 days) 21600 ; minimum (6 hours) ) NS www.qpy.com. NS back.qpy.com. MX 10 mail.qpy.com.$ORIGIN qpy.com.
A 172.25.254.2back A 172.25.254.2fsx A 172.25.254.23ftp A 172.25.254.2
A 172.25.254.111
hello A 172.25.254.6 ;此处是同步前没有,同步后出现的记录mail A 172.25.254.2www A 172.25.254.111
A 172.25.254.2
查看从服务器日志:
Mar 28 04:28:27 fsx named[2872]: client 172.25.254.111#36041: received notify for zone 'qpy.com'Mar 28 04:28:27 fsx named[2872]: zone qpy.com/IN: Transfer started.Mar 28 04:28:27 fsx named[2872]: transfer of 'qpy.com/IN' from 172.25.254.111#53: connected using 172.25.254.2#40532Mar 28 04:28:27 fsx named[2872]: zone qpy.com/IN: transferred serial 2018032702Mar 28 04:28:27 fsx named[2872]: transfer of 'qpy.com/IN' from 172.25.254.111#53: Transfer completed: 1 messages, 14 records, 330 bytes, 0.001 secs (330000 bytes/sec)Mar 28 04:28:27 fsx named[2872]: zone qpy.com/IN: sending notifies (serial 2018032702)
RNDC控制DNS服务器
RNDC子命令
使用rndc -h查看rndc远程控制的子命令
status #显示bind服务器的工作状态
reload #重新加载配置文件和区域文件
reload zone_name #重新加载指定区域
reconfig #重读配置文件并加载新增的区域
querylog #关闭或开启查询日志
dumpdb #将高速缓存转储到转储文件 (named_dump.db)
freeze #暂停更新所有动态zone
freeze zone [class [view]]#暂停更新一个动态zone
flush [view] #刷新服务器的所有高速缓存
flushname name #为某一视图刷新服务器的高速缓存
stats #将服务器统计信息写入统计文件中
stop #将暂挂更新保存到主文件并停止服务器
halt #停止服务器,但不保存暂挂更新
trace #打开debug, debug有级别的概念,每执行一次提升一次级别
trace LEVEL #指定 debug 的级别, trace 0 表示关闭debug
notrace #将调试级别设置为 0
restart #重新启动服务器(尚未实现)
addzone zone [class [view]] { zone-options }
#增加一个zone
delzone zone [class [view]]#删除一个zone
tsig-delete keyname [view]#删除一个TSIG key
tsig-list#查询当前有效的TSIG列表
validation newstate [view]#开启/关闭dnsse
rndc实现远程控制
首先服务端得生成一个KEY来控制访问权限,即作为远程申请访问得凭证
rndc-confgen > /etc/rndc.conf
生成内容:
第一部分:
//Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5; secret "sZ/zHvPdRoJqvp0ixvWDOg==";
};
options {
default-key "rndc-key"; default-server 127.0.0.1; //如果发送给远程端口,此处IP是指向服务器端IP default-port 953; //控制服务器端端口
};
/End of rndc.conf
//上述是发给远程端口,用于申请远程控制得凭证
第二部分:
//Use with the following in named.conf, adjusting the allow list as needed:
//key "rndc-key" {
//algorithm hmac-md5;
//secret "sZ/zHvPdRoJqvp0ixvWDOg==";
//};
//controls {
//inet 127.0.0.1 port 953 //本机IP,即监听953端口的IP
//allow { 127.0.0.1; } keys { "rndc-key"; }; //允许监控的远程端IP
//};
//End of named.conf
//上述文件存放在服务器端,用于认证申请控制得远程端口
分别编辑,将第二部分编辑到一个文件中命名为rndc.conf.key,并发送给远程端,具体内容:
key "rndc-key" {
algorithm hmac-md5; secret "sZ/zHvPdRoJqvp0ixvWDOg==";};
options {
default-key "rndc-key"; default-server 172.25.254.111; //DNS服务器IP default-port 953; };
将第二部分编辑追加到DNS主配置文件中,/etc/named.conf,具体追加如下:
key "rndc-key" {
algorithm hmac-md5; secret "CT4tB5Uu0eqLcPzi90v+9g==";};
controls {
inet 172.25.254.111 port 953 //本机(dns服务器)IP allow { 172.25.254.2; } keys { "rndc-key"; }; //允许远端IP为172.25.254.2};
完成后需要重器服务
测试
在远端(172.25.254.2)上,执行rndc相关命令(此处用status做测试):
rndc -c rndc.conf status
注意存放rndc.conf的位置
[root@fsx ~]# rndc -c rndc.conf statusversion: 9.9.4-RedHat-9.9.4-14.el7 id:8f9657aaCPUs found: 4worker threads: 4UDP listeners per interface: 4number of zones: 102debug level: 0xfers running: 0xfers deferred: 0soa queries in progress: 0query logging is OFFrecursive clients: 0/0/1000tcp clients: 0/100server is up and running
注意问题
远端和服务器端需要时间同步
默认服务器端由配置文件/etc/rndc.key ,需要删除
rndc开启属于比较危险的操作,一般不要使用
子域授权
为了方便管理,将主服务器的DNS服务,分配给不同子服务器,从而完成分布式DNS数据库的手段。
www.qpy.com-->www.a.qpy.com和www.b.qpy.com
子域必须得到授权才有效
正向区域:
.com
qpy.com. IN NS a.qpy.com.
a.qpy.com. IN A 172.25.254.3
在主DNS服务器的区域数据/var/named/中添加待添加的子域的NS记录和A记录
vim /var/named/qpy.com.zone
//这块是追加新的记录
a IN NS ns1.a
//a.qpy.com. IN NS ns1.a.qpy.com.
ns1.a IN A 172.25.254.3
同时在子域服务器上要声明,允许父域添加
修改配置文件(追加,这里只显示追加内容):vim /etc/named.conf
options{
forward first;
forwarders { 172.25.254.111; };
};
重器服务器
测试
dig -t A www.a.qpy.com @172.25.254.2
;; QUESTION SECTION:;www.a.qpy.com. IN A
;; ANSWER SECTION:www.a.qpy.com. 600 IN A 172.25.254.2
;; AUTHORITY SECTION:a.qpy.com. 600 IN NS ns1.a.qpy.com.
;; ADDITIONAL SECTION:ns1.a.qpy.com. 600 IN A 172.25.254.111