当前位置:文档之家› Solaris下用Bind安装和配置DNS

Solaris下用Bind安装和配置DNS

Solaris下用Bind安装和配置DNS
Solaris下用Bind安装和配置DNS

Solaris下用Bind安装和配置DNS

一、DNS基础

DNS:Domain Name System,域名解析服务器,它在互联网的作用是把域名转换成为网络可以识别的ip地址。

BIND:Berkeley Internet Name Domain,是unix中DNS协议用的最多的一个实现。

如https://www.doczj.com/doc/2f19249132.html,,blog是一四级域名,sina是三级域名,com是二级域名,cn是顶级域名。一完整域名最多可以是256个字符,各级别域名最多63个字符。

DNS使用https://www.doczj.com/doc/2f19249132.html,d进程,如果/etc/named.conf存在,系统启动时会开启https://www.doczj.com/doc/2f19249132.html,d进程并读取

/etc/named.conf文件,https://www.doczj.com/doc/2f19249132.html,d其实就是/usr/sbin/named的一个链接。

名字到地址的查找称为正向映射;地址到名字的查找称为反向映射。

二、DNS服务器安装配置

以下都为Solaris平台下用root用户操作,不论你使用哪个发行版本的unix,DNS的设置与unix的关系并没有太大的关系。

1、安装BIND,当前Release版本是bind-9.4.2.tar.gz

为了方便用于其他操作系统,我们还是从源代码包方式安装。首先从ISC公司的主页

