您的位置:首页 > 运维架构 > Linux

LINUX下DNS服务器配置

2007-06-07 10:30 411 查看
LINUXDNS服务器的实现
南阳理工学院计算机系马丽 0377-3118343
摘要
虽然符号名对于人来说是极为方便的,但是在计算机上实现却不是那么方便的。为了解决这个需求,应运而生了一个域名服务系统DNS,它运行在TCP协议之上,负责将字符名——域名转换成实际相对应的IP地址。这个过程就是域名解析,负责域名解析的机器就叫域名服务器。
域名解析的方法
1.最早的域名解析方法
  最简单的主机名解析方法是,在一个文件中记录所有主机名及与其对应的IP地址,并保证该文件中主机名的唯一性,通过检索文件中的便可以完成主机名的解析。采用这种最简单的解决方法有其历史原因:
  在整个70年代,APRANET只是一个小规模的,由类似的数百台主机组成的团体。于是为了解决主机名解析的问题,将连接到ARPANET上每台主机的名字与对应的地址都保存在HOSTS.TXT文件中。这样每增加一台机器,就必须修改HOSTS.TXT文件一次。随着网络的不断发展,网络中的主机数量爆炸性地增加,这种域名解析的方法已经无法适应新的解析需要。
2. 分布式的域名服务器
在这种分布式的域名服务器体系中,每一台域名服务器(DNS)负责解析属于自己的这一部分主机的域名。
一般说来,如果你所处在公司或组织所拥有的主机并不多,一般是将域名的解析工作交给自己的ISP的域名服务器来完成。而如果你所在组织拥有的主机比较多,我们就可以组建自己的域名服务器负责解析你所在组织的主机。
通常意义上的DNS服务器有两个层面上的含义:对于一个客户机的用户来讲,DNS服务器就是在tcpip设置中指定的服务器,其是能完成自己的域名解析请求的服务器;对于一个网络管理员来讲,DNS服务器不仅仅意味着能应答局域网用户的解析请求,实现客户机的域名解析的服务器,还是能向互联网提供自己网络域名解析信息的服务器。
对于实现客户解析请求应答的情况来讲,工作原理如下图所示:

对于向互联网提供自己网络域名解析信息情况来讲,工作原理如下图所示:

在Linux服务器下,这两种应用需求是由一个服务器软件—bind实现的。也就是使用该软件可以同时满足第一种和第二种的需求,区别仅仅在于配置文件的设置不同。

域名服务器建立实例
1. 实例环境
  假设我们需要建立一台应用于以下情况的一个主域名服务器。
  1. 拥有一个C类网段地址,为202.102.240.0
  2. 企业域名注册为nyist.net
3. 域名服务器的IP定为202.102.240.65主机名为ns1.nyist.net
4. 校园网通过huwei8016交换机与Internet连接。
  5. 要解析的服务器有:
Proxy68.nyist.net (202.102.240.68) 代理服务器

www.nyist.net     (202.102.240.73) Web服务器

mail.nyist.net    (202.102.240.77) E-Mail服务器

vod.nyist.net     (202.102.240.79)
视频服务器

2 安装前的准备工作
系统是否已安装bind
rpm -q bind
查询已安装Bind的文件列表
rpm -ql bind
BIND可被配置成几种不同的运行方式,通用的BIND配置为纯解析器系统,纯缓存服务器,主服务器,辅服务器.
解析器是指通过域名服务器查询域信息的程序代码,在unix系统中,它是以库例程的方式实现的,而并不是一个单独的客户程序.纯解析器系统很容易配置,只要设置一下/etc/resolv.conf文件.这种方式通常用于由于某些限制不能在本地运行域名服务器软件的系统中
  首先要保证在作为系中统有/etc/resolv.conf和/etc/hosts.conf这两个文件。
  /etc/resolv.conf文件中内容如下所示:
