dns的另外一种实现方式:dnsmasq较为简单请自行理解
1
2
3
4
5
|
一.主从架构
二.子域授权
三.转发区域
四.bind中的安全相关配置
五.bind view视图
|
一.主从架构
从s拥有和主s一样的解析库
注意:从服务器是区域级别的概念,从s是一个或多个区域的从s
一个区域可以为正向和反向分别配置不同的从s
AB可以互为主从:
一个是正向的主,反向的从
一个是反向的从,正向的主
AB负责一个区域
负载均衡:怎样实现都能提供解析
方法:一半配置ns为A,另一半配置为B
方法二:在父域中定义该域的两个NS //这样有人请求的时候,就会有两个NS轮流响应
配置实现:
Slave:
1.定义区域
zone “zone——name“ IN {
type slave;
file "slaves/zone_name.zone"; //只有slaves目录中named组具有写权限
masters { MASTERIP; };
};
named-checkconf
2.重载配置
rndc reload
systemctl reload rndc
Master:
1.确保区域数据文件中为每个服务配置NS记录
实现 1.:
192.168.4.109:slave 正向
192.168.4.100:master 正向
Slave: //配置成为正向的从s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
yum install bind -y
vim /etc/named.conf
listen-
on
port 53 { 192.168.4.109; };
关闭dnssec功能
vim /etc/named.rfc1912.zones
zone
"mt.com"
IN {
type slave;
file
"slaves/mt.com.zone"
;
masters { 192.168.4.100; };
};
named-checkconf
service named start
master:
vim mt.com.zone
//添加两条记录,已经启动的话,需要修改序列号
IN NS ns2
ns2 IN A 192.168.4.109
named-checkzone
"mt.com"
mt.com.zone
|
slave:
rndc reload //重载配置
systemctl status named.service //查看状态信息
dig -t A www.mt.com @192.168.4.109
cat /var/named/slaves/mt.com.zone //在CnetOS7上是二进制格式,在6上是文本格式可以直接查看
测试:在主s上添加一条记录,并修改serial
systemctl status named
sending notifies (serial 2017030102)
//第一次传送成功,后期增量传送未实现
原因:192.168.6.109的主机的ip地址是dhcp获取的,受dhcp的影响,导致默认dns不是主DNS
zone mt.com/IN: refused notify from non-master: 192.168.4.113#37131
效果:master上修改序列号+rndc reload,systemctl named status //查看结果
实验2:
192.168.4.109:slave 反向
192.168.4.100:master 反向
slave:
vim /etc/named.rfc1912.zones
zone "4.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.4.zone";
masters { 192.168.4.100; };
};
named-checkconf
master:
vim 192.168.4.zone
IN NS ns2.mt.com.
109 IN PTR ns2.mt.com.
named-checkzone 4.168.192.in-addr.arpa 192.168.4.zone
rndc reload
slave:
rndc reload
master:添加一个记录,修改serial
systemctl status named
On master:
1.确保区域数据文件为每个从服务器配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此后面的地址为真正的IP地址
手动区域传送
dig -t axfr 4.168.192.in-addr.arpa
失败总结:
1.注意:时间要同步
ntpdate命令:像同一台服务器同步时间
2.在从s上
cat /etc/named.rfc1912.zones
zone "mt.com" IN {
type slave;
file "slaves/mt.com.zone";
masters { 192.168.4.100; };
allow-notify { 192.168.4.0/24; }; //允许这个网段内的主机发送来的通知
};
开始的时候修改为:allow-notify { 192.168.4.100; }; //只修改为单个ip,是不可以的
因为:master有多个ip:192.168.4.100,192.168.4.113,192.168.4.112等
而默认使用的发送接口,很有可能不是192.168.4.100
二.子域授权
正向解析的区域授权子域的方法
1
2
3
4
|
ops.mt.com. IN NS ns1.ops.mt.com.
ops.mt.com. IN NS ns2.ops.mt.com.
ns1.ops.mt.com. IN A 192.168.4.11
ns2.ops.mt.com. IN A 192.168.4.12
|
//DNS一般会建立主从,主要是为了应付突发情况
实现:
192.168.4.110 :为父域
192.168.4.100:为子域
1.192.168.4.100
vim mt.com.zone
ops IN NS ns1.ops
ns1.ops IN A 192.168.4.110
rndc reload
2.192.168.4.110
vim named.conf
listen-on port 53 { 192.168.4.110; };
allow-query { 192.168.4.0/24; }; //允许本地查询
dnssec 关闭
sytemctl restart named
netstat -tunlp |grep named
vim named.rfc1912.zones
zone "ops.mt.com" IN {
type master;
file "ops.mt.com.zone";
};
named-checkconf
==================================================
1
2
3
4
5
6
7
8
9
10
11
12
|
vim ops.mt.com.zone
$TTL 2500
$ORIGIN ops.mt.com.
@ IN SOA ns1.ops.mt.com. admin.ops.mt.com. (
2018010101
1H
10M
1D
2H )
IN NS ns1
ns1 IN A 192.168.4.110
www IN A 192.168.4.109
|
chmod o= ops.com.zone
chgrp named ops.com.zone
rndc reload
3.测试
dig -t A www.ops.mt.com @192.168.4.109
dig -t NS ops.mt.com
三.转发区域 //不查找根的折中方案,直接告诉你,mt.com区域的NS是谁
定义转发
注意:被转发的服务器必须允许为当前服务做递归
1.区域转发;仅转发对某特定区域的解析请求
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders {SERVER_IP};
};
first:首先转发;转发器不在时,自行去迭代查询
only:只转发
2.全局转发 //本地没有定义的区域zone的查询请求,统统转给某转发器
named.conf
options {
foward only;
forwarders { 192.168.4.100; };
...
}
只要不是自己负责的区域,就转发
先查找zone,如果没有定义,就直接转发
四.bind中的安全相关配置
acl:访问控制列表;把一个或多个地址归并为一个命名的集合,随后通过此名称即可对此集合内的所有主机实现统一调用;
acl acl_name {
ip;
net/prelen;
};
示例:
acl mynet {
192.168.4.0/24;
127.0.0.0/8;
};
bind的四个内置acl
none:没有一个主机
any:任意主机
local:本机
localnet:本机所在的IP所属的网络;
访问控制指令:
allow-query {}; 允许查询的主机,白名单
allow-transfer {};允许向哪些主机做区域传送;默认向所有主机,master应该指定为从s,从s应该指定为none//因为从s不需要传送给别人
;允许我向谁传送
//以上连个可以加载zone{单个区域}或者options{全局}中都可以
allow-recursion {};允许哪些主机向当前DNS服务器发起递归请求的
recursion yes ; 允许所有主机递归
注意:只有允许递归的才允许转发,否则你转发过去,人家不给你转发,没吊用
allow-update{ none; } ;DDNS,允许动态更新区域数据库文件中的内容
建议关闭,会更改记录
notify yes //允许所有人给我发送通知
allow-notify { 192.168.4.0/24; }; //记得通知我
示例1:禁止区域传送
1.master:192.168.4.100
1
2
3
4
5
6
7
8
9
10
11
|
vim /etc/named.conf
acl mynet {
192.168.4.100;
192.168.4.111;
}
vim named.rfc1912.zone
zone
"mt.com"
IN {
type master;
allow-transfer { mynet; };
file
"mt.com.zone"
;
};
|
named-checkconf
rndc reload
2.slave:192.168.4.109
dig -t axfr mt.com @192.168.4.100
五.bind view 视图
Router:eth0:外网--eth1:内网
对内部一个服务器的解析,内网的解析为内网地址,外网的需要解析为外网的ip
//brain-split :同一个主机名对内网和外网解析成不同的ip地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
view VIEW_NAME {
zone
zone
zone
}
view
internal
IN {
match-clients { 192.168.1.0/24; };
zone
"mt.com"
IN {
type master;
file
"mt.com/internal"
;
};
};
view external IN {
match-clients { any; };
zone
"mt.com"
IN {
type master;
file
"mt.com/external"
;
};
};
|
本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1983910,如需转载请自行联系原作者