DNS服务器的搭建
关于DNS这里不详细阐述,本博客作者使用yum配置163的源进行安装bind98版本,关于一些配置文件没有参考安装的默认配置文件,而是自己编写的,仅供参考:
(注意:以下的配置文件一定要注意格式,这里的配置文件格式上不一定是对的,但内容是可以参考的,一定要注意配置文件中的中文空格,这会让你找半天的)
系统:Centos6.7
DNS软件包:bind98
首先实现单台主DNS服务器,这里设置本机名称叫做 ns1.hjc.com ,关于DNS这里都是先配置成缓存DNS服务器,在接着配置成主或者被DNS服务器
关于配置文件如下:
vim /etc/named.conf 主配置文件添加如下配置信息 :
options { directory "/var/named"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "named.localhost"; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; }; zone "hjc.com" IN { type master; file "hjc.com.zone"; }; zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.zone"; };
这里的配置是作者自己编写的,所以并没有添加其他的配置信息
然后完善如上文件中引用的其他的区域文件信息: (备注:通常/var/named/named.ca 这个文件会自动生成,
无需做修改,如果没有可以使用 dig -t NS . @114.114.114.114 命令产生的结果保存到该文件中,但要求该机器能够联网,该命令只是查询全球13个DNS根节点服务器)
vim /var/named/named.localhost
$TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1
vim /var/named/named.loopback
$TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 PTR localhost.
vim /var/named/hjc.com.zone 这里的ip都是一些博主自己测试用的IP和主机名
$TTL 600 hjc.com. IN SOA ns1 admin.hjc.com. ( 20130401 1H 5M 2D 6H ) hjc.com. IN NS ns1.hjc.com. hjc.com. IN MX 10 mail.hjc.com. ns1 IN A 192.168.1.77 mail IN A 192.168.1.76 www IN A 192.168.1.77 ftp IN CNAME www
vim /var/named/192.168.1.zone
$TTL 600 @ IN SOA ns1 admin.hjc.com. ( 20130401 1H 5M 2D 6H ) IN NS ns1.hjc.com. 77 IN PTR ns1.hjc.com. 77 IN PTR www.hjc.com. 76 IN PTR mail.hjc.com.
可以对区域文件进行验证: 例如 : named-checkzone "1.168.192.in-addr.arpa" /var/named/192.168.1.zone
这样最基础的主DNS服务器就配置完成了,重启DNS服务器并进行验证:(这里要将/etc/resolve.conf中的DNS IP改成本机IP:192.168.1.77)
dig -x 192.168.1.76
dig -t A www.hjc.com
dig -t SOA hjc.com
dig -t NS hjc.com
一定要看到正确的返回结果才可以,至于什么样的结果是正确的可以自行上网查看,这里就不续说了,至此一个“最最最基本”的主DNS服务器就配置完成了。
2.主从复制及区域传送DNS配置:
主DNSIP:192.168.1.77
从DNSIP:192.168.1.61
在如上的基础上进行改进,其中主DNS的/var/named/named.localhost和named.loopback这两个文件不变动,从的DNS只需要更改/etc/named.conf
vim /etc/named.conf 其中加入了其他的配置如允许本地服务器进行递归,更改区域文件时候进行通知,仅允许从服务器进行区域传送
options { directory "/var/named"; allow-recursion { 192.168.1.0/24; }; notify yes; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; }; zone "hjc.com" IN { type master; file "hjc.com.zone"; allow-transfer { 192.168.1.61; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.zone"; allow-transfer { 192.168.1.61; }; };
编辑区域文件:
vim /var/named/hjc.com.zone 在之前的基础上添加ns2,否则不会传送增量区域信息
$TTL 600 @ IN SOA ns1 admin.hjc.com. ( 20130404 1H 5M 2D 6H ) hjc.com. IN NS ns1.hjc.com. hjc.com. IN NS ns2.hjc.com. hjc.com. IN MX 10 mail.hjc.com. ns1 IN A 192.168.1.77 ns2 IN A 192.168.1.61 mail IN A 192.168.1.76 www IN A 192.168.1.77 ftp IN CNAME www pop IN A 192.168.1.75
vim /var/named/192.168.1.zone
$TTL 600 @ IN SOA ns1 admin.hjc.com. ( 20130401 1H 5M 2D 6H ) IN NS ns1.hjc.com. IN NS ns2.hjc.com. 77 IN PTR ns1.hjc.com. 61 IN PTR ns2.hjc.com. 77 IN PTR www.hjc.com. 76 IN PTR mail.hjc.com.
接下来对从DNS进行配置,从DNS服务器的主机名 ns2.hjc.com
vim /etc/named.conf
options { directory "/var/named"; allow-recursion { 192.168.1.0/24; }; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; }; zone "hjc.com" IN { type slave; file "slaves/hjc.com.zone"; masters { 192.168.1.77; }; allow-transfer { none; }; }; zone "1.168.192.in-addr.arpa" IN { type slave; file "slaves/192.168.1.zone"; masters { 192.168.1.77; }; allow-transfer { none; }; };
其他信息无需改动,但是要确保/var/named/named.loopback和named.localhost这两个文件存在,这是确保先成为缓存DNS服务器
重新启动 主和被DNS服务器
这时候如果成功的话会在从DNS服务器上的 /var/named/slaves 这个目录下生成区域文件,在该例下会生成 (192.168.1.zone hjc.com.zone)
也可以查看生成的日志进行确认,主配置文件中没有指定log生成在哪个目录下的话,会将日志打在/var/log/messages中
至此主从区域传送的DNS就配置完成了。
3.实现子域授权功能:
在主从的基础上进行改变:
vim /etc/named/hjc.com.zone 添加如下的两个子域 fin.hjc.com 和 market.hjc.com
$TTL 600 @ IN SOA ns1 admin.hjc.com. ( 20130405 1H 5M 2D 6H ) hjc.com. IN NS ns1.hjc.com. hjc.com. IN NS ns2.hjc.com. hjc.com. IN MX 10 mail.hjc.com. ns1 IN A 192.168.1.77 ns2 IN A 192.168.1.61 mail IN A 192.168.1.76 www IN A 192.168.1.77 ftp IN CNAME www pop IN A 192.168.1.75 imap IN A 192.168.1.74 fin IN NS ns1.fin ns1.fin IN A 192.168.1.8 market IN NS ns1.market ns1.market IN A 192.168.1.18
之后重启服务
接下来在新的一台机器上(192.168.1.8)安装DNS服务,并且先改成主DNS服务器,也需要增加zone文件,这里不多叙说,主要是展示子域的转发,怎么配置DNS服务器:
在子域192.168.1.8上进行配置:
vim /etc/named.conf
options { directory "/var/named"; }; zone "." IN { type hint; file "named.ca"; }; zone "localhost" IN { type master; file "named.localhost"; allow-transfer { none; }; }; zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-transfer { none; }; }; zone "fin.hjc.com" IN { type master; file "fin.hjc.com.zone"; }; zone "hjc.com" IN { type forward; forwards { 192.168.1.77; }; };
该服务器上并没有配置反向DNS,之后重启服务,并加以认证。
可在最初的主DNS192.168.1.77上认证:
dig -t A ns1.fin.hjc.com
4.DNS视图实现基本的智能DNS
将之前的设置全部清除,只留一台机器即可假设留192.168.1.77,并且该服务器上有双网卡,另一个IP地址为:192.168.140.127
这里定义了两个视图,假设两个不同的网卡链接两个不同的网络,比如电信和联通,不同的源地址请求返回不同的DNS,并且在这里我们使用了ACL,
在本例中为了快捷没有定义反向的DNS解析,只有正向。
vim /etc/named.conf
acl telecom { 192.168.1.0/24; 127.0.0.1; }; acl unicom { 192.168.140.0/24; }; options { directory "/var/named"; allow-recursion { telecom; }; notify yes; }; view telecom { match-clients { telecom; }; zone "hjc.com" IN { type master; file "telecom.hjc.com.zone"; }; }; view unicom { match-clients { any; }; zone "hjc.com" IN { type master; file "unicom.hjc.com.zone"; }; };
设置两个不同的区域文件:
vim /var/named/telecom.hjc.com.zone
$TTL 43200 @ IN SOA ns1 admin.hjc.com ( 20170401501 1H 10M 7D 1D ) IN NS ns1 IN MX 10 mail ns1 IN A 192.168.1.77 mail IN A 192.168.1.76 www IN A 192.168.1.61
vim /var/named/unicom.hjc.com.zone
$TTL 43200 @ IN SOA ns1 admin.hjc.com ( 20170401501 1H 10M 7D 1D ) IN NS ns1 IN MX 10 mail ns1 IN A 192.168.1.77 mail IN A 192.168.140.128 www IN A 192.168.140.22
这样最最基本的只能DNS就完成了
5.DNS的一些组件
关于DNS的组件这块博主没有去研究
dnstop 是监测DNS的一个工具;
queryperf 是进行DNS压力测试的一款工具
这些工具在bind的源码包里面有一个contribe 的文件夹下包含,要自行手动编译安装,关于用法这里还是自行上网搜索吧。