|
楼主 |
发表于 2003-9-15 17:42:03
|
显示全部楼层
下面是我在linuxsir的帖子,转过来:)
最初由 faint 发表
DNS服务是许多服务的基础,既然已经把Mandrake Linux系统架起来了,首要的任务就是要着手配置DNS服务。刚开始的时候,不知道如何配置,就在网上大量找相关的资料,阅读后,不管是照样办还是修改,我都没有成功,faint哦,辛苦了两天,还要没有把它搞掂,没有办法,只能一切从头开始,就本系统本身着手。发现,Mandrake linux和其它的发行版本是有区别的,下面说说我的DNS的配置过程吧。虽然,你可以用前端的界面dnsconf来配置,但对于新手来说,用这个工具不知道在什么地方发生了变化。由于我的DNS是用在局域网中,还没有连接Internet,仅仅限于局域网中为各个部门的各主机及服务器作解析用。
1、网络情况:
a、拥有一个C类网段,地址为192.168.1.0;
b、域名pk.org,没有注册;
c、服务器的IP为192.168.1.1,主机名为huang.pk.org,它同时充当www、ftp、mail、和samba服务器。
2、配置文件:
/etc/named.conf 来自caching-nameserver-9.0-2mdk的rpm包,需要修改;
/etc/resolv.conf 系统自带,需要修改;
/var/named/pk.zone 自已创建;
/var/named/pk.reversed 自已创建;
/var/named/named.local 来自caching-nameserver-9.0-2mdk的rpm包,一般不要修改
/var/named/named.ca 来自caching-nameserver-9.0-2mdk的rpm包,一般不要修改;
注意,自己创建的文件你可以自己给它命名。其中的作用是用来定义域信息民,实现主机到地址间的镜像,识别mail、www、ftp、samba服务等和提供域名信息。主要的作用总之就是named2ip的作用;而pk.reversed是一个反向解析的作用,实现IP地址到域名的映射。
如果你没有装上相关的rpm包,你可以查下:
#rpm -qa | grep bind
bind-devel-9.2.1-4mdk
samba-winbind-2.2.6-1.0.pre2.2mdk
bind-utils-9.2.1-4mdk
bind-9.2.1-4mdk
这几个rpm的作用就不说了,你自己看看它的内容就会知道是什么东西。
3、named的配置文件/etc/named.conf
在Mandrake系统中named的配置文件是/etc/named.conf.我们知DNS服务器的主体应该是域名服务器进程named,named启动后向DNS客户机提供域名解极服务,把域名转换成IP地址。在bind8以前,默认的配置文件是/etc/named.boot,后来在bind8以上的版本,默认的配置文件就是/etc/named.conf了,它通常只包括一些指向DNS信息源的信息,其中某些源是可以本地的文件,而其它的源信息则是远程服务器。下面的/etc/named.conf的具体情况:
#cat /etc/named.conf
// secret must be the same as in /etc/rndc.conf
// 密钥必须与和/etc/rndc.conf一致
// /etc/rndc.conf文件的情况,你可以看看它内容,或者man rndc.conf的EXAMPLE。
key mykey {
algorithm hmac-md5;
secret "IriCelUSbPMypSjImBsiTHMauOumRPMkdBjoxVINAx0vxJZNRKGWzFCKibad";
};
controls {
inet 127.0.0.1 port 953
//本地的端口我用了953。
allow { 127.0.0.1; } keys { mykey; };
};
options {
directory "/var/named/";
//指定named从/var/cache/bind目录下读取DNS数据文件。
//目录用户还要自行指定并创建,所有的DNS数据文件都存放在此目录下,而且要注意
//其所有权者为named
pid-file "/var/run/named/named.pid"; // Put pid file in working dir
//named.pid文件的地方,也要注意其目录的要限,为named所有。
auth-nxdomain yes;
};
//指定named从/var/named/named.ca文件中获得Internet的顶层“根”服务器地址。
zone "." {
type hint;
file "named.ca";
};
//指定named作为127.0.0.网段地址的转换主服务器,named.local文件包
//含了所有127.0.0.*形式的地址到域名的转换数据。127.0.0.网段
//主要是作为局域网接口的内部回环地址。
//注意:网段地址是倒写的,区域使用数据文件的文件名可自行决定的。
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};
//指定named作为pk.org域的主域名服务器,pk.zone文件中包含有所
//有*.pk.org形式的域名转换数据。
zone "pk.org" {
type master;
file "pk.zone";
allow-update { key mykey; };
};
//指定named作为192.168.1.0网段地址的转换主服务器,pk.reversed
//文件包含了所有192.168.1.*形式的地址到域名的转换数据。
zone "1.168.192.in-addr.arpa" {
type master;
file "pk.reversed";
allow-update { key mykey; };
};
这个文件是相当重要的,如果你还不太懂其中的细节,你一定要看看info named.conf或man named.conf。但是要注意其中的注释式样,这个你可以在info named.conf中有具体的说明。据我了解。它所指的意思应该是是这样:
; 这是bind 4.x的注释,前面用分号;
//从bind 8往后,有三种注释符号可以用: C样式, C++样式, 或者Shell Script样式:
/*是C样式的注释符号 */
//是 C++样式的注释符号
#是Shell Script样式的注释符号
这些可能会涉及到后面的一些相关的文件。其中在一部分你可以从注释中了解到。
总之:/etc/named.conf这个文件是通知named从那里寻找文件,其后命名的文件都是相对于此目录的。这文件通知named去维持一个域名服务器响应的高速缓存,并利用named,ca文件的内容去初始化该高速缓。
4、区域数据文件:
这些区域数据文件在/var/named目录下
#ls /var/named/
named.ca
named.local
pk.reversed
pk.zone
4.1、/var/named/named.ca文件
这个文件是系统自带的,一般都不动它。你看看它的内容就知道是怎么样一回事了。
4.2 /var/named/named.local文件
#cat /var/named/named.local
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
这个文件的作用就是解析本地回环地址,即127.0.0.1,回环地址量种特殊的约定,它允许处理本地计算机地址时,与处理远程地址的方法一样,这样可以简化处理过程,而不必将数据发送到物理网络上。其中SOA记录将localhost标识为开创该区的服务器。
4.3 /var/named/pk.zone文件
# more /var/named/pk.zone
$ORIGIN .
$TTL 86400 ; 1 day
pk.org IN SOA huang.pk.org. root.huang.pk.org. (
2001042703 ; serial(序列号)
86400 ; refresh (刷新周期,1 day)
21600 ; retry (循环周期,6 hours)
3600000 ; expire (中止时间,5 weeks 6 days 16 hours)
3600 ; minimum (time-to-live的时间,1 hour)
)
NS huang.pk.org. ;(定义域名服务器同,带域名的主机名后必须带一个“.”)
MX 10 huang.pk.org. ;(定义邮件服务器,10表示优先级,越小越高,带域名的主机名后必须带一个“.”)
$ORIGIN pk.org. ;(实现域到IP的映射)
$TTL 86400 ; 1 day
localhost A 127.0.0.1
huang A 192.168.1.1
ly A 192.168.1.253
liang A 192.168.1.250
www A 192.168.1.1
ftp A 192.168.1.1
mail A 192.168.1.1
这个文件包括了应该pk.org域内所有主机节点。(我只列出了一小部分)。如果这个域的主机的节点很多时,可以先放几台进入,然后慢慢调试,到调试好后,再往里面加上其它的主机节点。注意,这里面的注释是以;形式出现的。
其中的第一行的$ORIGIN .你可以通过man named.conf来看看。下面是我摘录了其中的一段,它应该和/etc/named.conf密钥那段有关吧。
Definition and Usage
The trusted-keys statement is for use with DNSSEC-style security, origi-
nally specified in RFC 2065. DNSSEC is meant to provide three distinct
services: key distribution, data origin authentication, and transaction
and request authentication. A complete description of DNSSEC and its use
is beyond the scope of this document, and readers interested in more
information should start with RFC 2065 and then continue with the Inter-
net Drafts available at http://www.ietf.org/ids.by.wg/dnssec.html.
Each trusted key is associated with a domain name. Its attributes are
the non-negative integral flags, protocol, and algorithm, as well as a
base-64 encoded string representing the key.
Any number of trusted keys can be specified.
$TTL 86400 ;1 day 存活时间吧。
第三行是是 SOA 记录,定义了域名数据的基本信息,依次是 DNS 服务器名、DNS 管理员邮件地址(用.代替了@),这一行也等于:
@IN SOA huang.pk.org. root.huang.pk.org. (
括号内的第一个数字是文件版本号(一般当天时间和修改次数来组成),每次本文件内容修改后,必须更改此号。其余数字与DNS服务器直接的数据交换有关,在这里我们不需要改动。后面的那些数字都是以秒来计的。
括号后面有一条NS记录和一条MX记录,定义了域名服务器本身的域名和[email protected] 形式邮件地址所对应的邮件服务器名字。
在此以下是各种域名/地址转换数据,其中A记录是DNS域名到IP地址的记录,是必须有的。因为前面的域已经定为了pk.org.,所以huang.pk.org可以简定为huang,它的IP为192.168.1.1是。我们看www和ftp的IP都是192.168.1.1,因此它可以认为huang.pk.org的别名.后面的三项还有用CNAME的写法,
比如:
www CNAME huang.pk.org.
ftp CNAMW huang.pk.org.
mail CNAMW huang.pk.org.
CNAME可定义了一些主机的别名,比如我们将huang.pk.org作为的www和ftp服务器,所以我们提供了www.pk.org和ftp.pk.org作为hua ... �影响。注意: CNAME 记录最后的带域名的主机名后必须带一个“.”。
4.4 /var/named/pk.reversed文件
#more /var/named/pk.reversed
$ORIGIN .
$TTL 86400 ; 1 day
1.168.192.in-addr.arpa IN SOA huang.pk.org. root.huang.pk.org. (
2001042702 ; serial
28800 ; refresh (8 hours)
14400 ; retry (4 hours)
3600000 ; expire (5 weeks 6 days 16 hours)
86400 ; minimum (1 day)
)
NS huang.pk.org.
$ORIGIN 1.168.192.in-addr.arpa.
$TTL 3600 ; 1 hour
1 PTR huang.pk.org.
253 PTR ly.pk.org.
250 PTR liang.pk.org.
;所有主机都写在这儿!
这是一个反向解析的文件,作用就是实现IP到域名的映射。反向DNS数据文件中的主要部分是PTR记录,PTR记录中的IP地址都只有主机号,named会根据 named.conf 的定义自动加上前面的网络号,注意后面的主机名要附加一个“.”
1 PTR huang.pk.org. 这一行定义逆向关系,即192.168.1.1与pk.org之间的映射,它出以用作定义一个反转域。
其它的不用解释了吧。
另外,还有其它的两个文件:
5、/etc/hosts文件
此文件的作用是实现与Internet其它主要计算机的映射,它通常是当作DNS的备份出现的。也就是说,当DNS系统出现问题的时候才使用hosts文件。
#more /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.1 huang.pk.org huang
192.168.0.1 huang.sfserver huang
注意,每台服务器者都会有几个域名与IP的对应关系是永久的。所以hosts文件存放的就是它们。
6、/etc/resolv.conf文件
此文件作用是指定域名服务器的IP和搜索顺序,把huang机器的DNS指向它自己。
#Default Domain
domain pk.org
#Default search list
search pk.org
nameserver 192.168.1.1
########################################
#ShenZhen ADSL Nameserver!
#The First name server
#nameserver 202.96.134.133
#The Second name server
#nameserver 202.96.128.133
search pk.org这一行简化了用户输入的主机名,即当用户输入huang时,使得DNS可以把它成功解析为huang.pk.org,它与domain是互斥的,无论谁出现都用来定义serach列表的。注意:定义域名服务器的IP,最多是三个,建议用2个(这不记得从那里看的)
7、/etc/hosts.conf 文件
此文件作用是实现hosts表与DNS的关系和接口
#more /etc/hosts.conf
order hosts,bind
#解析域名的顺序!
multi on
#允许一台计算机拥有多个IP
8、/etc/nsswitch.conf文件
此文件的作用是用于处理Hosts表和DNS的顺序.
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Legal entries are:
#
# nisplus or nis+ Use NIS+ (NIS version 3)
# nis or yp Use NIS (NIS version 2), also called YP
# dns Use DNS (Domain Name Service)
# files Use the local files
# db Use the local database (.db) files
# compat Use NIS on compat mode
# hesiod Use Hesiod for user lookups
# [NOTFOUND=return] Stop searching if not found so far
#
# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd: db files nisplus nis
#shadow: db files nisplus nis
#group: db files nisplus nis
passwd: files nisplus nis winbind
shadow: files nisplus nis
group: files nisplus nis winbind
#hosts: db files nisplus nis dns
hosts: files nisplus nis dns
# Example - obey only what nisplus tells us...
#services: nisplus [NOTFOUND=return] files
#networks: nisplus [NOTFOUND=return] files
#protocols: nisplus [NOTFOUND=return] files
#rpc: nisplus [NOTFOUND=return] files
#ethers: nisplus [NOTFOUND=return] files
#netmasks: nisplus [NOTFOUND=return] files
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files
netgroup: nisplus
publickey: nisplus
automount: files nisplus
aliases: files nisplus
当然啦,你要从服务器访问其它的主机,需要把它配置为DSN的客户系统,DNS的客户部分叫做解析器吧。它是一套允许任何程序执行DNS查询的C运行的程序。这在Mandrake linux带有这样的解析器。
10、测试与管理方法。
a、客户机的,只要配置得正确就行了。比如,有一台装有Ms-Windows叫ly的机器,他的IP是192.168.1.253,打开相关的DNS项,主机填上ly,域名填上pk.org,就可以互相解析了。
b、 当启动来个/etc/init.d/named start就可启动了。其它的用法:
/etc/init.d/named {start|stop|status|restart|condrestart|reload|probe}。
当你要开机的时候,启动named时,你可以:
#chkconfig --level 35 named on
这与你的系统的运行级别有关。可以看看man chkconfig就会知道他的用法了。
效。
c、 rndc工具:用来向named进程发送信号
d. nslookup:测试正向、反向的解析是否正常
e、当然,还可以用dig或者host来测试DNS设置。
c-e的这些工具你要装上bind-utils-9.2.1-4mdk的rpm包。
比如:
#dig -x 192.168.1.1
; <<>> DiG 9.2.1 <<>> -x 192.168.1.1
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4278
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;1.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
1.1.168.192.in-addr.arpa. 3600 IN PTR huang.pk.org.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN NS huang.pk.org.
;; ADDITIONAL SECTION:
huang.pk.org. 86400 IN A 192.168.1.1
;; Query time: 2 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Fri May 16 21:16:14 2003
;; MSG SIZE rcvd: 98
其它的测试工具,你还是多多看它的man页吧。由于篇幅有限。不能过多介绍了。
11、可能遇到的问题。
由于我用的是bind9.2.1版本,可能主要问题就是ndc不能使用;因为原来看到的帖子都是用ndc来控制本地的bindstop,start,reload等. 在9.2.1版本,并没有ndc,而是rndc,支持远程控制的ndc,这必须使用密码跟bind通讯.
如果是rndc不能工作,就有可能出现问题! rndc的密码是在/etc/rndc.conf里面. 就要用dnssec-keygen产生一段密码.使用一般是如下:
#dnssec-keygen -a HMAC-MD5 -b 192 -n HOST rndc
Krndc.+157+02818
#ls K*
Krndc.+157+02818.key Krndc.+157+02818.private
或者干脆直接运行:
#dns-keygen
对于它的更详细的使用方法,你可以参考下man dnssec-keygen
生成的2个文件 Krndc.xxxx.key 和Krndc.xxxx.private.你打开看看就知道它是什么内容了。
将Krndc.+157+02818.private里面的那个key串复制下来.对比下/etc/rndc.conf和/etc/named.conf文件的内容你就知道如何做了。然后把key的内容放进/etc/rndc.conf和/etc/named.conf文件相关的位置。你可以参考上面的开始时说到的内容。
在/etc/rndc.conf像这样调用:
# Start of rndc.conf
key mykey {
algorithm hmac-md5;
secret "IriCelUSbPMypSjImBsiTHMauOumRPMkdBjoxVINAx0vxJZNRKGWzFCKibad";
};
options {
default-key mykey;
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
在/etc/named.conf中调用部份:
key mykey {
algorithm hmac-md5;
secret "IriCelUSbPMypSjImBsiTHMauOumRPMkdBjoxVINAx0vxJZNRKGWzFCKibad";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { mykey; };
};
然后restart你的named进程,
执行rndc reload 试验.
当然你可以把named.conf和rndc.conf的用户权限设置为600,这样才会更安全些。
#chmod 600 /etc/rndc.conf
#chmod 600 /etc/named.conf
另外还要注意,httpd最好别用root执行. 可以这样查看:
#ps -aef |grep named
如果前面的显示出来是root,就是以root权限执行的了. 最好能改一下,因为bind会经常出现安全的问题,不要用root执行的好,否则,可能有危险。
在Mandrake linux系统中,是存在着named和named组的。你可以看看你的/etc/passwd和/etc/group文件,如果没有。你可以自己创建一个,用named这个帐号来执行named,
#addgroup named
#建立named组
#adduser -g named -d /var/named named
#建立named帐号,指定named组,指定目录/var/named;
然后先关掉named进程再以非root帐号重启,
#named -u named
再看看/var/log/messages,如果有错误的记录。此时应该就是权限的问题了。
#chown named:named /etc/named.conf
再次执行
#named -u named
如果还有错误,比如什么不能建立/var/run/named/named.pid,
应该是新建的named帐号在/var/run/named下没有写权限.给pid文件转个地方。 在/etc/named.conf文件中的options一节中添加一行,指定 pid文件的位置:
pid-files "/var/named/named.pid";
这样应该可以正常了.
以上只是可能存在,但不一定存在,可能和你当初安装系统时存在,比如,安装级别选择得很高。
好了,这个帖子写完了。如果你有什么问题,欢迎一起讨论,我也是刚开始配置,还有很多的地方不太懂,同时,也参考了很多网友的帖子,但都没有详细记下来,谢谢前辈们的辛勤的劳动。 |
|