由于Linux出色的可靠性,我们可以放心地在Linux上运行当今Internet时代所必需的各种重要服务程序。由此,Linux最普遍的一些用途包括用作邮件服务器、Web服务器以及DNS服务器。

一、 假定
许多DNS的文章都是从DNS原理开始介绍,本人则从使用的角度出发,为Linux的管理员提供一些简单实用的应用实例。
下面假定我们需要建立一台企业网的DNS主服务器,应用条件如下:
(1) 一个C类网段地址 (本例中假定是192.22.33)
(2)企业域名为 my.com,并已注册 (主域名服务器地址
192.22.33.20,主机名为 linux.my.com)
(3)企业网通过路由器与Internet连接
假如你的应用环境与上述条件不同,也请往下看,本文会在上述例子的基础上针对以下情况作修正:
(1) 多个网段
(2) 封闭的内部网
(3) 只能访问局部公共网的情况(如169网、上海热线等)
二、named、/etc/named.boot 和 ndc
DNS 服务器的主体是域名服务器进程 named ,named
启动后向DNS客户机提供域名解析服务,把域名转换成IP地址。
named 启动时需要读取一个初始化文件,缺省情况下是
/etc/named.boot,所以/etc/named.boot 是 named 的基本配置文件。
虽然启动 named 可直接执行 named,在Linux上我们可以使用一个控制 named
的工具 ndc。ndc
可以用于启动、中止、重启动、刷新DNS数据、输出DNS数据等多种调试功能,我在这里推荐大家用这个工具来帮助
DNS 服务器的调试。
有关 ndc 的详细用法,请参看 Linux 有关文档。
三、建立 named 配置文件 /etc/named.boot
/etc/named.boot 是基本的配置文件,但不包含任何 DNS
数据,针对我们前面的假定,我们先建立以下 /etc/named.boot,其内容如下:
;
; boot file for name server
;
directory /var/named
primary my.com db.my
primary 0.0.127.IN-ADDR.ARPA db.127.0.0
primary 33.22.192.IN-ADDR.ARPA db.192.22.33
cache . db.cache
其中以“;”开头的行是注释行,其他各行含义是
(1)diretory /var/named
指定 named 从 /var/named 目录下读取 DNS
数据文件。这个目录用户可自行指定并创建,指定后所有的DNS
数据文件都存放在此目录下。
(2)primary my.com db.my
指定 named 作为 my.com 域的主域名服务器,db.my 文件中包含所有 *.my.com
形式的域名转换数据。
(3)primary 0.0.127.IN-ADDR.ARPA db.127.0.0 指定 named
作为127.0.0网段地址转换主服务器,db.127.0.0 文件中包含了 127.0.0.*
形式的地址到域名的转换数据。(127.0.0网段地址是局域网接口的内部 loopback
地址)
(4)primary 33.22.192.IN-ADDR.ARPA db.192.22.33 指定 named 作为
192.22.33 网段地址转换主服务器,db.192.22.33 文件中包含了所有
192.22.33.* 形式的地址到域名的转换数据。
(5) cache . db.cache
指定 named 从 db.cache 文件中获得 Internet
的顶层“根”服务器地址要注意(3)(4)两行中的网段地址是倒写的,另外,各个文件名也是可以自行决定的。图片 1

一 如何在Linux上建立DNS服务器:环境的假定

Linux
DNS服务器上使用转发器最主要的就是修改配置文件即可:绿色字体可有可无。

理论上来说,Linux平台上的DNS主要区域可以作为Windows平台上DNS的辅助区域,而反之也成立。我不知道是否有人已经做过这样的实验,但是我今天实验了一下,相当成功!结果我得出结论:Linux平台的DNS
server可以和Windows平台的DNS交互,而且配置起来也相当简单。

下面我们将研究怎样在Red Hat
Linux上使用BIND建立一个DNS服务器。BIND(Berkeley Internet Name
Domain)是一个在UNIX/Linux系统上实现的域名解析服务软件包。我们将学习在Linux上建立和运行一个DNS服务器所需的安装、初始配置以及系统设置等步骤。

1两台机器,一台LINUX,机器名为LINUX,域名为tongqiang.cnIP地址为192.168.0.5,另一台机器为WIN98,机器名为tongqiang,IP地址从LINUX上DHCP服务器上获得。

vi /etc/named.caching-nameserver.conf

实验拓扑:两台计算机,一台是Red Halt Linux系统,一台是Windows server
2003系统。

在本文中我们用Red
Hat作为示例,所以你也许希望使用BIND的RPM版本,可以通过搜索www.rpmfind.net找到它,因为使用RPM形式的发行包是安装
BIND最简便的方法。下载了BIND的RPM之
后,比如bind-9.1.0-10.i386.rpm,需要以超级用户的身份执行rpm -ivh
bind-9.1.0-10.i386.rpm命令。在RPM安装BIND时要注意检查任何能够导致安装失败的缺失的依赖关系。


