搭建DNS服务器实现域名解析
在公司配置一个内网DNS服务器,可以在内网解析域名 www.linux.com为IP:192.168.24.200;另外为保证DNS服务器稳定,还要搭建成一个从DNS服务器;为DNS服务器做冗余。
测试内容:配置PC客户端的DNS服务器地址为:192.168.24.200和192.168.24.201 ;当模拟192.168.24.200 DNS服务意外关闭时,ping www.linux.com 还可以通过dns2-server正常解析该域名。
实验环境
主DNS服务器 dns1-server : 192.168.24.200
从DNS服务器 dns2-server: 192.168.24.201
客户机 windows
安装服务并启动
[[email protected]~]#yum -y install bind bind-chroot bind-utils [[email protected]~]#chkconfig named on [[email protected]~]#service named start
bind-9.7.3-8.P3.el6.x86_64.rpm #该包为DNS 服务的主程序包。 bind-chroot-9.7.3-8.P3.el6.x86_64.rpm #提高安全性。 #bind-chroot是bind的一个功能,使bind可以在一个chroot 的模式下运行.也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已.这样做的目的是为了提高安全性.因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中. bind-utils-9.7.3-8.P3.el6.x86_64.rpm #该包为客户端工具,默认安装,用于搜索域名指令
1、搭建一个主DNS服务器dns1.cn。配置内容如下:
[[email protected] ~]# vim /var/named/chroot/etc/named.conf
options { listen-on port 53 { any ; }; #监听所有网段的IP listen-on-v6 port 53 { any; }; #监听所有网段的IP directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; #允许所有网段IP的请求 recursion no ; #默认支持递归查询,这里关闭递归查询 dnssec-enable yes; #是否支持DNSSEC开关,默认为yes dnssec-validation yes; #是否进行DNSSEC确认开关,默认为yes dnssec-lookaside auto; #当设置dnssec-lookaside,它为验证器提供另外一个能在网络区域的顶层验证DNSKEY的方法。 /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; } zone "." IN { type hint; file "named.ca"; }; zone "linux.com" IN { #定义区域文件dns1.cn type master; #定义角色为主DNS file "linux.com.zone"; #读取的域配置文件 also-notify { 192.168.24.201; }; #当主服务器配置发生修改时,通知从服务器自动更新 allow-transfer { 192.168.137.0/24; }; #指定允许哪个网段的从DNS服务器,可以同步主DNS服务器zone文件,不写默认为所有。(none代表不允许) }; include "/etc/named.rfc1912.zones";
检查配置文件
[[email protected] /]# named-checkconf
2、创建zone文件:
注:主DNS记录中应该有两NS记录,一条是主DNS的NS记录,一条是从DNS服务器的域名记录。
[[email protected] ~]# cd /var/named/chroot/var/named/
[[email protected] named]#vim linux.com.zone
linux.com.zone中的内容如下:
1 $TTL 86400 2 @ IN SOA ns1.linux.com. root.linux.com. ( 3 2015060101 4 1D 5 1H 6 1W 7 3H ) 8 IN NS ns1.linux.com. 9 IN NS ns2.linux.com. 10 ns1 IN A 192.168.24.200 11 ns2 IN A 192.168.24.201 12 www IN A 192.168.24.200 13 web IN CNAME www.linux.com.
配置文件参数说明:
$TTL 86400 ;设置有效地址解析记录的默认缓存时间,默认为1天也就是1D=86400秒。
linux.com. IN SOA dns1.linux.com. root.linux.com.
#原来的@表示当前的域linux.com.为方便大家记忆,我们这里,直接写成linux.com.
#设置SOA记录为:dns1.linux.com
#在此配置文件中写域名时,都把根. 也要写上。
#域管理邮箱root.linux.com. 由于@有其他含义,所以用“.”代替@。
201506010 ;更新序列号,用于标示数据库的变换,可以在10位以内,如果存在辅助DNS区域,建议每次更新完数据库,手动加1.
1D ;刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天
1H ;重试延时,从域名服务器更新地址数据库失败以后,等待多长时间,默认为为1小时
1W ; 到期,失效时间,超过该时间仍无法更新地址数据库,则不再尝试,默认为一周
3H ;设置无效地址解析记录(该数据库中不存在的地址)默认缓存时间。设置无效记录,最少缓存时间为3小时
重启服务
[[email protected] ~]# service named restart
停止 named:. [确定]
启动 named: [确定]
3、从DNS服务器的配置
##主从时间一定要保持一致
安装程序:
[[email protected] ~]# yum -y install bind bind-chroot bind-utils [[email protected] ~]# chkconfig named on [[email protected] ~]# service named start Generating /etc/rndc.key: [确定] 启动 named: [确定]
[[email protected] ~]# cd /var/named/chroot/etc/ [[email protected] etc]# vim named.conf
options { listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; #recursion no; recursion yes; #dnssec-enable yes; #dnssec-validation yes; #dnssec-lookaside auto; bindkeys-file "/etc/named.iscdlv.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; zone "linux.com.zone" IN { type slave; file "slaves/linux.zone.file"; masters { 192.168.24.200 ; }; #指定主服务器 }; include "/etc/named.rfc1912.zones";
第一次重启从DNS服务器会在:/var/named/chroot/var/named/slaves文件夹下自动创建一个文件linux.com.zone.file 这个文件是从DNS服务器去主DNS服务器上获取的数据
检查配置文件
[[email protected] /]# named-checkconf 重启测试: [[email protected] ~]# service named restart 停止 named:. [确定] 启动 named: [确定] [[email protected] ~]# ls /var/named/chroot/var/named/slaves/ linux.com.zone.file [[email protected] ~]# ll /var/named/chroot/var/named/slaves/ 总用量 4 -rw-r--r-- 1 named named 370 8月 3 01:09 linux.com.zone.file #看到这个文件,说明成功了
[[email protected] ~]# cat /var/named/chroot/var/named/slaves/linux.com.zone.file #文件具体内容 [[email protected] slaves]#cat linux.com.zone.file $ORIGIN . $TTL 86400 ; 1 day linux.com IN SOA ns1.linux.com. root.linux.com. ( 2015060101 ; serial 86400 ; refresh (1 day) 10800 ; retry (3 hours) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS ns1.linux.com. NS ns2.linux.com. $ORIGIN linux.com. ns1 A 192.168.24.200 ns2 A 192.168.24.201 web CNAME www www A 192.168.24.200
验证当主服务器配置发生修改时,通知从服务器自动更新
1 $TTL 86400 2 @ IN SOA ns1.linux.com. root.linux.com. ( 3 2015060101 4 1D 5 3H 6 1W 7 3H ) 8 IN NS ns1.linux.com. 9 IN NS ns2.linux.com. 10 ns1 IN A 192.168.24.200 11 ns2 IN A 192.168.24.201 12 www IN A 192.168.24.200 13 web IN CNAME www.linux.com. 14 bbs IN CNAME www.linux.com. #新添加的条目
重启主DNS服务
[[email protected] ~]# service named restart
查看从服务器的zone区域文件
[[email protected]DNS1-server2 ~]# cat /var/named/chroot/var/named/slaves/linux.com.zone.file $ORIGIN . $TTL 86400 ; 1 day linux.com IN SOA ns1.linux.com. root.linux.com. ( 2015060101 ; serial 86400 ; refresh (1 day) 10800 ; retry (3 hours) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS ns1.linux.com. NS ns2.linux.com. $ORIGIN linux.com. bbs CNAME www ns1 A 192.168.24.200 ns2 A 192.168.24.201 web CNAME www www A 192.168.24.200
#可以看出更新序列号以修改,并多了条刚才添加的web记录
通过关闭主DNS解析服务,模拟主DNS服务器挂掉,从DNS还能正常解析出linux.com的域名
配置客户端
在未关闭主服务器网卡时先ping一下www.linux.com,查看是否能正常解析
接着关闭主DNS服务器的named服务 servive named stop
接着ping一下www.linux.com,查看是否能正常解析
可以看出是可以正常解析的。