domain nyist.net
nameserver 202.102.240.65
nameserver 202.102.224.68
其中第一行指出对于任何希望连到它上面的主机应该搜寻的域。而后指出了在哪个地址可以找到需要的域名服务大。
当配置解析器库以使用BIND名字服务进行主机查找,你也必须告知它使用哪个名字服务器。对此有一个独立的文件,称为resolv.conf。如果这个文件不存在或是空的,那么解析器就假设名字服务器在你本地的主机上。
  如果在你的本地主机上运行一个名字服务器,你必须单独地设置它。
  resolv.conf中最重要的选项是nameserver,它给出了要使用的名字服务器的IP地址。如果你通过几次给出nameserver选项指定了几个名字服务器,那么它们会以给出的顺序试用。因此,你应该首先给出最可靠的服务器。目前,至多支持三个名字服务器。
  如果没有给出nameserver选项,那么解析器试图连接本地主机上的名字服务器。
  其它两个选项,domain和search涉及到如果BIND不能用第一个请求解析主机名时附加在主机名上的缺省域。search选项指定了一个试用的域名列表。列表项是用空格或制表符分开的。
  如果没有给出search选项,就会通过使用域名本身从本地域名以及直至root的父域中建立一个搜寻列表。本地域名可以使用domain语句给出;如果一个也没有给出,那么解析器就通过系统调用getdomainname(2)来获取。
  /etc/hosts.conf的内容如下所示:
order hosts,bind
multi on
这里的设置告诉主机名称先在/etc/hosts文件中搜索,然后再查询域名服务器。
3. 修改主配置文件“/etc/named.conf” vi /etc/name.conf
// generated by named-bootconf.pl

