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

操作方法

  • 01

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

  • 02

    安装bind软件 1.解压[root@~]#tar zxvf bind-9.9.2.tar.gz2.安装[root@~]#./configure –prefix=/usr/local/named –sysconfdir=/usr/local/name/etc –enable-thread3.生成named.conf配置文件[root@~]#/usr/local/src/bind-9.9.2/bin/configen/rndc-configren | tail -10| head -9 |sed ‘s/#\ //g’ > /usr/local/etc/named.conf4.启动和关闭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 https://www.isc.org/support22-Nov-2012 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/named.conf'22-Nov-2012 20:41:30.841 reading built-in trusted keys from file '/usr/local/named/etc/bind.keys'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: 113.0.203.IN-ADDR.ARPA22-Nov-2012 20:41:30.870 automatic empty zone: 255.255.255.255.IN-ADDR.ARPA22-Nov-2012 20:41:30.870 automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA22-Nov-2012 20:41:30.870 automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA22-Nov-2012 20:41:30.870 automatic empty zone: D.F.IP6.ARPA22-Nov-2012 20:41:30.871 automatic empty zone: 8.B.D.0.1.0.0.2.IP6.ARPA22-Nov-2012 20:41:30.878 /usr/local/named/etc/named.conf:7: couldn't add command channel 127.0.0.1#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 library. if [ -f /etc/init.d/functions ]; then . /etc/init.d/functions elif [-f /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions else exit 0 fi named=/usr/local/named/sbin/named prog=named RETVAL=0 #start function start(){ if [-n "'/sbin/pidof $prog'" ] then echo $prog": already running" echo return 1 fi echo "Starting "$prog": " base=$prog $named & RETVAL=$? usleep 500000 if [ -z "'/sbin/pidof $prog'" ] then #The child processes have died after fork()ing REVEL=1 fi if [ $RETVAL -ne 0 ] then echo 'Startup failure' else echo 'Startup success' fi echo return$RETVAL } stop () { echo "Stopping "$prog":" killall$named RETVAL=$? if [ $RETVAL -ne 0 ] then echo "Shutdown failure" else echo "Shutdown success" fi echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; status) status $named RETVAL=$? ;; restart) stop; usleep 500000 start ;; *) echo $"Usage:$prog {start | stop | restart |status}" exit 1 esac exit $RETVAL 2.添加到到开机启动项:chkconfig named add 3.检查开启动项中named启动级别是否on; [root@localhostinit.d]# chkconfig --list ip6tables0:off1:off2:on3:on4:on5:on6:off iptables0:off1:off2:on3:on4:on5:on6:off irqbalance0:off1:off2:off3:on4:on5:on6:off kdump0:off1:off2:off3:on4:on5:on6:off lvm2-monitor0:off1:on2:on3:on4:on5:on6:off mcelogd0:off1:off2:off3:on4:off5:on6:off mdmonitor0:off1:off2:on3:on4:on5:on6:off messagebus0:off1:off2:on3:on4:on5:on6:off named0:off1:off2:on3:on4:on5:on6:off netconsole0:off1:off2:off3:off4:off5:off6:off netfs0:off1:off2:off3:on4:on5:on6:off

  • 04

    Bind服务器配置 Bind的主要配置文件是包括named.conf和相应的区域文件,Bind中的给中配置都是通过修改这些文件来完成的,修改后需要重新启动Bind服务是配置生效。 named.conf配置文件 named.conf是Bind的主要配置文件,里面存储了大量的Bind自身的设置信息。Bind安装完后并不会自动创建该配置文件,用户需要通过命令手工生成,新生成的named.conf配置文件的默认内容如下: named.conf配置文件是由配置语句和注释组成。每条配置语句以分号“;”做为结束符,多条配置语句组成一个语句块;注释语句使用了两个“//”作为注释符。named.conf配置文件中所支持的所有配置语句如表: named.conf支持的所有语句: 其中,常用的配置语句介绍如下: 1.acl语句 acl语句用于定义地址匹配列表,其格式如下: acl acl –name { address_match_list }; Bind默认定义了一些匹配列表,如下 1.controls语句 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 …;] }; 2.include语句 include语句用于把所指定的文件的内容添加进named.conf配置文件中,该语句的格式如下所示: include filename; 3.key语句 key语句用于定义TSIG或命令通道所使用的加密密钥。其格式如下 key key_id { algorithm string; secret string; } 4.options语句 options语句用于设置影响整个DNS服务器的全局选项,该语句在named.conf中只能出现一次。如果没有设置语句,那么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选项用于定义服务器的工作目录,在配置文件中所指定的所有相对路径都是相对于该路径来定义。该目录也是服务器中大部分输出文件(例如name.run)的存储位置。如果没有设置directory,那么系统默认使用”.”(即Bind启动的目录)作为工作目录。一般会把Bind的工作目录设置为/var/named,如下所示: directory “/var/named”; forwarders选项用于指定DNS请求的转发到其他DNS服务器上,该选项默认为空,也就是不进行转发。选项值可以是一个IP地址或主机名,也可以是主机的列表。不同主机IP地址或名称之间使用分号”;”进行分割。如下所示: forwareders {202.102.128.68; 192.168.152.3;8.8.8.8;8.8.4.4;}; 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,则服务器不记录统计信息。 5.server语句 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;] } 6.view语句 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语句定义两个不同的视图,在两个视图中分别定义不同的属性。已达到上述的效果。配置如下: 8.zone语句 zone语句是named.conf文件的核心部分。每一条zone语句定义一个区域,用户可以在这个区域中设置该区域相关的选项。Bind中可以设置多种类型的区域。 不同类型的区域,其zone语句定义的格式也有所不同,下面只介绍最常用的master和hint两种类型的区域的zone语句格式: 加入要定义一个根区域文件,可以如下: zone“.”{ type master; file“named.root”; }; 主DNS区域文件是Bind照哦给你最基本的区域类型,它又可以分为正向解析和反向解析两种,。正向解析就是通过查询域名查询对应的IP地址;而反向解析则是通过IP地址查询对应的域名。 例如:test.com zone“test.com”{ type ;master; file“test.zone”; allow-update [none;]; } Allow-update选项定义了允许对主区域进行动态DNS更新的服务器列表。None表示不运行进行更新。 一般情况下,用户只会进行正向的解析,根据域名来查询对应的IP地址。但是在一起特殊的情况下,也会使用反向解析查询IP地址对应的域名。下面是一个反向解析的例子。 zone“1.168.192.in-addr.arpa” in { type master; file “test.local”; allow-update (none;); }; 1.168.192.in-addr.arpa是该反向解析区域的名称。其中“in-addr.arpa”是反向解析区域名称中固定的后缀格式,.in-addr.arpa左边的部分是由需要解析的IP地址或网段的十进制表示方法逆序字符串。

  • 05

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

  • 06

    正向解析区域文件 正向解析区域文件用于映射域名和IP地址,文件中包含了该区域的所有参数,包括域名、IP地址、刷新时间、重试时间、超时等。下面是一个正向解析的区域文件的例子 第一行的“$ttl1D”用于设置客户端的DNS缓存数据的有效期。该值默认的单位为妙,用户可以明确指定使用H(小时)、D(天)、或W(星期)作为单位。 第二到九行则用于设置该域的控制信息,可以看到,控制信息包括域名、有效时间、网络地址类型等,其格式如下所示: name:定义SOA的域名,以“.”结束,也可以使用@代替 ttl:定义有效时间,如果不设置该值,则系统默认使用第一行中定义的ttl值。 class:定义网络的诋毁子类型。对于TCP/IP网络应设置为IN。 orgin:定义这个域的主域名服务器的主机名,以“.”结尾。 contact:定义该DNS服务器的管理员邮件地址,因此@在SOA记录中有特殊的意义,所以用”.”代替,本例中的root.test.com表示root@test.com。 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服务器为dns.test.com;

  • 07

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

  • 08

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

  • 09

    大功告成,享受成果吧。