( https://www.doczj.com/doc/2f19249132.html,/index.pl?/sw/bind/index.php )下软件包。

解压:

# pwd

/opt/wacos/encle

# gunzip bind-9.4.2.tar.gz

# tar -xvf bind-9.4.2.tar

配置编译并安装,BIND正常安装在/usr/local目录下,但可以调整通过--prefix参数设置,本例不用IPv6,启动文件最后会安装在/usr/local/sbin里:

# cd bind-9.4.2

# ./configure --prefix=/usr/local --sysconfdir=/etc --disable-ipv6

# make

# make install

安装的时间会比较久,安装完后看一看现版本是多少:

# /usr/local/sbin/named -v

到此Bind已经安装完成了。

2、生成RNDC(用于控制DNS服务器,Bind9有)配置文件/etc/rndc.conf

Bind9规定,如果要使用rndc来控制dns,必须先生成验证文件 rndc.conf 和密锁。rndc.conf文件的内容,可用rndc-confgen命令生成所需内容。

# /usr/local/sbin/rndc-confgen > /etc/rndc.conf

如果机器上没有random产生器,这种情况下系统应该让你输入一些无关字母来替代/dev/random的功能。

------------------------------------------

You must use the keyboard to create entropy, since your system is lacking

/dev/random (or equivalent)

start typing:

...........................

stop typing.

# Start of rndc.conf

...

# End of named.conf

------------------------------------------

生成的rndc.conf大致如下:

# cat /etc/rndc.conf

------------------------------------------

# Start of rndc.conf

key "rndc-key" {

algorithm hmac-md5;

secret "ZdAFUwS0QMr95427P7Xq+w==";

};

options {

default-key "rndc-key";

default-server 127.0.0.1;

default-port 953;

};

# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:

# key "rndc-key" {

# algorithm hmac-md5;

# secret "ZdAFUwS0QMr95427P7Xq+w==";

# };

#

# controls {

# inet 127.0.0.1 port 953

# allow { 127.0.0.1; } keys { "rndc-key"; };

# };

# End of named.conf

#

------------------------------------------

后面配置/etc/named.conf的时候要把“# Use with the following in named.conf, adjusting the allow list as needed:”这行下的所有复制到named.conf 文件里。

3、配置DNS服务器的引导文件/etc/named.conf

named.conf文件包含的内容:

指出包含根服务器的文件位置;

建立首要服务器、辅助服务器、仅缓存服务器;

指出服务器的权威区域;

指出服务器的数据文件的位置;

为特定区域应用安全选项;

定义日志规范;

可为一组区域应用选项。

named.conf编写规范:

陈述语句以;号结束;

每个陈述语句还可以包括一段{}括起来的陈述;

多行注释为/* */;单行注释#或//开始。

陈述语句可定义:

acl:定义一命名的IP地址匹配列表

options:控制全局服务器配置选项

zone:定义区域

先建立区域文件目录/etc/named:

# mkdir /etc/named

配置named.conf示例:

# vi /etc/named.conf

------------------------------------------

options {

//定义区域文件目录,表示以下各项配置中的文件默认在此目录中

directory "/etc/named";

};

//指定根DNS服务器的配置文件/etc/named/named.root,此文件可从网络下载

zone "." in {

type hint;

file "named.root";

};

//指定正向解析配置文件/etc/named/encle.zone

zone "https://www.doczj.com/doc/2f19249132.html," in {

type master;

file "encle.zone";

};

//指定反向解析配置文件/etc/named/encle.rzone,“111.19.172.”这里是根据网络IP分配情况而定,是反向IP前三段

zone "111.19.172.in-addr.arpa" in {

type master;

file "encle.rzone";

};

//指定环回反向解析配置文件/etc/named/named.local

zone "0.0.127.in-addr.arpa" in {

type master;

file "named.local";

};

// 把上面生成的/etc/rndc.conf的Key和Controls段内容拷到这里

key "rndc-key" {

algorithm hmac-md5;

secret "ZdAFUwS0QMr95427P7Xq+w==";

};

controls {

inet 127.0.0.1 port 953

allow { 127.0.0.1; } keys { "rndc-key"; };

};

------------------------------------------

4、配置区域文件

区数据文件的大部分条目被称为DNS资源记录(resource record)。

数据文件中资源记录的顺序如下:

SOA记录

指示该区的权威

NS记录

该区的一个名字服务器

其他记录

有关该区中主机的数据

A 名字到地址的映射

PTR 地址到名字的映射

CNAME 别名

注释:

使用分号(;)开头的到行尾处结束。

设定区默认的TTL值:

名字服务器在查询响应中提供这个TTL值,允许其他服务器将数据在缓存中存放TTL所指定的时间。允许的单位是: w=星期 d=天 h=小时 m=分钟 s=秒

资源记录格式:

[name] [ttl] [class] [type] [data]

name:域名

ttl:缓存生存时间,通常是86400(1天),也可表示成1d

class:网络类别,通常IN表示互联网

type:该域名的资源记录类型

data:数据,如主机名、ip、邮件地址等

资源记录类型介绍:

; 注释开头

$TTL:Time To Live,缓存生存时间

SOA:Start of Authority,标志主名城服务器、联系信息等

NS:Name Server,名称服务器

A:Address,指定一主机的IP

PTR:Pointer,指定一IP的主机名,用来反向解析(即把IP解析成主机名)

CNAME:Canonical Name,主机别名(如www可代替一主机名)

AAAA:quad-A,指定一主机的IPv6地址

a) /etc/named/named.root

This file is used when you are connected to internet.

可从 https://www.doczj.com/doc/2f19249132.html,/zones/named.root 获得该文件的最新版本。

c) /etc/named/encle.zone

# vi /etc/named/encle.zone

------------------------------------------

; This file resolves hostnames to IP addresses in the https://www.doczj.com/doc/2f19249132.html,. domain.

$ORIGIN https://www.doczj.com/doc/2f19249132.html,.

$TTL 1d

https://www.doczj.com/doc/2f19249132.html,. IN SOA https://www.doczj.com/doc/2f19249132.html,. https://www.doczj.com/doc/2f19249132.html,. (

20080201 ; serial number

1h ; refresh

15m ; retry

1w ; expire

1d ) ; ttl

