DNS and bind(2)
BIND的安装配置
BIND:Berkeley internet name domain,ISC.org
DNS:协议bind程序包bind:DNS协议的一种实现named:bind程序的运行的进程名
bind-libs:被bind和bind-utils包中的程序共同用到的库文件bind-utils:bind客户端程序集,例如 dig host nslookup等。bind:提供的DNS server 程序,以及几个常用的测试程序bind-chroot:选装,让named运行于jail末模式下
可以通过 yum info 查看安装包的详细信息
bind:
主配置文件:/etc/named.conf
或包含进来的其他配置文件:
/etc/named.iscdlv.key/etc/named.rfc1912.zones/etc/named.root.key
解析库文件:
/var/named/目录下;
一般名字为: ZONE_NAME.zone注意:(1)一台DNS服务器同时可以有多个zone(区域)提供解析(2)必须要有根区域解析库文件:name.ca;(3)还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析
正向:named.localhost反向:named.loopback
rndc: remote name domain controller
953/tcp,单默认监听于 127.0.0.1地址,因此仅允许本地使用
bind:程序安装完成之后,默认即可做缓存名称服务器的解析使用,如果没有专门负责解析的区域,直接即可启动服务。
CentOS6:/etc/init.d/named startCentOS7:systemctl start named.service
主配置文件格式:
全局配置段:
options{...}
日志配置段:
logging{...}
区域配置段:
zone{....},
那些由本机负责解析的区域,或转发的区域注意:每个配置语句的结尾必须以分号结束,花括号前后要有空格
缓存名称服务器的配置:
监听能与外部主机通信的地址
listen-on port 53 { any; };
或
listen-on port 53 { 172.16.1.14; };
学习时建议关闭:
dnssec-enable no;dnssec-validation no;dnssec-lookaside no;关闭仅允许本地查询(否则子域不能通过父域解析):
将allow-query { lovalhost; };注释掉 === 》//allow-query { lovalhost; };或者直接将allow-query { lovalhost; };删除。
检查配置文件的语法:
测试工具
dig host nslookup
digdig [-t RR-TYPE] name [@SERVER] [query option ]
用于测试DNS系统,因此其不会查询hosts文件;查询选项:+[no]trace:跟踪解析过程+[no]recure:跟踪递归解析正向解析
反向解析
dig +x [IP]
模拟完全区域传送
dig -t axfr DOMAIN [@SERVER]
host
host [-t RR_TYPE] name SERVER_IP
nslookup
命令式nslookup [-options] [name] [server]
交互式# nslookupserver IP : 以指定IP为DNS服务器进行查询set q=RR_TYPE: 要查询的资源类型name 要查询的名称
rndc命令:named服务控制命令
rndc reloadrndc statusrndc flush
配置一个正向区域:
以magedu.com域为例
(1)定义区域
在主配置文件中或主配置文件辅助配置文件中实现:如果主配置文件中,有次条语句: include "/etc/named.rfc1912.zones"; 包含文件: /etc/named.rfc1912.zones也可以通过include其他文件来实现则可以在改文件中按照下面的格式添加配置:
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};注意:区域名字即为域名添加的内容如下:
(2)建立区域数据文件(主要记录为A或AAAA记录)
在/var/named目录下建立区域数据文件 magedu.com.zone
这里的dnsadmin.magedu.com.为管理员邮箱,@要用点"."替代ns1后面不加点 ,ns1.magedu.com. 后面要加点
检查配置文件语法named-checkconf只检查某个区域的语法:named-checkzone magedu.com /var/named/magedu.com.zone
(3)更改权限
chown :named /var/named/magedu.com.zonechmod 640 /var/named/magedu.com.zone
(4)让服务器重载配置文件和区域数据文件
rndc reload
rndc status
配置一个反向区域:
以172.16.100.0网段为例
(1)定义区域
在主配置文件中或主配置文件辅助配置文件中实现:如果主配置文件中,有次条语句: include "/etc/named.rfc1912.zones"; 包含文件: /etc/named.rfc1912.zones也可以通过include其他文件来实现则可以在改文件中按照下面的格式添加配置:
zone "ZONE_NAME" IN {
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
注意:反向区域的名字格式: 反写的网段地址.in-addr.arpa.对于地址 172.16.100.12 ,应该写成: 100.16.172.in-addr.arpa.添加的内容如下:
(2)建立区域数据文件(区域名称为1 00.16.172.in-addr-arpa)
在/var/named目录下建立区域数据文件 100.16.172.zone
注意:在反向解析区域文件中不需要定义MX的记录,因为反向解析和MX没有关系IN NS ns1.magedu.com. 中一定要写全不能写成 ns1, 否则会自动补全为 ns1. 100.16.172.in-addr.arpa. 就不对了
检查配置文件语法
named-checkconf只检查某个区域的语法:named-checkzone 100.16.172.in-addr.arpa. /var/named/ 100.16.172.zone
(3)更改权限
chown :named /var/nam ed/100.16.172.zonechmod 640 /var/named/100.16.172.zone
(4)让服务器重载配置文件和区域数据文件
rndc reload
rndc status
(5)反向解析测试命令
dig -x 172.16.100.67
主从DNS服务器之从服务器:
注意:从服务器是区域级别的概念(只是在某一个区域级别上从),比如说DNS服务器A为10个区域提供正向/反向解析并且都是主的,那么从DNS服务器B只能支持其中的一个区域的从,另外9个不管。也就是说从服务器只是相对于主DNS服务器的某一区域配置的,而不是相对于整台主服务器配置的。如果要实现从服务器是整个主服务器所有区域的从,就要对主服务器上的所有区域分别进行配置才可以。DNS服务器的主从还支持级联复制。
从服务器 172.16.100.68安装 bind
yum install bind -y
监听能与外部主机通信的地址
listen-on port 53 { 127.0.0.1; 172.16.100.67 };
或
listen-on port 53 { 172.16.1.67; };
注意:172.16.100.67是主DNS服务器的地址
学习时建议关闭:
dnssec-enable no;dnssec-validation no;关闭仅允许本地查询(否则子域不能通过父域解析):dnssec-lookaside no;将allow-query { lovalhost; };注释掉 === 》//allow-query { lovalhost; };
或者直接将allow-query { lovalhost; };删除。
检查配置文件的语法:
named-checkconf /etc/named.conf
重启DNS服务
/etc/init.d/named start/etc/init.d/named status
配置一个正向区域:On slave(在从服务器上)(1)定义区域在主配置文件中或主配置文件辅助配置文件中实现:如果主配置文件中,有次条语句: include "/etc/named.rfc1912.zones"; 包含文件: /etc/named.rfc1912.zones也可以通过include其他文件来实现
定义一个正向区域:
zone "ZONE_NAME" IN {type slave;file "slaves/ZONE_NAME.zone";masters { MASTER_IP; };};
添加的内容如下:
(2)配置文件语法检查 :
named-checkconf
(3)重载配置
rndc reload或systemctl reload named.service
On master(在主服务器 172.168.100.67 上)(4) 修改在/var/named目录下的区域数据文件 magedu.com.zone
(5)增加序列号注意:确保区域数据文件中为每个从服务配置NS记录。并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A记录后面的地址为 从服务器的真实IP地址
2017070801 ; serial ===> 2017070802 ; serial
(6)在主服务器上检查语法及区域文件
检查配置文件语法
named-checkconf只检查某个区域的语法:named-checkzone magedu.com. /var/named/ magedu.com.zone
(7)主DNS服务器重载
rndc reload或systemctl reload named.service
rndc status
(8) 从服务器重载
rndc reload
或systemctl reload named.servicerndc status
(9)查看路径 /var/named/slave下面已经有了区域文件 magedu.com.zone(二进制的)
(10)解析测试
dig -t A www.magedu.com @172.16.100.68
上面配置的主从DNS,在主DNS添加一条新的记录,reload后会通知从服务器同步,从服务器会自动实现同步
配置一个反向区域:
(11)定义区域在主配置文件中或主配置文件辅助配置文件中实现:如果主配置文件中,有次条语句: include "/etc/named.rfc1912.zones"; 包含文件: /etc/named.rfc1912.zones也可以通过include其他文件来实现
定义一个反向区域:
zone "ZONE_NAME" IN {type slave;file "slaves/ZONE_NAME.zone";masters { MASTER_IP; };};
添加的内容如下:
(12)配置文件语法检查 :
named-checkconf
在主服务器上
(13)修改 在/var/named目录下建立区域数据文件 100.16.172.zone
(14)在主服务器上检查区域文件
named-checkzone 100.16.172.in-addr.arpa. /var/named/ 100.16.172. zone
(15) 增加序列号2017070801 ; serial ===> 2017070802 ; serial
(16)重载配置
rndc reload或systemctl reload named.service
从服务器上
(17)重载配置
rndc reload或systemctl reload named.service
(18)查看路径 /var/named/slave 下面已经有了区域文件 100.16.172. zone (二进制的)
(19)解析测试
dig -x 172.16.100.67 @172.16.100..68
提示:上面配置的主从DNS,在主DNS添加一条新的记录,reload后会通知从服务器同步,从服务器会自动实现同步
补充:
除了可以实现自动区域传送以外,还可以手动区域传送
在主上dig -t axfr magedu.comdig -t ixfr magedu.com
在从上dig -t axfr magedu.com @172.16.100.67
dig -t axf100.16.172.in-addr.arpa. @172.16.100.67
注意:
从安全考虑,主服务器只给从服务器开放传送,其他的一概不允许。(访问控制-后面介绍)
主从DNS的时间要同步。
子域授权
开通二级域以后,就可以在公司内建立三级域并进行管理比如已经开通的二级域是 magedu.com.想开通的三级域是 ops.magedu.com.下面基于此二级域进行子域(三级域的授权)
(1)在一台全新的服务器上安装bind
(2)正向解析区域授权子域的方法:注意:此台子域DNS服务器是主DNS服务器(当然可以再建它的从DNS服务器)还要做好所有DNS服务器的时间同步
ops.magadu.com. IN NS ns1.ops.magedu.com.ops.magadu.com. IN NS ns2.ops.magedu.com.
ns1.ops.magedu.com. IN A IP of ns1.ops.magedu.com.ns2.ops.magedu.com. IN A IP of ns2.ops.magedu.com.
补充:同样,在顶级域上对二级域进行mgedu.com. IN NS ns1.magedu.com.ns1.magedu.com. IN A IP of ns1.magedu.com. (202.34.54.21)
(3) 在父域的主服务器上 修改 在/var/named目录下的 正向解析的区域数据文件 magedu.com.zone
(4)重载配置
rndc reload
(5) 在子域的DNS服务器上 编辑主配置文件 /etc/named.conf
listen-on port 53 { 172.16.10.80; };
dnssec-enable no;dnssec-validation no;dnssec-lookaside no;
关闭仅允许本地查询(否则子域不能通过父域解析):将allow-query { lovalhost; };注释掉 === 》//allow-query { lovalhost; };(6)检查语法或者直接将allow-query { lovalhost; };删除。
named-checkconf
(7) 在子域的DNS服务器上启动DNS服务
/etc/init.d/named start/etc/init.d/named status
netstat -lntup|grep named
(8) 在子域的DNS服务器上编辑 主配置文件中或主配置文件辅助配置文件
如果主配置文件中,有次条语句: include "/etc/named.rfc1912.zones"; 包含文件: /etc/named.rfc1912.zones也可以通过include其他文件来实现添加下面的内容:
(9) 在子域的DNS服务器上 创建子域服务器正向解析数据文件 /var/named/ops.magedu.com.zone
(10) 在子域的DNS服务器上 修改文件 /var/named/ops.magedu.com.zone 的属组和权限
chown :named /var/named/ops.magedu.com.zonechmod 640 /var/named/ops.magedu.com.zone
(11)在子域的DNS服务器上检查语法
named-checkconf
(12)重载配置
rndc reload
(13)在子域DNS上解析自己(子域)测试
dig -t A www.ops.magedu.com @127.0.0.1
(14) 在父域DNS上解析子域测试
注意:如果解析不到的话,请查看父域的和子域的主配置文件named.conf中是否打开了云允许查询://allow-query { lovalhost; };
或allow-query { any; };
如果此时要在子域DNS上解析父域,由于父域不是子域负责解析的区域,所以此时子域DNS就要去找根服务器了。
这时候,如果想要子域服务器在解析父域的时候,直接去找父域,而不是通过去找根服务器去一级级的迭代,那就需要定义转发域(区域)因为默认情况下,只要不是自己负责的区域,都会去找根服务器去迭代。
(15)在子域DNS服务器上定义转发:
注意:被转发的服务器必须允许为当前服务做递归,否则转发不成功。上面说的转发给根,并不是意为者根会为此服务器做递归。
- 区域转发:仅转发对特定区域的解析请求
fist:首先转发;转发器不响应时,自行去迭代
only:只转发
在子域的DNS服务器上编辑 主配置文件中或主配置文件辅助配置文件
如果主配置文件中,有次条语句: include "/etc/named.rfc1912.zones"; 包含文件: /etc/named.rfc1912.zones也可以通过include其他文件来实现添加下面的内容,指明父域在哪里:
在子域DNS上检查语法named-checkconf
在子域DNS上重载rndc reload
在子域DNS上解析父域测试
注意:如果解析不到的话,请查看父域的和子域的主配置文件named.conf中是否打开了云允许查询://allow-query { lovalhost; }; 或删除
或allow-query { any; };
- 全局转发:针对凡是本地没有通过zone定义的区域的查询请求,统统转发给某转发器。
全局转发,要在子域DNS本机修改主配置文件 /etc/named.conf
在全局段添加转发规则:
acl :访问控制列表,把一个或多个地址归并为一个命令的集合,随后通过此名称即可对此集合内的所有主机实现统一调用。
注意: acl 要先定义,后使用,并且 acl 要在 options { }; 外面定义。格式为:
acl acl_name {ip;net/prelen;};
示例:
bind 有四个内置的acl:
none:没有一个主机any:任意主机local:本机localhost:本机所在的IP所属的网络。
访问控制指令(放在options中就是全局生效,放在zone中就是区域生效):
allow-query {}; 允许查询的主机,即白名单。allow-transfer {}; 的 相关的配置是:allow-transfer {}; 允许向那些主机做区域传送,默认为向所有主机,应该配置为仅允许向从服务器传送。 如果有从DNS,要指向从DNS的IP,没有从DNS的话要设为noneallow-recursion {}; 允许哪些主机向当前DNS服务器发起递归查询请求,默认是允许所有: recursion yes;allow-update {}; DDNS,允许动态更新区域数据库文件中的内容,进程自动更新。除非使用DDNS,否则,每个区域都应该是设置为 allow-update { none }; 的
主DNS的/etc/named.conf 中:
在主DNS的 /etc/named.rfc1912.zones 中
在从DNS的 /etc/named.rfc1912.zones中
检查语法named.checkconf
重在配置rndc reload
这时候,只有在 acl slaves { 172.16.100.68; 127.0.0.1; }; 中的 172.16.100.68,以及本机的127.0.0.1上可以同步数据,其他的不可以
在 172.16.100.68上执行 dig -t axfr megedu.com @17216.100.67 可以成功传送数据在其他机器上执行dig -t axfr megedu.com @17216.100.67 不可以传送数据。
allow-recursion {}; 的相关配置是:
/etc/named.conf 中:
alllow-update {};的相关配置
在从服务器上编辑区域文件 /etc/named.rfc1912.zones
bind view(视图):
视图:view VIEW_NAME {zone;zone;zone;};
示例:
注意:view视图是自上向下匹配的,匹配到一条后就不在向下匹配了。
课外作业:who is命令;注册一个域名;
正向解析区域、反向解析区域、主从、子域、基本安全控制