建立DNS服务器
假设你的DNS软件包已经安装好了,而且是在安装LINUX是选择安装DNS服务器的)

options {
       listen-on port 53 { 192.168.1.128; };
       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;
       forward first;
       forwarders     { 210.21.4.130; };
       allow-query    { any; };
};
logging {
       channel default_debug {
               file “data/named.run”;
               severity dynamic;
       };
};
view localhost_resolver {
//     match-clients     { localhost; };
//     match-destinations { localhost; };
       recursion yes;
       include “/etc/named.rfc1912.zones”;
};

一、Linux搭建DNS正向主要区域,Windows作它的辅助区域

如果你更愿意从源码包安装的话,在下载如bind-
9.1.3.tar.gz这样的文件之后需要以超级用户身份运行tar xvfz
bind-9.1.3.tar.gz命令对它进行解压。就本例而言会生成一个名为bind-9.1.3的目录,它包含了进行安装所必需的所有文件。下一
步,进入这个新创建的目录然后执行./configure命令,在脚本程序完成所有配置工作后,运行make,接着运行make
install完成安装过程。现在在你的系统中应该已经安装好了基本配置的BIND,接下来要根据需要对它进行调整。

建立DNS服务器只需要修改以下几个文件。

图片 2

Linux做如下配置,IP:192.168.1.11   首选DNS server:192.168.1.11

配置BIND

1 named.boot或named.conf
(说明:在RedHatlinux5.2以下的版本需要修改named.boot,在RedHatlinux5.2以上的版本需要修改named.conf.

图片 3

当系统中安装好BIND之后,你就可以把它配置成多种方式。最常用的两种之一是使用ISP类型的设置,DNS服务器接受并解析来自任何人的请求
(或者一组预先定义的用户);另一种是Web主机方式,服务器只解析对服务域名的请求。当服务器的用途改变时,你也可以随时改变配置的类型。

修改内容如下:前面有;表示注释)

图片 4

DNS服务器既可以是主控服务器也可以是辅助服务器。主控服务器也称为主服务器,是判定域名的最终来源。主控服务器同时也是传送到辅助服务器的
区传送(zone
transfer)的源头。辅助服务器接收所有来自主控服务器的区信息。一个常见的错误是试图改变二级服务器上的区数据库文件而没有改变主控服务器上的区
数据库文件(zone
file)。为什么要两个服务器呢?在任何配置中使用冗余都是一个好主意,这是BIND和DNS的一个原生部分。幸运的是,在机房中增加第二台Linux
机器作为辅助DNS服务器一般来说不会影响你的预算。

;boot file for name server

按/etc/init.d/network restart重启Linux网卡

要记住当有两种类型的服务器时,主控服务器也可以同时担当其他域的辅助服务器。在大多数ISP环境当中都可以看到这种情形,客户拥有自己的主控
DNS服务器,同时又出于备份的目的把ISP当作二级服务器。这种类型的配置以及BIND中几乎所有的其他配置项都是通过named.conf文件完成
的。这个文件以纯文本的形式存放各服务器信息和区信息。如表A所示。

directory /var/named
(指明从/var/named目录下读取DNS数据库文件,如正向解析文件,反向解析文件,本地文件,cache
文件都在此目录下)

确保该Linux服务器上安装了BIND软件,然后,cd命令进入

named.conf 文件示例

primary tongqiang.cn tongqiang.cn.db
(指明主DNS服务器的解析的域是tongqiang.cn,DNS数据库文件是tongqiang.cn.db)

cd /var/named/chroot/etc

options {  notify-source 10.0.0.2;  pid-file "/var/run/named.pid";  };  zone "." {  type master;  file "root.db";  };  zone "example.com" {  type master;  file "/var/named/sample.com.zone";  }; 

primary 0.0.127.in-addr.arpa db.127.0.0.0
(指明解析内部地址转换的DNS数据库文件)

拷贝模板文件,注意加-p参数保证权限

DNS服务器有多种可用的选项,如果你需要某种特殊的安装方式,我建议你通读一遍附带的文档。上面的例子中notify-source指明服务
器把区变动通知(NOTIFY)消息发送到什么地方,当主控服务器检测到区数据库文件发生变动时就会向辅助服务器发出这样的消息。pid-file选项只
是告诉守护进程(daemon)服务器写入ID信息的路径,通常是/var/run/named.pid,但如果你重新设置了目录的布局的话也可以根据需
要对其进行更改。

primary 0.168.192.in-addr-arpa db.0.168.192指明反向解析DNS数据库文件)

图片 5

上面的例子中第一个区登记项用来通知BIND在何处定位根服务器的信息。服务器发送和接收的不仅是你自己的域信息同时也包括Internet上所有的域信
息。并不是每个服务器上都有每个域名的登记项,但每个服务器都知道怎样获取信息。当然,由于列表会定期更新,所以也应当定期作记录。

cache . db.cache (指明从internet获取“根”服务器的地址文件)

