当前位置:常识百科馆>游戏数码>互联网>

Linux下DNS服务器bind的安装、配置和应用

互联网 阅读(1.57W)

操作方法

(01)DNS工作原理1.当要进行域名解析的时候,系统会向本地DNS发出解析请求,由本地DNS服务器解析域名与对应的IP地址。2.本地DNS服务器接收到解析请求后,再自己的本地数据库中查找与请求相匹配的DNS记录条目,如果本地没有相匹配的记录,则本地DNS服务器就会向根域名服务器发出查询请求。3.根域名服务器在接收到查询请求时,会把查询请求发送到相应的顶级域,再由顶级域发送到二级域,再由二级域发送到三级域,以此类推,直到查询到请求的相应记录,然后发送回本地DNS服务器。4.最终由本地DNS服务器把结果返回给客户端。5.如果经过查找后仍然无记录,则由本地DNS服务器向客户端返回无法解析的错误信息。

(02)安装bind软件1.解压[root@~]#tar zxvf 2.安装[root@~]#./configure –prefix=/usr/local/named –sysconfdir=/usr/local/name/etc –enable-thread3.生成配置文件[root@~]#/usr/local/src/bind-9.9.2/bin/configen/rndc-configren | tail -10| head -9 |sed ‘s/# //g’ > /usr/local/etc/4.启动和关闭Bind安装完bind后,可以让bind后台运行[root@~]#/usr/local/named/sbin/named &使用-g参数可以实现显示启动过程中的详细信息。[root@~]#/usr/local/named/sbin/named –g &22-Nov-2012 20:41:30.832 built with '--prefix=/usr/local/named/' '--sysconfdir=/usr/local/named/etc' '--enable-thread'22-Nov-2012 20:41:30.832 ----------------------------------------------------22-Nov-2012 20:41:30.832 BIND 9 is maintained by Internet Systems Consortium,22-Nov-2012 20:41:30.832 Inc. (ISC), a non-profit 501(c)(3) public-benefit22-Nov-2012 20:41:30.832 corporation.  Support and training for BIND 9 are22-Nov-2012 20:41:30.832 available at 20:41:30.833 ----------------------------------------------------22-Nov-2012 20:41:30.833 using 1 UDP listener per interface22-Nov-2012 20:41:30.833 using up to 4096 sockets22-Nov-2012 20:41:30.841 loading configuration from '/usr/local/named/etc/'22-Nov-2012 20:41:30.841 reading built-in trusted keys from file '/usr/local/named/etc/'22-Nov-2012 20:41:30.842 using default UDP/IPv4 port range: [1024, 65535]22-Nov-2012 20:41:30.843 using default UDP/IPv6 port range: [1024, 65535]22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.871 automatic empty zone: 22-Nov-2012 20:41:30.878 /usr/local/named/etc/:7: couldn't add command channel #953: address in use22-Nov-2012 20:41:30.878 ignoring config file logging statement due to -g option22-Nov-2012 20:41:30.879 managed-keys-zone: loaded serial 022-Nov-2012 20:41:30.881 all zones loaded22-Nov-2012 20:41:30.882 running关闭:kill 进程ID号