(0)

相关推荐

  • Linux下DNS服务器架设攻略

    【IT168 专稿】大家要注意,DNS服务是许多服务的基础,所以一般刚开始学习Linux服务器配置时从此下手,那其它的应用也就简单得多了。笔者进阶学习Linux,也是从此开始的。 一、 相关知识概述 ...

  • Linux下DNS服务器架设攻略 3

    2. 反向域名转换数据文件db.127.0.0和db.192.11.56的建立。 反向域名转换数据文件用来提供根据IP地址查询相应DNS主机名,每个网段分别有一个数据文件。 “127.0.0”这个内部 ...

  • Linux下DNS服务器架设攻略 2

    named 这个主体进程在启动时需要读取一个初始化文件,缺省为 /etc/named.boot。另外建议大家使用Linux自带的ndc工具来进行启动、中止、重启动、刷新DNS数据、输出DNS数据等多种 ...

  • 阿里云Linux下FTP服务器搭配配置

    阿里云服务器是国内目前 最好的一个云服务器了,不过价格方面也比较贵了,下面我们来给各位介绍在阿里云Linux下FTP服务器搭配配置了,大概方法 与linux下搭配ftp服务器区别不大,只是一些小细节了 ...

  • 关于Linux操作系统DNS包卸载和安装方法

    下面给大家详细解答下在Linux操作系统下DNS包卸载和安装方法: [root@linux-tysroot]#rpm-qa|grepbindbind-9.2.1-16--这个版本的DNS不太稳定,所以 ...

  • linux下Samba服务和NFS服务配置的方法

    linux下Samba服务和NFS服务配置 一、Samba服务配置过程 samba的功能很简单,就是为了使linux和windows之间能够实现共享。并且利用samba搭建文件服务器,不仅比windo ...

  • Linux下nfs服务器搭建技巧

    使用linux进行嵌入式开发的时候,为了方便开发,通常是将开发板挂载到宿主机的文件系统上,然后将代码放到共享给开发板的目录中,再通过开发板运行. 首先查看是否安装了 nfs 软件包,yum list ...

  • Linux下DNS服务器安装配置方法详细介绍

    操作方法 01 本文以Red Hat Enterprise Linux AS v4为平台 一.资料参考与准备: DNS 是指:域名服务器(Domain Name Server).在Internet上域 ...

  • LINUX下DNS的查看和配置

    操作方法 01 linux下好像没有专门的DNS查看命令. 用ifconfig命令也是看不到DNS的信息.(也可能是我不知道) 本机的DNS配置信息是在:/etc/resolv.conf [root@ ...