options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
//query-source address 202.102.240.65 port 53;
};
// a caching only nameserver config
zone "." {
type hint;
file "named.ca";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
zone "nyist.net" {
type master;
file "db.nyist.net";
};
zone "240.102.202.in-addr.arpa" {
type master;
file "db.240.102.202";
};
文件的第一部分option指定域数据文件都存放在/var/name目录下,一般情况不做修改。
  文件第二部分,zone"."定义了根域信息,也就是当域名服务器收到域名查询时,发现客户查询请求时,发现客户希望查询的域名不是本地域名是,它就会查询询/etc/named.ca中定义的根域名服务器,直到最终得到自己希望查询的域名。
文件的第三部分zone "localhost" 和 zone "0.0.127.in-addr-arpa"定义了本地回路的正反向解析,一般不修改。
文件的第四部分是关键,这里设置我们想要的域名。
定义了域nyist.net的相关信息。
  master是指该服务器为主域服务器
  type指定该哉性质
hint指根域
4.cd /var/named
touch db.nyist.net 创建正向解析文件“db.nyist.net”
touch db.240.102.202 创建反向解析文件“db.240.102.202”
cat named.local > db.nyist.net 重定向到正向解析文件“db.nyist.net”
cat named.local > db.240.102.202 重定向到反向解析文件“db.240.102.202
5. 建立正向解析文件 “db.nyist.net”
vi db.nyist.net
; Created Tue Jan 11 00:26:28 PST 2000 by services/ns-admin
; from setup@proxy73.nyist.net
;
@ IN SOA ns1.nyist.net. root.nyist.net. (
947579188 ; Serial Number
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
86400 ) ; Minimum TTL of 1 day

@ IN NS ns1.nyist.net.(ns1为本机计算机名)

nyist.net IN NS 202.102.240.65
localhost IN A 127.0.0.1
//添加主机记录
ns1 IN A 202.102.240.65
proxy66 IN A 202.102.240.66
proxy68 IN A 202.102.240.68
proxy69 IN A 202.102.240.69
proxy72 IN A 202.102.240.72
proxy74 IN A 202.102.240.74
proxy75 IN A 202.102.240.75
proxy78 IN A 202.102.240.78
proxy90 IN A 202.102.240.90
mail2 IN A 202.102.240.76
mail IN A 202.102.240.77
java IN A 202.102.240.71
book IN A 202.102.240.81
book2 IN A 202.102.240.82
book3 IN A 202.102.240.83
telnet IN A 202.102.240.85
proxyiitcc IN A 202.102.240.88
test1 IN CNAME proxyiitcc
freeweb IN A 202.102.240.86
www1 IN A 202.102.240.73
www2 IN A 202.102.240.92
www3 IN A 202.102.240.93
vod IN A 202.102.240.79
vod2 IN A 202.102.240.189
ibmnas IN A 202.102.240.87
lab IN A 202.102.240.84
jwc IN CNAME lab

nyist.net. IN A 202.102.240.77

;CNAME
www IN CNAME www1
proxy73 IN CNAME www1
iitcc IN CNAME www1
hdd IN CNAME www1
gjyj IN CNAME www1
fwb IN CNAME www1
cjy IN CNAME www1
zzy IN CNAME www1
simple IN CNAME www2
todaynet IN CNAME www2
luntan IN CNAME www2
luntanclose IN CNAME www2
softbase IN CNAME www2
science IN CNAME www2
ladder IN CNAME www2
zjjz IN CNAME www2
;hengtian domain
hengtian IN CNAME www3
news IN CNAME www3
army IN CNAME www3
english IN CNAME www3
female IN CNAME www3
dangban IN CNAME www3
qiusuo IN CNAME www3
zlzc IN CNAME www3
digest IN CNAME www3
tuanwei IN CNAME www3
hexin IN CNAME www3
ziliao IN CNAME www3
tengfei IN CNAME vod
vod3 IN CNAME ibmnas
movie IN CNAME ibmnas
mould IN CNAME freeweb
366 IN CNAME freeweb
rose IN CNAME freeweb
wushaoxing IN CNAME freeweb
litie IN CNAME freeweb
wenxue IN CNAME freeweb
mail IN MX 10 mail
mail2 IN MX 20 mail2
1。SOA是主服务器一定要设置的命令,通常入在第一行
  2。最前面的符号“@”代表目前所管辖的域。 “IN”代表地址类别,这里就是固定使用“IN”的。
3。填入域名服务器,记住由于DNS数据文件的特殊格式规定,在最后一定要加上“·”我们填入ns.nyist.net.
4.域名服务器管理员的E-MAIL地址,但要注意的是,E-Mail地址中的分隔符“@”在这里用“·”来代替,在最后也要加上“。”,在这里,我们相应写入:“root.nyist.net
5. 接下来在括号内填上各种选项:
  文件版本号:当你修改这个文件的内容时,也要修改这个版本序列号。以此来区分是否有更新。
  更新时间:指定二级服务器向主服务器拷贝数据的更新时间周期。
  重试时间:指定二级服务器在更新出现通信故障时的重试时间。
  终止时间:指定二级服务器重新执行更新动作后仍然无法完成更新任务而终止更新的时间。
  生存时间:指定当域名服务器询问某个域名和其IP地址后,在域名服务器上放置的时间。
  注:二级服务器所设定的域名服务器是主服务器的备份主机。
  2. 在第二行中,我们用NS命令指定这个域的域名服务器。在这里我们指出这个域的域名服务器是“ns1.nyist.net”。
3. 接下来我们使用A命令来指定域名与IP地址的对应关系。  
4. 然后,我们使用了CNAME命令指定别名记录以供使用。
5.最后,我们指定了邮件交换器记录。
6. 建立反向解析文件“db.240.102.202”

反向域名转换数据文件用来提供IP地址查询相应的DNS主机名,每个网段分别有一个数据文件。
文件内容如下:db.240.102.202

; Created Tue Jan 11 00:26:28 PST 2000 by services/ns-admin
; from setup@proxy73.nyist.net
;
@ IN SOA ns1.nyist.net. root.nyist.net. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns1.nyist.net.

1 IN PTR localhost.
65 IN PTR ns1.nyist.net.
66 IN PTR proxy66.nyist.net.
69 IN PTR proxy69.nyist.net.
68 IN PTR proxy68.nyist.net.
76 IN PTR mail2.nyist.net.
77 IN PTR mail.nyist.net.
72 IN PTR proxy72.nyist.net.
73 IN PTR www1.nyist.net.
74 IN PTR proxy74.nyist.net.
75 IN PTR proxy75.nyist.net.
81 IN PTR book.nyist.net.
88 IN PTR proxyiitcc.nyist.net.
92 IN PTR www2.nyist.net.
93 IN PTR www3.nyist.net.
78 IN PTR proxy78.nyist.net.
90 IN PTR proxy90.nyist.net.
71 IN PTR java.nyist.net.
79 IN PTR vod.nyist.net.
89 IN PTR vod2.nyist.net.
84 IN PTR lab.nyist.net.
86 IN PTR freeweb.nyist.net.
87 IN PTR vod3.nyist.net.

启动DNS服务器
  启动dns服务器可以使用命令:ndc start,若输出结果为”new pid is 2317”,若输出错误,则需要查看上面的配置文件是否正确设置。这时,使用命令”ps ax|grep named” 应该输出:
2317 ? S 0:00 /usr/sbin/named
2319 pts/0 S 0:00 grep named
  停止dns服务器进程的命令为:ndc stop。
  也可以使用命令/etc/rc.d/init.d/named start|stop来启动或关闭某个服务。
  若需要在启动时自动启动DNS服务器,则使用命令:
/sbin/chkconfig –level 35 named on
  若需要关闭自动启动DNS服务器,则使用命令:
/sbin/chkconfig –level 35 named off

测试域名服务器
  8.3.1 使用nslookup测试
  nslookup命令的功能是查询域名服务器中的数据资料。下例就是使用它来测试域名服务器是否架设成功,其中斜体字代表要输入的内容。
# nslookup
Default server:ns1.nyist.net
Address:202.102.240.65 ;能出现这些信息代表成功>
  8.3.2 使用ping测试
  还有一种更简单的测试方法,那就是用ping命令,如果成功将显示:
# ping www.nyist.net
Ping www1.nyist.net(202.102.240.73);56 data bytes64 bytes from
202.102.240.73:icmp_seq=0 ttl=255 time=1.3ms64 bytes from
202.102.240.73:icmp_seq=1 ttl=255 time=0.6ms64 bytes from
202.102.240.73:icmp_seq=2 ttl=255 time=0.6ms……
小技巧
  安装好域名服务器后,在内部使用域名进行远程连接时,会发现速度非常慢。其实只要/etc/hosts中加上所有内部的机器的域名就可以了。
辅服务器
辅服务器从主服务器上获取域信息的完整拷贝.也能以授权方式回答有关域的查询.我们用' nyist.net'作为例子,我们需要五个基本配置文件:
创建或修改主服务器上的/etc/named.conf:
在options {
};
之间加入allow-transfer{202.102.240.x;} (202.102.240.x为辅助DNS服务器的IP)
/etc/named.conf
/var/named/named.ca
/var/named/named.local
创建或修改/etc/named.conf:
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};
zone '.' {
type hint;
file "named.ca";
};
zone '0.0.127.in-addr.arpa' {
type master;
file "named.local";
};
//there are our slave zone files
zone "nyist.net" {
type slave;
file "db.nyist.net";
masters {202.102.240.65;};
};
zone '0.16.172.in-addr.arpa' {
type slave;
file 'db.240.102.202';
masters {202.102.240.65;};
};
  在文件中'masters {202.102.240.65;};'其中的IP地址是你网络中主服务器的IP地址.
