一.DNS的简单介绍:
1.DNS系统的作用
正向解析:根据主机名称(域名)查找对应的IP地址反向解析:根据IP地址查找对应的主机域名DNS系统的分布式数据结构在DNS中域名空间采用分层机构,包括根域(由internet名字注册授权机构管理)、顶级域(由internet名字授权机构管理,有三种类型:1.组织域2.国家域或地区域3.反向域)、二级域(注册到个人、组织或公司的名称)和主机名,域名空间的层次结构类似一棵倒置的树,其中根作为最高级别,树枝处于下一级别,树叶则处于最低级别。一个区域就是DNS域名空间的一部分,维护着该区域的数据库记录,在域名层次结构中每一层称作一个域,每个域用“.”号分开,域又可以进一步分成子域,每个域都有一个域名,最底层是主机。
2.DNS查询方式:
递归查询 大多数客户机向DNS服务器解析域名的方式迭代查询大多数DNS服务器向其他DNS服务器解析域名的方式
3DNS服务器的类型:
(1).缓存域名服务器
也称为 唯高速缓存服务器通过向其他域名服务器查询获得域名->IP地址记录将域名查询结果缓存到本地,提高重复查询时的速度(2).主域名服务器特定DNS区域的官方服务器,具有唯一性负责维护该区域内所有域名->IP地址的映射记录(3).从域名服务器也称为 辅助域名服务器其维护的 域名->IP地址记录 来源于主域名服务器二搭建DNS域名服务器:
安装的DNS软件包(版本可以自己选择,我这里就以这些版本为例):
bind-9.3.3-7.el5.i386.rpm //主要程序及相关文件
bind-utils-9.3.3-7.el5.i386.rpm //DNS的测试工具,如nslookup、dig。。bind-chroot-9.3.3-7.el5.i386.rpm //伪装的根目录以增强安全性caching-nameserver-9.3.3-7.el5.i386.rpm //配置文件
要求一:构建缓存域名服务器:
[root@localhost ~]# cd /var/named/chroot/etc/
[root@localhost etc]# ls
localtime named.caching-nameserver.conf named.rfc1912.zones rndc.key
(1)修改全局配置文件
[root@localhost etc]# mv named.caching-nameserver.conf named.conf
[root@localhost etc]# vim named.conf
options { //全局选项
listen-on port 53 { 192.168.0.60; }; //设置named监听的端口号、ip地址 listen-on-v6 port 53 { ::1; }; 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"; query-source port 53; query-source-v6 port 53;allow-query { 192.168.0.0/24; }; //允许DNS查询的客户端地址
recursion yes; //是否允许为客户端进行递归查询
//有时候为了提高解析效率也可以不向根域查询而在此处直接设置转发 例如:forwarders{ 8.8.8.8;},把尾行include "/etc/named.rfc1912.zones";这行注释掉,直接启动服务就可 以,当客户端查询时就不在向根查询而是向8.8.8.8查询了!!
logging {
channel default_debug { file "data/named.run"; severity dynamic; };};view localhost_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include "/etc/named.rfc1912.zones"; //区域配置选项文件,接下来我们就该修改这个文件了};(2)修改区域配置文件
[root@localhost etc]# vim named.rfc1912.zones
zone "." IN { //设置根区域
type hint; //设置区域类型,hint表示是根域、master表示主域、slave表示是从域
file "named.ca"; //设置对应的根域地址数据库文件};
(3)重新启动服务:service named restart
(4)验证域名缓存服务器
C:\Documents and Settings\Administrator>nslookup
> www.baidu.com
Server: UnKnownAddress: 192.168.0.60Non-authoritative answer:Name: www.a.shifen.comAddresses: 119.75.218.45, 119.75.217.56Aliases: www.baidu.com
缓存域名服务器就成功了!!!
要求二:构建主从服务器:
案例:
主域名服务器位于internet中,ip地址为192.168.0.60,主机名为ns1.jgd.com
从域名服务器ip地址为192.168.0.61,主机名为ns2.jgd.com
所负责dns域为:jgd.com
为以下服务器提供正向解析:
网站服务器”www.jgd.com“,ip地址为”192.168.0.1“
邮件服务器”mail.jgd.com“,ip地址为”192.168.0.1“
在线培训服务器”study.jgd.com“,ip地址为”192.168.0.2“
主域名服务器”ns1.jgd.com“,ip地址为”192.168.0.60“
从域名服务器”ns2.jgd.com“,ip地址为”192.168.0.61“
为上述服务器提供反向解析,为”jgd.com“提供泛域名解析,对应的ip地址为”192.168.0.1“
步骤1:建立主域名服务器
(1)将主、从DNS的服务器的地址映射写到”/etc/hosts“中,同时在”/etc/resolv.conf“中指定DNS服务器的地址
[root@localhost etc]# vim /etc/hosts
192.168.0.60 ns1.jgd.com ns1
192.168.0.61 ns2.jgd.com ns2[root@localhost etc]# vim /etc/resolv.conf
search jgd.com
nameserver 192.168.0.60nameserver 192.168.0.61
(2)修改全局配置文件:
[root@localhost ~]# cd /var/named/chroot/etc/
[root@localhost etc]# ls
localtime named.caching-nameserver.conf named.rfc1912.zones rndc.key
[root@localhost etc]# mv named.caching-nameserver.conf named.conf
[root@localhost etc]# vim named.conf
options {
listen-on port 53 { 192.168.0.60; }; //设置named监听的端口号、ip地址 listen-on-v6 port 53 { ::1; }; 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"; query-source port 53; query-source-v6 port 53;allow-query { 192.168.0.0/24; }; //允许DNS查询的客户端地址
logging {
channel default_debug { file "data/named.run"; severity dynamic; };};view localhost_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include "/etc/named.rfc1912.zones"; //区域配置选项文件,接下来我们就该修改这个文件了};
(3)修改区域配置文件”named.rfc1912.zones“
vim named.rfc1912.zones
zone "jgd.com" IN {
type master; file "jgd.com.zone"; allow-transfer{ 192.168.0.61; }; //允许从域名服务器来次下载数据 allow-update { none; };};zone "0.168.192.in-addr.arpa" IN { type master; file "192.168.0.arpa"; allow-transfer{ 192.168.0.61;}; //允许从域名服务器来此下载数据 allow-update { none; }; //设置不允许客户端自动更新};(4)修改区域数据库配置文件:
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# lsdata localhost.zone named.ca named.local slaveslocaldomain.zone named.broadcast named.ip6.local named.zero
[root@localhost named]# cp -p localhost.zone jgd.com.zone
[root@localhost named]# vim jgd.com.zone //正向区域数据库文件
$TTL 86400 //设置有效地址解析记录的默认缓存时间
@ IN SOA jgd.com. admin.jgd.com. ( 42 ; serial (d. adams) //更新序列号,用于标记地址数据库的变化,可以是10位以内的整数 3H ; refresh //刷新时间,从域名服务器更新该地址数据库文件的时间间隔 15M ; retry //重试延时,从域名服务器跟新地址数据库失败以后等待多长时间再次重试 1W ; expiry //失效时间,超过该时间无法更新的地址数据库,则不在重试 1D ) ; minimum //设置无效地址解析记录(该数据库中不存在的地址)的默认缓存时间 IN NS ns1.jgd.com. IN NS ns2.jgd.com. IN MX 10 mail.jgd.com. //MX记录用于设置当前域中邮件服务器的邮件地址,10表示优先级,数字越小优先级越大ns1 IN A 192.168.0.60ns2 IN A 192.168.0.61mail IN A 192.168.0.1www IN A 192.168.0.1study IN A 192.168.0.2* IN A 192.168.0.1!!注意:在区域数据库文件中,凡是不以”.“结尾的主机地址,系统在查找地址记录时都会自动将当前的域名作为后缀。例如当前的DNS域名为”jgd.com“,则在文件中的主机地址”www“相当于”www.jgd.com“,如果需要完整的FQDN地址,记得在尾部加上”.“。
[root@localhost named]# cp -p jgd.com.zone 192.168.0.arpa
[root@localhost named]# vim 192.168.0.arpa //修改反向数据库配置文件
$TTL 86400@ IN SOA jgd.com. admin.jgd.com. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum IN NS ns1.jgd.com. IN NS ns2.jgd.com.60 IN PTR ns1.jgd.com.61 IN PTR ns2.jgd.com.1 IN PTR www.jgd.com.2 IN PTR study.jgd.com.(5)检查下配置文件:
[root@localhost named]# named-checkconf ../../etc/named.conf
[root@localhost named]# named-checkconf ../../etc/named.rfc1912.zones //没有任何提示,完全OK!
(6)重新启动服务
[root@localhost named]# service named restart
(7)在另为一台机子上测试主域名服务器(如果不能解析检查下防火墙和selinux)
[root@ns2 ~]# nslookup
> www.jgd.comServer: 192.168.0.60Address: 192.168.0.60#53Name: www.jgd.comAddress: 192.168.0.1> mail.jgd.comServer: 192.168.0.60Address: 192.168.0.60#53Name: mail.jgd.comAddress: 192.168.0.1 //正向解析没问题> 192.168.0.60Server: 192.168.0.60Address: 192.168.0.60#5360.0.168.192.in-addr.arpa name = ns1.jgd.com. //反向解析没问题主域名服务器完全ok!步骤2:去192.168.0.61上建立从域名服务器:
(1)将主、从DNS的服务器的地址映射写到”/etc/hosts“中,同时在”/etc/resolv.conf“中指定DNS服务器的地址
[root@localhost etc]# vim /etc/hosts
192.168.0.60 ns1.jgd.com ns1
192.168.0.61 ns2.jgd.com ns2[root@localhost etc]# vim /etc/resolv.conf
search jgd.com
nameserver 192.168.0.60nameserver 192.168.0.61
(2)装bind那几个软件包
(3)修改全局配置文件
[root@ns2 ~]# cd /var/named/chroot/etc/
[root@ns2 etc]# lslocaltime named.caching-nameserver.conf named.rfc1912.zones rndc.key[root@ns2 etc]# mv named.caching-nameserver.conf named.conf[root@ns2 etc]# vim named.conf options { listen-on port 53 { 192.168.0.61; }; listen-on-v6 port 53 { ::1; }; 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"; query-source port 53; query-source-v6 port 53; allow-query { 192.168.0.0/24; };};logging { channel default_debug { file "data/named.run"; severity dynamic; };};view localhost_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include "/etc/named.rfc1912.zones";};(4)修改区域配置文件
[root@ns2 etc]# vim named.rfc1912.zones
zone "jgd.com" IN { type slave; masters { 192.168.0.60; }; file "slaves/jgd.com.zone"; allow-update { none; };};zone "0.168.192.in-addr.arpa" IN { type slave; masters { 192.168.0.60; }; file "slaves/192.168.0.arpa"; allow-update { none; };};(5)重新启动服务:[root@ns2 etc]# service named restart
[root@ns2 named]# cd ../../var/named/slaves/ && ls //到slaves下面查看区域数据库配置文件是否已经下载过来
192.168.0.arpa jgd.com.zone
(6)测试从域名服务器:
C:\Documents and Settings\Administrator>nslookup
Default Server: ns2.jgd.comAddress: 192.168.0.61> www.jgd.comServer: ns2.jgd.comAddress: 192.168.0.61Name: www.jgd.comAddress: 192.168.0.1> mail.jgd.comServer: ns2.jgd.comAddress: 192.168.0.61Name: mail.jgd.comAddress: 192.168.0.1 //正向解析没问题> 192.168.0.1 Server: ns2.jgd.comAddress: 192.168.0.61Name: www.jgd.comAddress: 192.168.0.1 //反向解析没问题OK!主从域名服务器就到此完成了!!