https://www.doczj.com/doc/2f19249132.html,. IN NS https://www.doczj.com/doc/2f19249132.html,.

dns IN A 172.19.111.37

www IN A 172.19.111.40

test IN A 172.19.111.42

------------------------------------------

c) /etc/named/encle.rzone

# vi /etc/named/encle.rzone

------------------------------------------

; This file resolves IP addresses to hostnames in the https://www.doczj.com/doc/2f19249132.html,. domain.

$ORIGIN 1.168.192.IN-ADDR.ARPA.

$TTL 1d

111.19.172.IN-ADDR.ARPA. IN SOA https://www.doczj.com/doc/2f19249132.html,. https://www.doczj.com/doc/2f19249132.html,. (

20080201 ; serial number

3h ; refresh

1h ; retry

1w ; expire

1d ) ; ttl

111.19.172.IN-ADDR.ARPA. IN NS https://www.doczj.com/doc/2f19249132.html,.

37 IN PTR https://www.doczj.com/doc/2f19249132.html,.

40 IN PTR https://www.doczj.com/doc/2f19249132.html,.

42 IN PTR https://www.doczj.com/doc/2f19249132.html,.

------------------------------------------

d) /etc/named/named.local

# vi /etc/named/named.local

------------------------------------------

$ORIGIN 0.0.127.IN-ADDR.ARPA.

$TTL 1d

0.0.127.IN-ADDR.ARPA. IN SOA https://www.doczj.com/doc/2f19249132.html,. https://www.doczj.com/doc/2f19249132.html,. (

20080201 ; version number

3h ; refresh

1h ; retry

1w ; expire

1d ) ; ttl

0.0.127.IN-ADDR.ARPA. IN NS https://www.doczj.com/doc/2f19249132.html,.

1 IN PTR https://www.doczj.com/doc/2f19249132.html,.

------------------------------------------

5、检查配置文件

# /usr/local/sbin/named-checkconf /etc/named.conf

# /usr/local/sbin/named-checkzone https://www.doczj.com/doc/2f19249132.html, /etc/named/encle.zone

6、在主DNS服务器上开启https://www.doczj.com/doc/2f19249132.html,d服务进程

# /usr/local/sbin/named 或 # /usr/local/sbin/named -c /etc/named.conf (针对named.conf 没放在默认位置/etc下的情况)

查看开启的进程:

# ps -ef | grep named | grep -v grep

测试rndc是否成功:

# /usr/local/sbin/rndc status

number of zones: 14

debug level: 0

xfers running: 0

xfers deferred: 0

soa queries in progress: 0

query logging is OFF

recursive clients: 0/0/1000

tcp clients: 0/100

server is up and running

表示rndc已经成功控制Bind9。如果没有显示上面的信息,请检查你的/usr/local/etc/named.conf 文件里面是否配置了/usr/local/etc/rndc.conf里面的key。

查看是否有错误日志信息:

# tail -f /var/adm/messages

Jan 30 14:26:54 fsdb37 named[15667]: [ID 873579 daemon.notice] starting BIND 9.4.2

Jan 30 14:26:54 fsdb37 named[15667]: [ID 873579 daemon.error] binding TCP socket: address

in use

Jan 30 14:26:54 fsdb37 last message repeated 1 time

Jan 30 14:26:54 fsdb37 named[15667]: [ID 873579 daemon.notice] command channel listening on 127.0.0.1#953

Jan 30 14:26:54 fsdb37 named[15667]: [ID 873579 daemon.notice] running

注意:

solaris8&9版本中预装的有bind,目录在/usr/sbin,程序为https://www.doczj.com/doc/2f19249132.html,d,也有自己的nslookup等程序,可以看它的版本:

# /usr/sbin/https://www.doczj.com/doc/2f19249132.html,d -v

https://www.doczj.com/doc/2f19249132.html,d BIND 8.2.4 Fri May 19 04:41:53 PDT 2006