从主服务器上拷贝/var/named/named.ca和/var/named/named.local这两个文件.
从主服务器上拷贝/var/named/db.nyist.net和/var/named/db.240.102.202文件。
  实际运行的服务器可以是以上其中一种配置,也能同时包含多种配置.但所有的系统都应该运行解析器.
纯缓存服务器
  纯缓存服务器运行域名服务器软件,但并没有域名服务器数据库文件,它记录下每一个从远程域名服务器获得的数据,以回答将来对同一信息的查询.
  纯缓存服务器所需的三个基本配置文件:
/etc/named.conf
/var/named/named.ca
/var/named/named.local
如果是用rpm封装的软件包安装的话,这三个文件会自动生成,我们只需要修改/etc/named.conf.其中/var/named.ca一般是不用修改的.
创建或修改/etc/named.conf:
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
forwarders {172.16.0.1;172.16.0.11;};
};
zone '.' {
type hint;
file "named.ca";
};
zone '0.0.127.in-addr.arpa' {
type master;
file "named.local";
};
在文件中'forwarders {202.102.240.65,202.102.240.x.;};'其中的IP地址是你网络中主服务器和辅服务器的IP地址

创建或修改/var/named/named.local
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
创建或修改/var/named/named.ca:
至于/var/named/named.ca就要从redhat linux光碟获得了.也用命令从互联网上获得:
dig @.aroot-servers.net.ns > /var/named/named.ca
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: