BIND的安装配置
bind是干啥的?
大家知道dns是FQDN解析成ip地址的协议,而bind这个软件就是dns协议的功能的实现。而named是bind程序的运行的进程名
我们来看看bind这个程序有那些包组成吧,且都给我们提供哪些功能。
程序包:
bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
bind-utils:bind客户端程序集,例如dig, host, nslookup等;
bind:提供的dns server程序、以及几个常用的测试程序;
bind-chroot:选装,让named运行于jail模式下;
怎样利用bind搭建一个dns服务器呢?
前期安装软件后的组成部分功能介绍:
bind程序:
主配置文件:/etc/named.conf
注:options定义了bind的特性。如:是否只允许本地客户端查询
/etc/named.iscdlv.key
/etc/named.rfc1912.zones 注:定义区域的的地方
/etc/named.root.key
解析库文件:
/var/named/目录下;
一般名字为:ZONE_NAME.zone
注意:(1) 一台DNS服务器可同时为多个区域提供解析;
(2) 必须要有根区域解析库文件: named.ca;
(3) 还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库;
正向:named.localhost
反向:named.loopback
rndc:remote name domain contoller
bind程序安装完成之后,默认即可做缓存名称服务器使用;如果没有专门负责解析的区域,直接即可启动服务;
CentOS 6: service named start
CentOS 7: systemctl start named.service
主配置文件详细剖析
主配置文件格式:
全局配置段:
options { ... }
日志配置段:
logging { ... }
区域配置段:
zone { ... }
那些由本机负责解析的区域,或转发的区域;
注意:每个配置语句必须以分号结尾;
缓存名称服务器的配置:
listen-on port 53;
listen-on port 53 { 172.16.100.67; }; 注:监听能与外部主机通信的地址;
学习时,建议关闭dnssec 注:这个是安全的一个选项
dnssec-enable no;
dnssec-validation no;
dnssec-lookaside no;
//allow-query { localhost; }; 注:关闭仅允许本地查询:
测试工具
dig, host, nslookup等
测试工具--dig命令:
dig [-t RR_TYPE] name [@SERVER] [query options]
dig做什么的:用于测试dns系统,因此其不会查询hosts文件;
查询选项:
+[no]trace:跟踪解析过程;
+[no]recurse:进行递归解析;
dig -x IP 注意:反向解析测试
dig -t axfr DOMAIN [@server] 模拟完全区域传送:
测试工具--host命令
host [-t RR_TYPE] name SERVER_IP
测试工具--nslookup命令:
nslookup [-options] [name] [server]
交互式模式:
nslookup>
server IP:以指定的IP为DNS服务器进行查询;
set q=RR_TYPE:要查询的资源记录类型;
name:要查询的名称;
rndc命令:named服务控制命令
rndc status 查看bind的运行状态
rndc flush
rndc reload 重新加载配置文件
如何配置解析一个正向区域?
以magedu.com域为例:
(1) 定义区域 注:在主配置文件中或主配置文件辅助配置文件中实现;
例如: /etc/named.rfc1912.zones这个辅助文件里定义zone
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
注意:区域名字即为域名;
(2) 建立区域数据文件(主要记录为A或AAAA记录)
创建位置:在/var/named目录下建立区域数据文件;
文件为:/var/named/magedu.com.zone
$TTL 3600
$ORIGIN magedu.com.
@ IN SOA ns1.magedu.com. dnsadmin.magedu.com. (
2017010801
1H
10M
3D
1D )
IN NS ns1
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 172.16.100.67
mx1 IN A 172.16.100.68
mx2 IN A 172.16.100.69
www IN A 172.16.100.67
web IN CNAME www
bbs IN A 172.16.100.70
bbs IN A 172.16.100.71
权限及属组修改:
# chgrp named /var/named/magedu.com.zone
# chmod o= /var/named/magedu.com.zone
检查语法错误:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
(3) 让服务器重载配置文件和区域数据文件
# rndc reload 或# systemctl reload named.service
配置解析一个反向区域
(1) 定义区域
在主配置文件中或主配置文件辅助配置文件中实现;即/etc/named.rfc1912.zones
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
反向区域的名字:反写的网段地址.in-addr.arpa 举例:100.16.172.in-addr.arpa
(2) 定义区域解析库文件(主要记录为PTR)
示例,区域名称为100.16.172.in-addr.arpa;
$TTL 3600
$ORIGIN 100.16.172.in-addr.arpa.
@ IN SOA ns1.magedu.com. nsadmin.magedu.com. (
2017010801
1H
10M
3D
12H )
IN NS ns1.magedu.com.
67 IN PTR ns1.magedu.com.
68 IN PTR mx1.magedu.com.
69 IN PTR mx2.magedu.com.
70 IN PTR bbs.magedu.com.
71 IN PTR bbs.magedu.com.
67 IN PTR www.magedu.com.
权限及属组修改:
# chgrp named /var/named/172.16.100.zone
# chmod o= /var/named/172.16.100.zone
检查语法错误:
# named-checkzone ZONE_NAME ZONE_FILE
# named-checkconf
(3) 让服务器重载配置文件和区域数据文件
# rndc reload 或# systemctl reload named.service
怎样为一个主服务器配置一个从服务器实现冗余呢?
注意:从服务器是区域级别的概念;
首先选一台主机安装bind程序
配置一个从区域:On Slave 如下
(1) 定义区域
定义一个从区域;
zone "ZONE_NAME" IN {
type slave;
file "slaves/ZONE_NAME.zone";
masters { MASTER_IP; };
};
配置文件语法检查:named-checkconf
(2) 重载配置
rndc reload 或者 systemctl reload named.service
在主dns上需要做如下操作
(1) 确保区域数据文件中为每个从服务配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A后面的地址为真正的从服务器的IP地址;
注意:时间要同步; ntpdate命令实现时间同步;
场景描述:假如公司某部门比较庞大需要独立的dns,怎样实现配置一个子域并授权?
子域授权:
正向解析区域授权子域的方法:
ops.magedu.com. IN NS ns1.ops.magedu.com.
ops.magedu.com. IN NS ns2.ops.magedu.com.
ns1.ops.magedu.com. IN A IP.AD.DR.ESS
ns2.ops.magedu.com. IN A IP.AD.DR.ESS
场景:当某dns不能上网,它可以把请求转发给其他dns实现域名解析
定义转发:
注意:被转发的服务器必须允许为当前服务做递归;
(1) 区域转发:仅转发对某特定区域的解析请求;
zone "ZONE_NAME" IN {
type forward;
forward {first|only};
forwarders { SERVER_IP; };
};
first:首先转发;转发器不响应时,自行去迭代查询;
only:只转发;
(2) 全局转发:针对凡本地没有通过zone定义的区域查询请求,通通转给某转发器;
options {
... ...
forward {only|first};
forwarders { SERVER_IP; };
.. ...
};
bind中的安全相关的配置:
acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;
acl acl_name {
ip;
net/prelen;
};
示例:
acl mynet {
172.16.0.0/16;
127.0.0.0/8;
};
bind有四个内置的acl
none:没有一个主机;
any:任意主机;
local:本机;
localnet:本机所在的IP所属的网络;
访问控制指令:
allow-query {}; 允许查询的主机;白名单;
allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;
allow-update {}; DDNS,允许动态更新区域数据库文件中内容;
bind view:
视图:
view VIEW_NAME {
zone
zone
zone
}
view internal {
match-clients { 172.16.0.0/8; };
zone "magedu.com" IN {
type master;
file "magedu.com/internal";
};
};
view external {
match-clients { any; };
zone "magecdu.com" IN {
type master;
file magedu.com/external";
};
};
课外作业:whois命令; 注册一个域名;
博客作业:正向解析区域、反向解析区域;主/从;子域;基本安全控制;
检查配置文件语法错误:
named-checkconf [/etc/named.conf]