Generic Patch-5.8-May 2006

而且在/etc/rc2.d/S72inetsvc中有https://www.doczj.com/doc/2f19249132.html,d的启动定义:只有/etc下有named.conf文件,系统启动时就会将https://www.doczj.com/doc/2f19249132.html,d启动起来。

------------------------------------------

...

if [ -f /usr/sbin/https://www.doczj.com/doc/2f19249132.html,d -a -f /etc/named.conf ]; then

echo 'starting internet domain name server.'

/usr/sbin/https://www.doczj.com/doc/2f19249132.html,d &

fi

...

------------------------------------------

而我们安装自己的bind时,往往(默认是这样的)会将named.conf文件放到/etc下的!这就造成了我们配置好我们的bind,一启动server,solaris预装的bind就启动了,我们再去启动我们的bind

就会报错:53端口已经被占用了。解决的办法是修改/etc/rc2.d/S72inetsvc,将相关https://www.doczj.com/doc/2f19249132.html,d的全部注释掉,将我们的named增加进去。这样,我们的dns就会在系统启动时自动运行了。

另外,系统自带了一个nslookup是在 /usr/sbin/ 下,安装Bind9后带的nslookup是在

/usr/local/bin 下的。这样,我们系统里就有了两个nslookup了。而环境变量里的PATH变量中,

/usr/sbin一般是在排名比较靠前,肯定是在/usr/local/bin之前的。这样造成了我们键入nslookup 时,运行的是老版本的nslookup。这样我们可能会得到报错信息。解决的办法是将新的nslookup覆盖掉老的文件,或者是将环境变量调整一下,将 /usr/local/bin 放到最前面。

三、DNS客户端的配置

1、创建/etc/resolv.conf文件,记录DNS服务器的地址和域名。

一个示例的resolv.conf文件如下:

# vi /etc/resolv.conf

------------------------------------------

domain https://www.doczj.com/doc/2f19249132.html, #默认的domain

nameserver 172.19.111.37 #DNS server ip

------------------------------------------

第一行是“domain 你申请的域名”,第二行是名称服务器,其格式为“nameserver IP地址”,如果IP 是127.0.0.1表示本机就是DNS服务器,该段可以是DNS的主域名称服务器、备份域名称服务器或缓冲名称服务器,但是书写时不可以超过3个服务器。

2、修改/etc/nsswitch.conf,是客户机能够使用DNS服务,该文件记录主机名的搜索顺序等信息。SUN客户机缺省使用files作为服务器名字的解析,为了使用DNS名称解析服务器,必须在

/etc/nsswitch.conf 指明使用DNS服务。

# vi /etc/nsswitch.conf

------------------------------------------

...

group: files

hosts: files dns

ipnodes: files

...

------------------------------------------

如上例,只要在hosts一项添加dns项就可以。

3、用nslookup查询DNS服务器,验证客户端的设置,下载DNS数据库。

启动时,nslookup缺省地以本地服务器为目标。响应中包括目标服务器的名字和地址。>是提示符,这意味着可以开始发送名字服务询问或配置。

# nslookup

> ...

> exit

4、BIND相关的一些工具介绍

dig 查询DNS服务器。

host 一个DNS查找工具。

rndc 控制BIND的操作。

rndc-confgen 生成rndc.conf文件

named-checkconf 检查named.conf文件的语法。

named-checkzone 检查区域文件的合法性。

lwresd 是为本地进程提供的只有缓存的名字服务器。

named 是名字服务器守护进程。

dnssec-signzone 生成带有签名的区域文件。

dnssec-signkey 为区域文件密钥集生成签名。

dnssec-keygen 是DNS密钥生成器。

dnssec-makekeyset 利用dnssec-keygen生成的一个或多个密钥创建密钥集。

nsupdate 用于提交DNS更新请求。

相关主题
文本预览
相关文档 最新文档