(03)配置named服务器1.开机自动启动编写bind服务启动关闭的脚本:vi /etc/init.d/named#/bin/bash#Start script for the Berkeley Internet Name Domain Server# chkconfig: 345 35 75# description:BIND is a Name Domain Server# Source function library.. /etc/rc.d/init.d/functions# Source function [ -f /etc/init.d/functions ]; then. /etc/init.d/functionselif [-f /etc/rc.d/init.d/functions ]; then. /etc/rc.d/init.d/functionselseexit 0finamed=/usr/local/named/sbin/namedprog=namedRETVAL=0#start functionstart(){if [-n "'/sbin/pidof $prog'" ]thenecho $prog": already running"echoreturn 1fiecho "Starting "$prog": "base=$prog$named &RETVAL=$?usleep 500000if [ -z "'/sbin/pidof $prog'" ]then#The child processes have died after fork()ingREVEL=1fiif [ $RETVAL -ne 0 ]thenecho 'Startup failure'elseecho 'Startup success'fiechoreturn$RETVAL}stop () {echo "Stopping "$prog":"killall$namedRETVAL=$?if [ $RETVAL -ne 0 ]thenecho "Shutdown failure"elseecho "Shutdown success"fiecho}# See how we were "$1" instart)start;;stop)stop;;status)status $namedRETVAL=$?;;restart)stop;usleep 500000start;;*)echo $"Usage:$prog {start | stop | restart |status}"exit 1esacexit $RETVAL2.添加到到开机启动项:chkconfig named add3.检查开启动项中named启动级别是否on;[[email protected]]# chkconfig --listip6tables0:off1:off2:on3:on4:on5:on6:offiptables0:off1:off2:on3:on4:on5:on6:offirqbalance0:off1:off2:off3:on4:on5:on6:offkdump0:off1:off2:off3:on4:on5:on6:offlvm2-monitor0:off1:on2:on3:on4:on5:on6:offmcelogd0:off1:off2:off3:on4:off5:on6:offmdmonitor0:off1:off2:on3:on4:on5:on6:offmessagebus0:off1:off2:on3:on4:on5:on6:offnamed0:off1:off2:on3:on4:on5:on6:offnetconsole0:off1:off2:off3:off4:off5:off6:offnetfs0:off1:off2:off3:on4:on5:on6:off

