这里都以我本机的实验为例
正向解析:就是从主机名到IP的解析过程
先在工作目录/var/named/创建一个区域数据文件
以zcylinux.io域为例:vim
/var/named/zcylinux.io.zone
$TTL 600 #设置全局变量TTL的值为600s
zcylinux.io. IN SOA zcylinux.io. nsadmin.zcylinux.io. (
2017052801
1H
1M
1W
1D )
zcylinux.io. IN NS dns.zcylinux.io. 表示zcylinux.io域中的DNS服务器是哪个主机
dns.zcylinux.io. IN A 172.16.250.31 ns服务器的正向解析记录
www.zcylinux.io. IN A 172.16.0.1 www.zcylinux.io.的正向解析记录
web IN CNAME www 表示还有一个别名是web
每个完整的域名之后要加上点“.”,这个点表示完整的主机名FQDN,如果只写了zcylinux.io,表示zcylinux.io.zcylinux.io.
保存后,修改文件的属组:chown :named zcylinux.io.zone
权限:chmod o= zcylinux.io.zone
在主配置文件/etc/named.conf或配置文件辅助文件/etc/named.rfc1912.zones中添加:
zone “zcylinux.io ” {
type master {master|slave|hint|forward};
file “zcylinux.io”;
};
在/etc/named/目录下:
检查语法错误:named-checkconf
named-checkzone zcylinux.io zcylinux.io.zone
启动named服务:systemctl start named
若是服务已经启动:rndc reload 或 systemctl reload named.service 来重新加载配置文件和区域数据文件
反向解析:就是从IP到主机名的过程
以172.16这个网段的区域为例
在/etc/named/目录下编辑区域数据文件
vim 172.16.zone
$TTL 600
@ IN SOA zcylinux.io. nsadmin.zcylinux.io. (
2017052801
1H
1M
1W
1D )
@ IN NS dns.zcylinux.io.
31.250 IN PTR dns.zcylinux.io.
1.0 IN PTR www.zcylinux.io.
@表示在zone中定义的zone_name
这里在左侧只用添加ip地址的最后两段,因为我们在之前已经定义好域了16.172.in-addr.arpa,因此在这里它会自动将其补全
定义区域:
在主配置文件或配置文件辅助文件中实现:
zone “16.172.in-addr.arpa ”{
type master {master|slave|hint|forward};
file “172.16.zone”;
};
注意:反向解析区域的名字—反写的网段地址.in-addr.arpa
检查语法错误(工作目录/etc/named/):named-checkconf
named-checkzone 172.16.io 172.16.io.zone
启动named服务:systemctl start named
若是服务已经启动:rndc reload 或 systemctl reload named.service 来重新加载配置文件和区域数据文件
反向解析与正向解析是两个独立的逻辑,不会互相干扰
主/从:记得防火墙 iptables -F
在主服务器的bind的主配置文件/etc/named.conf的每个zone中可以定义设置哪些从服务器来同步信息;主服务器更改信息时,要修改序列号(递增),这样从服务器才会同步信息。
zone “zcylinux.io” IN {
type master;
file “zcylinux.io.zone”;
allow-transfer { 172.16.251.109; }; 多个ip地址时以分号隔开
};
在从服务器上只用修改bind主配置文件或辅助配置文件中的zone即可:
zone “zcylinux.io” IN {
type slave;
file “slaves/zcylinux.io.zone”; 将同步后的文件放置的位置,这里是相对路径,实际路径为/var/named/slaves/zcylinux.io.zone
masters { 172.16.250.31; }; 主服务器的地址
};
zone “16.172.in-addr.arpa” IN {
type slave;
file “slaves/172.16.io.zone”;
masters { 172.16.250.31; };
};
检查语法错误(工作目录/etc/named/):named-checkconf
重新加载:rndc reload
通过观察日志文件 tail
/var/log/messages 查看是否同步成功,成功会在/var/named/slaves/目录下生成相应的文件
子域:
当我们将DNS解析请求发给我们所指定的DNS服务器后,它会一级一级的去查找域名去解析,在这里每一级都是一个域,而且每个域都是上级的子域;每一级域只负责解析该域名,而对于下一级域名的解析只告诉所对应的DNS服务器地址,具体的解析交给下级来完成。
在上级域名加入一条记录来指定子域
$TTL 600
zcylinux.io. IN SOA zcylinux.io. nsadmin.zcylinux.io. (
2017052702
1H
2M
3W
4D )
IN NS dns.zcylinux.io.
dns.zcylinux.io. IN A 172.16.250.31
www.zcylinux.io. IN A 172.16.0.1
web IN CNAME www
ops.zcylinux.io. IN NS dns.ops.zcylinux.io. //指定分割子域和负责人
dns.ops IN A 172.16.251.57 //负责人对应的识别信息
配置子域:在子域服务器上
vim /etc/named.rfc1912.zones
zone
“ops.zcylinux.io” IN {
type master;
file “ops.zcylinux.io.zone”;
编辑正向解析文件:
vim ops.zcylinux.io.zone
$TTL 1D
@ IN SOA ops.zcylinux.io. nsadmin.ops.zcylinux.io. (
2017052701
1H
1M
1W
1D)
@ IN NS dns.ops.zcylinux.io.
dns IN A 172.16.251.57
www IN A 172.16.253.69
区域转发:
一般来说子域不知道父域的位置,无法解析父域。而要想能解析父域,我们需要用到转发:
vim /etc/named.rfc1912.zones
zone
“zcylinux.io” IN {
type forward;
forward only|first; //前者代表只去询问父域,不论能否解析;后者是先转给父域,不行再去找根。
forwarders { 172.16.250.31;
172.16.251.109; };
};
全局转发:
vim /etc/named.conf
options {
… …
forward {only|first};
forwarders { SERVER_IP; };
.. …
};
基本安全控制:
acl 访问控制列表:把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集全内的所有主机实现统一调用;
vim /etc/named.conf
acl test {
172.16.0.200;
172.16.250.31;
};
设置区域查询控制:
vim /etc/named.rfc1912.zones
zone “zcylinux.io” IN {
type master;
file “zcylinux.io.zone”;
allow-query { test; };
};
allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
vim /etc/named.conf
acl slavesrvs {
172.16.251.109;
127.0.0.0/8;
};
vim /etc/named.rfc1912.zones
zone “zcylinux.io” IN {
type master;
file “zcylinux.io.zone”;
//allow-query { test; };
allow-transfer { slavesrvs; };
};
allow-recursion {}; 允许哪此主机向当前DNS服务器发起递归查询请求;
vim /etc/named.conf
········
acl localnet {
172.16.0.0/16;
127.0.0.0/8;
};
········
allow-recursion { localnet; };
········
allow-update {}; DDNS,允许动态更新区域数据库文件中内容
vim /etc/named.rfc1912.zones
zone
“zcylinux.io” IN {
type master;
file “zcylinux.io.zone”;
allow-update { none; };
};
测试工具:在测试时注意防火墙
dig, host, nslookup等
dig命令:
dig [-t RR_TYPE] name [@SERVER] [query options]
用于测试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
rndc flush
rndc reload
原创文章,作者:Immortals、zcy,如若转载,请注明出处:http://www.178linux.com/77185