用vim编辑器编辑刚刚拷贝好的named.conf文件,内容如图,注意,一定要有allow-update(允许区域传输),不然,就做不成辅助区域了。大括号内写的是Windows服务器的IP地址(待会,设置Windows服务器IP的时候,一定要和大括号内的IP相同)

在named.conf示例文件中第二个区登记项是一个”主控”域项,意思是这个DNS服务器保存着example.com的有效信息,
Internet上其他所有的DNS服务器都将用它来参照任何与这个域相关的信息。Example.com项引用/var/named
/sample.com.zone这个文件。这是一个纯文本文件,它告诉DNS服务器所有有关example.com的信息,包括serial值、刷新
率、所有的DNS纪录以及其他一些项目。表B显示了这个区数据库文件的示例。

三 分别建立各个数据库文件

图片 6

DNS区数据库文件示例

1 建立正向解析DNS数据库文件,进入目录/var/named

然后,cd /var/name/chroot/var/named 
新建一个benet.com的文件,作为该主要区域的解析文件,然后里面写上主机记录,如下图

@ IN SOA ns1.sample.com. (  200101111 ;serial  14400 ;refresh after 4 hours  3600 ;retry after 1 hour  604800 ;expire after 1 week  86400) ;minimum TTL of 1 day  ;  ;Nameservers  ;  IN NS ns1.sample.com. ;  IN NS ns2.sample.com. ;  ;  ;Domain Mail Handlers  ;  sample.com. IN MX 10 mail  ;  ;Hosts in order  ;  www IN A 212.204.219.71 ftp IN A 212.204.219.71 mail IN A 212.204.219.71 pop IN CNAME mail 

vi tongqiang.cn.db

图片 7

SOA是Start of
Authority的缩写,所有区文件都要以它打头。顺序号(serial)使服务器能够纪录所进行过的各次更新,守护进程最近一次启动后只要数字出现了
增长,它就会重新把信息读入到数据库中去。举例来说,你可以从0开始然在每次更新之后加让一个数字,也可以使用日期项如200101111。这很有用,因
为它让你能够看最近的一次更新的发生并且看出一天是否发生过多次更新。接下来的四行以秒的形式处理刷新和超时周期,如果BIND数据库没有发生过人工或者
服务器范围的刷新,服务器会自动的重新读入信息。不需要经常改变此处所列出的数值,只有由于某种原因域非常频繁地改变它们的信息时才需要对这些数值进行更
改。接着列出的是域名,这样BIND就会知道是谁控制整个域。

(以下文件的内容)

保存以后,按/etc/init.d/named
restart重启DNS服务,然后在Linux上面用nslookup验证,一定要保证成功才能去windows上面做辅助区域,成功后显示下图的样子

接着列出的是MX纪录,,它使服务器知道当有邮件信息请求sample.com时应当发出什么信息,在本例中,mail.samle.com的优先级是
10。你可以列出多个MX纪录作为邮件服务器的备份。数字越小优先级越高。要注意的是还有一个相应的A纪录给出了mail.sample.com的IP地
址,这是必不可少的,这样DNS服务器就可以知道怎样根据域直接把邮件请求发往何处。一个A纪录仅仅是把IP地址赋给一个子域项,如www、mail、
ftp或者ns,这些都必须用上面的格式录入,而且必须与一个IP地址相关联。比如说,当某个用户请求www.sample.com时,他将会被指向该域所在的Web服务器的IP地址
212.104.219.71。

@ IN SOA linux.tongqiang.cn . root.linux.tongqiang.cn . (199511301

图片 8

上面的例子中还有一个CNAME项,CNAME是指canonical
name,用于指定IP地址的别名,使用这些别名时还是要回过头参考已经使用过的A纪录。

28800

图片 9

辅助服务器部分看过name.conf中的主控服务器部分后我们再来看看辅助服务器部分:

7200

zone "sample2.com" {  type slave;  file "/var/named/sample2.com.zone";  master { 10.0.0.1; }; 

3600000

最主要的两个区别一是type项,它既可以是master也可以使slave,二是IP地址指定的是主控DNS服务器。其他的都和Master
项相同。

86400)

启动BIND

NS linux.tongqiang.cn.

用于启动DNS服务的程序是named,读作”name
D”。你可以通过执行/etc/rc.d/init.d/named
start命令来运行这个程序。如果服务器已经处于运行状态,你可以用restart命令。这个脚本程序应该是在安装时放进正确的目录中的,它在启动时运
行以初始化服务器。你总是应当用ps
aux命令检查一下named是否已经运行,这个命令会列出当前所有进程的清单。

Mx 10 support.tongqiang.cn

本文来源已不可考,如果您是本文作者或知道本文作者是谁,请邮件联系本文编辑,谢谢!

Localhost A 127.0.0.1

Linux A 192.168.0.5

WWW CNAME linux.tongqiang.cn.

如何在Linux上建立DNS服务器:环境的假定
1两台机器,一台LINUX,机器名为LINUX,域名为tongqiang.cnIP地址为192.168.0.5,另一台机器为WIN98,机器…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图