(04)Bind服务器配置Bind的主要配置文件是包括和相应的区域文件,Bind中的给中配置都是通过修改这些文件来完成的,修改后需要重新启动Bind服务是配置生效。配置文件是Bind的主要配置文件,里面存储了大量的Bind自身的设置信息。Bind安装完后并不会自动创建该配置文件,用户需要通过命令手工生成,新生成的配置文件的默认内容如下:配置文件是由配置语句和注释组成。每条配置语句以分号“;”做为结束符,多条配置语句组成一个语句块;注释语句使用了两个“//”作为注释符。配置文件中所支持的所有配置语句如表:支持的所有语句:其中,常用的配置语句介绍如下:语句acl语句用于定义地址匹配列表,其格式如下:acl acl –name {address_match_list};Bind默认定义了一些匹配列表,如下rols语句controls语句用于定义rndc工具与Bind服务进程的通信,系统管理员可以通过rndc向Bind进程发出控制命令,并接受由Bind返回的结果。其格式如下:controls {[inet (ip_addr | *) [port ip_addr] allow {address_match_list}Keys{key_list};][inet …;][unix path perm number owner number groupnumber keys {key_list};][unix …;]};ude语句include语句用于把所指定的文件的内容添加进配置文件中,该语句的格式如下所示:include filename;语句key语句用于定义TSIG或命令通道所使用的加密密钥。其格式如下key key_id {algorithm string;secret string;}ons语句options语句用于设置影响整个DNS服务器的全局选项,该语句在中只能出现一次。如果没有设置语句,那么Bind将使用默认的options值,该语句支持的选项特别多,下面是一些常见的选项格式:options{[directorypath_name;][forward (only | frist);][forwarders {[ip_addr[port ip_port];……] };][query-source ((ipv4_addr |*)[port (ip_port |*)] |[address (ipv4_addr| *)][port (ip_port | *)] ); ][query-source –v6( (ip6_addr | *)[port (ip_port |*)] |[address (ip6_addr| *)] |[port (ip_port |*)]);][statistics-interval number ;]};Directory选项用于定义服务器的工作目录,在配置文件中所指定的所有相对路径都是相对于该路径来定义。该目录也是服务器中大部分输出文件(例如)的存储位置。如果没有设置directory,那么系统默认使用”.”(即Bind启动的目录)作为工作目录。一般会把Bind的工作目录设置为/var/named,如下所示:directory “/var/named”;forwarders选项用于指定DNS请求的转发到其他DNS服务器上,该选项默认为空,也就是不进行转发。选项值可以是一个IP地址或主机名,也可以是主机的列表。不同主机IP地址或名称之间使用分号”;”进行分割。如下所示:forwareders {; ;;;};forward选项仅仅在forwareders选项不为空时生效。该选项用于控制DNS服务器的请求转发操作。如果选项值设置为first,则DNS服务器会先把请求发给forwarders选中的指定的远端DNS服务器。如果远端DNS服务器无法响应该请求,则Bind将尝试自行解析该请求;如果选择被设置为only,则bind值转发请求,并不进行处理。query-source和query-source-v6分别设置DNS服务器所使用的Ipv4或者Ipv6以及端口号。默认的端口号为53,如果指定其他端口号,将无法与其他的DNS服务器通信。。statistics-interval选项用于指定DNS服务器记录统计信息的时间间隔,单位为分钟。其默认值为60,最大值为28天(即40320分钟)。如果该选项设置为0,则服务器不记录统计信息。er语句Bind有可能与其他的DNS服务器进行通信,但并非所有的DNS服务器都运行同一个版本的Bind,而且就算安装了相同Bind版本的服务器,它们的设置,软硬件平台都会有所不同。在server语句中可以设置远程服务器的特征信息,以使双方能够正常通信,该语句的格式如下:server_ip_addr [/prefixlen] {[bogusyes_or_no;][provide-ixfryes_or_no;][request-ixfryes_or_no;][edns yes_or_no;][edns-udp-sizenumber;][max-udp-sizenumber;][transfersnumber;][transfer-format(one-answer | many-answers);][keys{string;[string; […]]}; ][transfer-source(ipv4_addr| *) [port ip_port];][transfer-source-v6(ip6_addr|*) [port ip_port]][notify-source(ipv4_addr | *) [port ip_port];][notify-source-v6(ip6_addr | *) [port ip_port];][query-source[address (ip_addr | *) ] [port ip_port|*];][query-srouce-v6[address (ip_addr | *)] [port ip_port | *];][use-queryport-toolyes_or-no;][queryport-pool-portsnumber;][queryport-pool-intervalnumber;]}语句view语句可以使用Bind根据客户端的地址决定需要返回的域名解析结果。也就是说,不同的主机通过同一台DNS服务器对同一个域名进行解析,会得到不同的解析结果。其格式如下:view view_name[class] {match-clients{address_match_list};match-destinations{address_match_list};match-recursive-onlyyes_or_no;[ view_option; …][ zone_statement;…]};每一条view语句定义了一个客户端集合所能看到的视图,如果客户端匹配视图中的match-clients选项所定义的客户端列表,那么Bind将根据该视图返回解析结果。例如,希望对内网和外网用户进行区分,使他们访问同一个域名时,会得到不同的结果。可以通过view语句定义两个不同的视图,在两个视图中分别定义不同的属性。已达到上述的效果。配置如下:语句zone语句是文件的核心部分。每一条zone语句定义一个区域,用户可以在这个区域中设置该区域相关的选项。Bind中可以设置多种类型的区域。不同类型的区域,其zone语句定义的格式也有所不同,下面只介绍最常用的master和hint两种类型的区域的zone语句格式:加入要定义一个根区域文件,可以如下:zone“.”{type master;file“”;};主DNS区域文件是Bind照哦给你最基本的区域类型,它又可以分为正向解析和反向解析两种,。正向解析就是通过查询域名查询对应的IP地址;而反向解析则是通过IP地址查询对应的域名。例如:one“”{type ;master;file“”;allow-update [none;];}Allow-update选项定义了允许对主区域进行动态DNS更新的服务器列表。None表示不运行进行更新。一般情况下,用户只会进行正向的解析,根据域名来查询对应的IP地址。但是在一起特殊的情况下,也会使用反向解析查询IP地址对应的域名。下面是一个反向解析的例子。zone“” in {type master;file “l”;allow-update (none;);};是该反向解析区域的名称。其中“”是反向解析区域名称中固定的后缀格式,左边的部分是由需要解析的IP地址或网段的十进制表示方法逆序字符串。

Linux下DNS服务器bind的安装、配置和应用
Linux下DNS服务器bind的安装、配置和应用 第2张
Linux下DNS服务器bind的安装、配置和应用 第3张
Linux下DNS服务器bind的安装、配置和应用 第4张
Linux下DNS服务器bind的安装、配置和应用 第5张

(05)配置文件e是一个特殊的区域文件,在该文件中记录了Internet上的根DNS服务器的名称和IP地址。DNS服务器接收到客户端发送来的请求后,如果子本地找不到匹配的DNS记录,则把请求发送到该文中所定义的根DNS服务器上即兴逐级查询。由于internet上的根DNS服务器会随时发生变化,因为文件的内容也是不断更新的,所以用户可以到定期到下载最新版本的文件可以看到,在该文件中定义了全球13个根DNS服务器,其中第一列为服务器名,第四列为服务器的IP地址

