搭建DNS服务器实现名称解析.docx
《搭建DNS服务器实现名称解析.docx》由会员分享,可在线阅读,更多相关《搭建DNS服务器实现名称解析.docx(41页珍藏版)》请在冰豆网上搜索。
搭建DNS服务器实现名称解析
搭建DNS服务器实现名称解析
DNS服务器可以分为主DNS服务器,辅/从DNS服务器,缓存DNS服务器,转发DNS服务器等多种类型,每种服务器在域名服务系统中所起的作用都不一样:
Master/PrimaryServer(主DNS服务器):
承担基本的域名解析服务的是主DNS服务器(Master或Primary)。
每一个网络至少有一个主DNS服务器,以解析网络上的域名或IP。
Slave/SecondayServer(辅/从DNS服务器):
在一些比较大的网络中,为了保证DNS服务器能够提供可靠的域名解析服务,通常会在建立主DNS服务器的基础上,建立至少一个辅DNS服务器(Slave或Seconday).辅DNS服务器可以直接从主DNS服务器上进行更新,是主DNS服务器的替换服务器。
由于辅DNS服务器保留了一份所在域信息的完整副本,因此能够以授权的方式回答相关域的查询请求。
辅DNS服务器具备主DNS服务器的大部分功能,因此也被称为备份DNS服务器。
ForwardServer(转发DNS服务器):
转发DNS服务器用于将发往本地DNS服务器的解析请求发送到本地网络之外的DNS服务器上,本身不保留任何FQDN(完全规范域名)信息或IP地址信息。
转发DNS服务器可以用于保持局域网上的DNS服务器对Internet的隐藏。
CachingonlyServer(缓冲DNS服务器):
为减轻工作负担,本地DNS服务器可以设置为缓冲DNS服务器(Caching)。
缓冲DNS服务器会缓冲部分从其他服务器上获得的查找结果,并在解析请求发送到主DNS服务器之前首先进行匹配,一些重复的请求可以由缓冲服务器直接进行应答,但这种应答不能完全保证解析结果的有效性。
DNS后台进程:
namedDNS使用端口:
53(tcp,udp)查询-udp;区域复制-tcp
DNS查询方式;客户机与DNS服务器之间---递归查询;DNS服务器与DNS服务器之间-----迭代查询;(例外:
当DNS服务器将查询转发给转发器时,虽发生在服务器之间但也是递归查询)
在linux下架设DNS服务器使用的工具通常是Bind(BerkelyInternetNameDomainService)程序。
默认情况下,RedHatEnterpriseLinux5安装程序并没有安装DNS服务。
相关的RPM安装包名:
(下载地址:
http:
//www.isc.org源代码最新版本)
bind-9.3.3-7.el5.i386.rpm--------------------------------(第二张光盘,默认未安装。
提供DNS服务)
bind-chroot-9.3.3-7.el5.i386.rpm-------------------------(第二张光盘,默认未安装。
用于建立chroot目录及相关子目录)
caching-nameserver-9.3.3-7.el5.i386.rpm--------------(第四张光盘,默认未安装。
用于配置缓存域名服务器)
bind-libs-9.3.3-7.el5.i386.rpm----------------------------(默认已安装,提供实现域名解析功能必备的库文件)
bind-utils-9.3.3-7.el5.i386.rpm---------------------------(默认已安装,包含了用于测试DNS服务器的命令:
dig,host,nslookup,nsupdate)
ypbind-1.19-7.el5.i386.rpm--------------------------------(默认已安装)
bind-devel-9.3.3-7.el5.i386.rpm-------------------------(第三张光盘,默认未安装。
)
system-config-bind-4.0.3-2.el5.noarch.rpm------------(第五张光盘,默认未安装。
)
bind-sdb-9.3.3-7.el5.i386.rpm----------------------------(第四张光盘,默认未安装。
)
bind-libbind-9.3.3-7.el5.i386.rpm------------------------(第三张光盘,默认未安装。
)
安装rpm程序包:
#rpm–ivhbind-9.3.3-7.el5.i386.rpm---------------安装DNS服务,但并不会生成/etc/named.conf配置文件,需手工建立。
#rpm–ivhbind-chroot-9.3.3-7.el5.i386.rpm--------若要实现“chroot监牢”,使用chroot技术增强Bind安全性,需安装此包。
#rpm–ivhcaching-nameserver-9.3.3-7.el5.i386.rpm—若构建缓存域名服务器需安装此软件包,安装时将对原BIND服务器原有的主配置文件name.conf的内容进行更改,原有文件中的内容会被保存到文件/etc/name.conf.rpmorig中。
(chroot监牢技术:
chroot可以改变程序运行时所参考的根目录(/)位置,即将某个物定的子目录作为程序的虚拟根目录,并且对程序运行时可以使用的系统资源,用户权限和所在目录进行严格控制,程序只在这个虚拟的根目录下具有权限,一旦跳出该目录就无任何权限。
例如在RHEL5中,/var/name/chroot实际上是根目录(/)的虚拟目录,所以虚拟目录中的/etc目录实际上是/var/named/chroot/etc目录,而/var/named目录实际上是/var/named/chroot/var/named目录。
chroot功能的优点是:
如果有黑客通过Bind侵入系统,也只能被限定在chroot目录及其子目录中,其破坏力也仅局限在该虚拟目录中,不会威胁到整个服务器的安全。
)
#servicenamedstart=/etc/init.d/namedstart启动named服务
#servicenamedstop=/etc/init.d/namedstop停止named服务
#servicenamedrestart=/etc/init.d/namedrestart重启named服务
#servicenamedstatus=/etc/init.d/namedstatus检查named服务状态
# ntsysv或#chkconfig–level35namedon更改服务自动加载
Bind的一些重要文件及其功能说明:
/usr/sbin/named
域名服务器的守护进程,其中/var/run/named/named.pid文件是DNS的PID文件,下面的脚本用于管理域名服务器守护进程:
/etc/sysconfig/named;/etc/rc.d/init.d/named;/etc/logrotate.d/named
/usr/sbin/named-bootconf
域名服务器的启动配置脚本
/usr/sbin/named-checkconf
域名服务器的配置语法检验程序
/usr/sbin/named-checkzone
域名服务器的区域配置文件检验程序
/usr/sbin/dns-keygen
DNS加密密钥生成程序
/usr/sbin/dnssec-keygen
DNSSEC
/usr/sbin/dnssec-signzone
加密密钥生成程序
/usr/sbin/rndc
域名服务器的控制程序,可以使用/etc/rndc.conf文件加载相关配置
/usr/sbin/lwresd
轻量级的解析服务器,可以作为缓冲域名服务器
DNS的主配置文件named.conf:
named.conf是Bind的主配置文件,用于实现Bind的基本配置,但在Bind-9.33安装完毕后,系统并没有自动生成named.conf文件,需要用户自行创建,可以通过以下方法创建named.conf文件:
1.用户可以安装RHEL5的第四张光盘中自带的caching-nameserver-9.33-7.el5.i386.rpm软件包,并根据所生成的文件named.caching-nameserver.conf参考创建named.conf文件。
#rpm–ivhcaching-namesever-9.3.3-7.el5.i386.rpm–replacepkgs(安装依赖于bind-9.3.3-7.el5.i386.rpm)
如果没有创建named.conf文件时,则系统在启动named进程时,默认读取的配置文件为named.caching-nameserver.conf.如果存在named.conf文件,则不再读取named.caching-nameserver.conf文件。
若先安装bind-chroot的情况下named.caching-nameserver.conf文件通常存储于/var/named/chroot/etc目录中,可以将此文件复制一个并改名为named.conf并进行设置(若未使用chroot技术,没有安装bind-chroot-9.3.3-7.el5.i386.rpm软件包,则此文件通常存储在/etc/目录下)。
2..用户可以安装完bind-9.3.3-7.el5.i386.rpm后,参考/usr/share/doc/bind-9.3.3/sample中的配置示例,在虚拟根目录/var/named/chroot下创建相关文件及所需的链接文件,所用命令如下(应先安装bind-chroot-9.3.3-7.el5.i386.rpm):
#rpm–ivhbind-9.3.3-7.el5.i386.rpm
#cd/usr/share/doc/bind-9.3.3/sample/etc/
#cp/usr/share/doc/bind-9.3.3/sample/etc/*/var/named/chroot/etc
#ln-s/var/named/chroot/etc/named.conf/etc/named.conf
#ln-s/var/named/chroot/etc/named.root.hints/etc/naemd.root.hints
#cd/usr/share/doc/bind-9.3.3/sample/var/
#cp-r/usr/share/doc/bind-9.3.3/sample/var/*/var/named/chroot/var/
注:
若使用chroot技术,DNS服务器的主配置文件named.conf应存储在/var/named/chroot/etc目录下,系统还会在/etc/目录下建立一个该文件的链接;区域设置文件(包括正向解析和反向解析)存储在/var/named/chroot/var/named目录下;根服务器信息文件named.root则通常存储在/var/named/chroot/var/named目录下。
(一)named.caching-nameserver.conf文件说明(缓存域名服务器主配置文件):
路径:
/var/named/chroot/etc/下,或/etc/下
//named.caching-nameserver.conf
//ProvidedbyRedHatcaching-nameserverpackagetoconfigurethe
//ISCBINDnamed(8)DNSserverasacachingonlynameserver
//(asalocalhostDNSresolveronly).
//See/usr/share/doc/bind*/sample/forexamplenamedconfigurationfiles.
//DONOTEDITTHISFILE-usesystem-config-bindoraneditor(不应该直接编辑该文件,否则无法升级)
//tocreatenamed.conf-editstothisfilewillbeloston
//caching-nameserverpackageupgrade.
options{
listen-onport53{127.0.0.1;};(侦听端口53)
listen-on-v6port53{:
:
1;};(支持Ipv6)
directory"/var/named";(区域文件存储目录,即bind服务器的工作目录)
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-sourceport53;
query-source-v6port53;
allow-query{localhost;};
};
logging{
channeldefault_debug{
file"data/named.run";
severitydynamic;
};
};
viewlocalhost_resolver{
match-clients{localhost;};
match-destinations{localhost;};
recursionyes;
include"/etc/named.rfc1912.zones";//没有直接在此文件中设置根区域,而是通过加载/etc/named.rfc1912.zones文
件,此文件主要定义了根区域,localdomain区域,localhost区域,及反向解析区域//
};
(说明:
根区域是互联网中所有域名的开始,使用句点(.)表示,缓存服务器只有能够访问DNS根服务器才能担供正常的域名解析服务。
因此,在缓存域名服务器的named.caching-nameserver.conf文件中加载的named.rfc1912.zones文件对根区域进行了设置.此文件中的typehint表示此区域类型是根区域;file"named.ca"设置区域文件名称,该文件保存在bind工作目录/var/named/中)
(二)named.conf文件说明:
此文件需用户自己创建,可从/usr/share/doc/bind-9.3.3/sample/etc中复制到/var/named/chroot/etc/目录下
//Samplenamed.confBINDDNSserver'named'configurationfile
//fortheRedHatBINDdistribution.
//SeetheBINDAdministrator'sReferenceManual(ARM)fordetails,in:
//file:
///usr/share/doc/bind-*/arm/Bv9ARM.html
//AlsoseetheBINDConfigurationGUI:
/usr/bin/system-config-bindand
//itsmanual.
options
{
/*makenameduseport53forthesourceofallqueries,toallow
*firewallstoblockallportsexcept53:
*/
query-sourceport53;
query-source-v6port53;
//Putfilesthatnamedisallowedtowriteinthedata/directory:
directory"/var/named";//thedefault(定义Bind服务器的工作目录)
dump-file"data/cache_dump.db";
statistics-file"data/named_stats.txt";
memstatistics-file"data/named_mem_stats.txt";
};
logging
{
/*Ifyouwanttoenabledebugging,eg.usingthe'rndctrace'command,
*namedwilltrytowritethe'named.run'fileinthe$directory(/var/named).
*Bydefault,SELinuxpolicydoesnotallownamedtomodifythe/var/nameddirectory,
*soputthedefaultdebuglogfileindata/:
*/
channeldefault_debug{
file"data/named.run";
severitydynamic;
};
};
//AllBIND9zonesareina"view",whichallowdifferentzonestobeserved
//todifferenttypesofclientaddresses,andforoptionstobesetforgroups
//ofzones.
//
//Bydefault,ifnamed.confcontainsno"view"clauses,allzonesareinthe
//"default"view,whichmatchesallclients.
//
//Ifnamed.confcontainsany"view"clause,thenallzonesMUSTbeinaview;
//soitisrecommendedtostartoffusingviewstoavoidhavingtorestructure
//yourconfigurationfilesinthefuture.
view"localhost_resolver"
{
/*Thisviewsetsupnamedtobealocalhostresolver(cachingonlynameserver).
*Ifallyouwantisacaching-onlynameserver,thenyouneedonlydefinethisview:
*/
match-clients{localhost;};(本地主机)
match-destinations{localhost;};
recursionyes;(设置允许递归)
#allviewsmustcontaintheroothintszone:
include"/etc/named.root.hints";(载入根服务器信息)
/*thesearezonesthatcontaindefinitionsforallthelocalhost
*namesandaddresses,asrecommendedinRFC1912-thesenamesshould
*ONLYbeservedtolocalhostclients:
*/
include"/etc/named.rfc1912.zones";
};
view"internal"(内部视图)
{
/*Thisviewwillcontainzonesyouwanttoserveonlyto"internal"clients
thatconnectviayourdirectlyattachedLANinterfaces-"localnets".
*/
match-clients{localnets;};(本地网络)
match-destinations{localnets;};
recursionyes;
//allviewsmustcontaintheroothintszone:
include"/etc/named.root.hints";
//include"named.rfc1912.zones";
//youshouldnotserveyourrfc1912namestonon-localhostclients.
//Theseareyour"authoritative"internalzones,andwouldprobably
//alsobeincludedinthe"localhost_resolver"viewabove:
zone"my.internal.zone"{
typemaster;
file"my.internal.zone.db";
};
zone"my.slave.internal.zone"{
typeslave;
file"slaves/my.slave.internal.zone.db";
masters{/*putmasternameserverIPshere*/127.0.0.1;};
//putslavezonesintheslaves/directorysonamedcanupdatethem
};
zone"my.ddns.internal.zone"{
typemaster;
allow-update{keyddns_key;};
file"slaves/my.ddns.internal.zone.db";
//putdynamicallyupdateablezonesintheslaves/directorysonamedcanupdatethem
};
};
keyddns_key
{
algorithmhmac-md5;
secret"use/usr/sbin/dns-keygentogenerateTSIGkeys";
};
view"external"(外部视图)
{
/*This