(06)正向解析区域文件正向解析区域文件用于映射域名和IP地址,文件中包含了该区域的所有参数,包括域名、IP地址、刷新时间、重试时间、超时等。下面是一个正向解析的区域文件的例子第一行的“$ttl1D”用于设置客户端的DNS缓存数据的有效期。该值默认的单位为妙,用户可以明确指定使用H(小时)、D(天)、或W(星期)作为单位。第二到九行则用于设置该域的控制信息,可以看到,控制信息包括域名、有效时间、网络地址类型等,其格式如下所示:name:定义SOA的域名,以“.”结束,也可以使用@代替ttl:定义有效时间,如果不设置该值,则系统默认使用第一行中定义的ttl值。class:定义网络的诋毁子类型。对于TCP/IP网络应设置为IN。orgin:定义这个域的主域名服务器的主机名,以“.”结尾。contact:定义该DNS服务器的管理员邮件地址,因此@在SOA记录中有特殊的意义,所以用”.”代替,本例中的表示。serial:定义区域文件的版本号,它是一个整数值。Bind可以通过它来得知区域文件时什么时间修改的。每次更改区域文件都应该时这个数加一。refresh:定义从DNS服务器在试图检查主DNS服务器的SOA记录之前应等待的时间。该选项以及括号中除了serial以外的其他选项都是以秒为单位,也可以使用M(分钟)、H(小时)、W(星期)等。如果SOA记录不经常改变,可以把这个值设置的大一些。在本例中为3小时。retry:定义从DNS服务器在主DNS不能使用时,重试对主DNS服务器发出请求应等待的时间。通常,该时间不应该超过1小时。在本例中设置为15分钟。expire:定义从DNS服务器在无法与主DNS服务器进行通信的情况下,其区域信息保存的时间。在本例中为一个星期。minimum:当没有定义TTL时,默认使用的TTL值。如果噢玩过的变化不大,那么可以把该值设置的大一些。在本例中为1天。在本例中第10行是DNS的资源记录(NS),指定该域中的DNS服务器名称。其格式如下:[name][ttl]classNSname-server-hostname本例中指定的DNS服务器为;

Linux下DNS服务器bind的安装、配置和应用 第6张
Linux下DNS服务器bind的安装、配置和应用 第7张

(07)反向解析区域反向解析区域文件用于定义IP地址到域名的解析,它采用的与正向借些文件类似的选项和格式,但由于是反向解析,所以该文件是使用PTR指针记录,而不是主机记录。例如:第9~12行定义了用于反向解析的PTR记录,其格式如下所示:[address][ttl]addr-classPTRdomain-name

Linux下DNS服务器bind的安装、配置和应用 第8张

(08)配置实例环境:BBT公司现在要是实现这样的功能:内网用户可以正向解析所有内网的计算机以及外网的服务器,反向解析内网的计算机,允许使用递归查询;外网用户只能正向解析外网服务器,不能借些内外那个计算机。不允许使用递归解析。其局域网的网段为,其中有5台计算机,分为为server1()、server2()、server3()、server4()和server5()。在外网中有3台应用服务器:FTP服务器(主机名为ftp,IP地址为),网站服务器(主机名www,IP地址为)和邮件服务器(主机名mail,IP地址为)此外还有一台DNS服务器,其主机名为dns,内网IP地址为,外网的IP地址为,具体网络拓扑如下图:1.配置为了区分内网网络用户的解析结果,需要通过视图实现。在本例中定义两个试图internal和external,分别对应内部网络和外部网络的用户。在这两个视图中分别定义不同的区域文件,从而实现内外网用户能得到不同的解析结果。定义bind的加密密钥以及mdc间的控制。定义Bind的选项,内网用户所对应的视图以及各个解析域,如下所示:定义外网用户所对应的视图以及相关的解析域,如下所示:1.配置区域文件2.测试结果

Linux下DNS服务器bind的安装、配置和应用 第9张
Linux下DNS服务器bind的安装、配置和应用 第10张
Linux下DNS服务器bind的安装、配置和应用 第11张
Linux下DNS服务器bind的安装、配置和应用 第12张

(09)大功告成,享受成果吧。