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

linux下dns配置详细步骤

2012-01-10 03:40 405 查看
………………………………………………DNS的配置步骤:……………………………………………………

一、配置静态IP地址:

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

BOOTPROTO=static

ONBOOT=yes

IPADDR=192.198.0.5

NETMASK=255.255.255.0

GATEWAY=192.168.0.1

#/etc/init.d/network restart

#ifconfig eth0

二、使用BIND构建DNS服务器

1、BIND服务器安装

RHEL4中包括了BIND服务相关的软件包

bind-libs-9.2.4-2

提供了实现域名解析功能必备的库文件 ,系统默认安装

bind-utils-9.2.4-2

提供了对DNS服务器的测试工具程序 ,系统默认安装

bind-9.2.4-2 安装文件位于第4张安装光盘中

# rpm -ivh bind-9.2.4-2.i386.rpm

BIND服务器的服务程序脚本名称是named,默认没有启动,需手动设置。

#rpm -ql bind | grep init.d

/etc/rc.c/init.d/named

#chkconfig --level 35 named on

#chkconfig --list named

三、主域名服务器的配置

1、在named.conf文件中设置域

全局配置

options {

directory "/var/named";

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

};

controls {

inet 127.0.0.1 allow { localhost; } keys { rndckey; };

};

建立正向解析域

zone "." IN { (指定根域)

type hint;

file "named.ca";

};

zone "benet.com" { (指定本地域)

type master;

file "benet.com.zone";

};

建立反向解析域

zone "0.168.192.in-addr.arpa" { (指定反向域)

type master;

file "192.168.0.rev";

};

2、建立正向区域文件 (该文件需要用vi编辑器手动建立在/var/named中,并写其内容)

#cat /var/named/benet.com.zone

$TTL 86400 (秒)

@ IN SOA benet.com. hostmaster.benet.com. (

42 ; serial (d. adams) (序列号)

3H ; refresh (3小时更新)

15M ; retry (15分钟重试)

1W ; expiry (1周)

1D ) ; minimum (1天)

@ IN NS ns1.benet.com.

@ IN NS ns2.benet.com.

ns1 IN A 192.168.0.5

ns2 IN A 192.168.0.6

host1 IN A 192.168.0.7

host2 IN A 192.168.0.8

mail IN CNAME host1.benet.com.

www IN CNAME host2.benet.com.

@ IN MX 5 mail.benet.com.

3、建立反向区域文件 (该文件需要用vi编辑器手动建立在/var/named中,并写其内容)

# cat /var/named/192.168.0.rev

$TTL 86400

@ IN SOA ns1.ltest.com. hostmaster.ltest.com. (

42 ; serial (d. adams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

@ IN NS ns1.ltest.com.

@ IN NS ns2.ltest.com.

2 IN PTR ns1.ltest.com. (PTR可用IP省略方法,1.168.192.in-addr.rapa表192.168.1.2可写为2)

3 IN PTR ns2.ltest.com.

11 IN PTR host1.ltest.com.

12 IN PTR host2.ltest.com.

4、配置文件和区域文件的测试

A、测试named.conf主配置文件

# named-checkconf (如果不显示任何信息表示语法正确 )

B、测试区域文件

# named-checkzone benet.com /var/named/benet.com.zone

# named-checkzone 0.168.192.in-addr.arpa /var/named/192.168.0.rev

(named-checkzone命令对正向区域文件和反向区域文件进行检查语法是否错误,第一个参数指定区域名称,第二个参数指定区域文件名称,如果语法正确将显示OK)

5、重启named服务

#service named restart

四、从域名服务器 的配置

(它做为主域名服务器的辅助和备份服务器,自身不建立区域文件,而是从主域名服务器中查询并保存,它可以与主域名服务器提供相同的域名解析服务,它需要在与主域名服务器不同的主机中构建)

1、在named.conf文件中设置域

建立正向解析域

zone "benet.com" {

type slave; (type设置为“slave”,表示当前DNS服务器是该域的从域名服务器类型 )

file "slaves/benet.com.zone" (从域名服务器中的区域文件应设置保存在 “slaves”子目录中,区域文件将从主 域名服务器中获取并保存在该目录中,为了便于管理,尽量使用与主服务器相 同的区域文件名称)

masters { 192.168.0.5; }; ( 使用masters设置主域名服务器的IP地址 )

};

建立反向解析域

zone "0.168.192.in-addr.arpa" {

type slave;

file " slaves/192.168.0.rev";

masters { 192.168.0.5; };

};

2、检测配置文件和启动named服务

从域名服务器只需要检测配置文件的语法

# named-checkconf

启动从域名服务器

# service named start

查看区域文件

从服务器启动后将从主域名服务器中获得区域文件并保存在指定的目录中

# ls /var/named/slaves/

192.168.0.rev benet.com.zone

(如果/var/named/slaves/目录中没有发现区域文件,说明从域名服务器和主域名服务器之间传输区域文件不成功,需要排错。)

五、缓存域名服务器的配置

(它应保证能够与互联网中的其他DNS服务器进行连接,它的主要作用是提高域名解析速度和节约出口带宽)

1、安装caching-nameserver软件包

(RHEL4系统为配置缓存域名服务器专门提供了名为“caching-nameserver”的软件包,该软件包保存在第1张安装光盘中,默认没有安装。)

# rpm -ivh caching-nameserver-7.3-3.noarch.rpm

(caching-nameserver软件包安装时将对BIND服务器的配置文件named.conf的内容进行更改,原文件中的内容保存在/etc/named.conf.rpmorig中。)

2、named.conf中的全局设置 (其中以//开头的行是无效行)

options {

directory "/var/named"; (directory用于设置BIND服务器的工作目录,即域名区域文件保存的目录 )

dump-file "/var/named/data/cache_dump.db"; (dump-file用于设置域名缓存文件的保存位置和文件名 )

statistics-file "/var/named/data/named_stats.txt";

};

3、根区域设置

named.conf中的根区域设置

zone "." IN {

type hint; (type设置为hint表示该区域的类型是根区域)

file "named.ca"; (file用于设置区域文件,根区域文件的名称是“named.ca” )

};

(named.ca是根区域文件,位于“/var/named/ ”目录中,named.ca中包含全球DNS根服务器的地址信息请不要更改)

4、localhost正向解析

(localhost区域的作用是对主机名称“localhost”和环回地址“127.0.0.1” 进行解析,总是代表本机)

zone "localhost" IN {

type master; ( type设置为master表示区域的类型为主服务器 )

file "localhost.zone"; (file设置区域文件名的名字 ,localhost.zone在/var/named中,是安装caching- nameserver时自动安装的,用cat /var/named/localhost.zone查看内容)

};

5、localhost反向解析

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

type master; ( type设置为master表示区域的类型为主服务器 )

file "named.local"; (file设置区域文件名的名字,named.local在/var/named中,是安装caching-nameserver时 自动安装的,用cat /var/named/named.local查看内容)

};

6、缓存域名服务器在安装caching-nameserver软件包后不需要任何其他配置就可以启动运行,并实现域名查询和缓存功能,但它必须能够访问互联网。可以使用nslookup命令进行测试。

六、DNS服务器的测试

1、DNS测试原理

DNS服务器的主要测试方法

使用nslookup、dig和host等专用工具可以对DNS服务器进行较全面的测试

nslookup命令在Linux和Windows系统中都默认安装,是比较常用的测试工具

2、使用nslookup测试DNS服务器

进入nslookup命令交换环境

# nslookup

>

设置使用指定的DNS服务器

> server 192.168.0.5

测试localhost主机域名的正向解析

> localhost

测试localhost主机域名的反向解析

> 127.0.0.1

测试互联网中的域名解析

> www.benet.com

测试benet.com域中的A记录

> host1.benet.com

测试benet.com域中的PTR记录

> 192.168.0.7

测试benet.com域中的CNAME记录

> www.benet.com

测试benet.com域中的NS记录

> set type=ns (设置域名查询类型为NS即域名记录)

> benet.com

测试benet.com域中的MX记录

> set type=mx (设置域名查询类型为MX即邮件交换记录)

> benet.com

设置进行A记录的测试

> set type=a (设置域名查询类型为A即地址记录)

>mail.benet.com

3、使用dig测试DNS服务器 (dig只运行在liunx平台,是domain information grep的缩写)

1)#dig --help

dig命令的格式

Usage: dig [@global-server] [domain] [q-type] [q-class] {q-opt}

{global-d-opt} host [@local-server] {local-d-opt}

[ host [@local-server] {local-d-opt} [...]]

Use "dig -h" (or "dig -h | more") for complete list of options

2)dig命令可以比nslookup命令显示更多的DNS服务器信息

# dig @192.168.0.5 benet.com (@后是被查询的DNS服务器的IP地址,benet.com域名做为命令参数)

; <<>> DiG 9.2.4 <<>> @192.168.0.5 benet.com

;; global options: printcmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51201

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:

;benet.com. IN A

;; AUTHORITY SECTION:

benet.com. 86400 IN SOA ns1.benet.com. hostmaster.benet.com. 42 10800 900 604800 86400

以上dns是以benet.com域为实例讲解………………

参考:

Linux dns配置文档

DNS正解:主机名查找IP。DNS反解:IP地址查询主机名。

所需软件包

bind-9.3.6-4.P1.el5.i386.rpm
bind-chroot-9.3.6-4.P1.el5.i386.rpm
bind-utils-9.3.6-4.P1.el5.i386.rpm
caching-nameserver-9.3.6-4.P1.el5.i386.rpm
linux架构:master、salve、cache-only三大服务器。Cache-only转发master/slave的DNS请求。
搭建master DNS服务器

# hostname master

#vi /etc/sysconfig/network

HOSTNAME=master

# cp /usr/share/doc/bind-9.3.6/sample/etc/named.conf /etc/named.conf

# cat /etc/named.conf

Options { directory "/var/named";

dump-file "data/cache_dump.db"; #设置dns缓存数据的指定文件

statistics-file "data/named_stats.txt"; #dns统计数据写入的文件

pid-file "/var/run/named/named.pid"; #记录named的pid文件可以在启动关闭named时提供正确的pid

allow-query{ any ;}; #是否允许客户端查询,可以设置any、none、ip网段

allow-transfer { 192.168.23.136;}; #是否允许DNS递归查询

zone "." IN { type hint;

file "named.ca"; };

zone "test.com" IN { type master;

file "test.com.zone"; };

zone "23.168.192.in-addr.arpa" { type master;

file "23.168.192.in-addr.local"; };

定义/var/named/chroot/etc/named.rfc1912.zones保持和/etc/named.conf域名定义部分一致即可
#dig -t NS .>/var/named/chroot/var/named/named.ca #查找根服务器的NS记录并重定向

#echo "nameserver 127.0.0.1">>/etc/resolv.conf #设置本机为DNS服务器
创建test.com.zone正向解析文件
$TTL 86400   #当外部DNS对此DNS进行查询,记录会放置在对方DNS服务器几秒。如果DNS稳定,此值应设置大一些,以免DNS忙碌,如果DNS不稳定,此值应设置小一些,以免变动无法被查询到。

@ IN SOA localhost root (    #@代表zone,

42 ; serial (d. adams)    #序号
3H ; refresh         #服务器更新时间;
15M ; retry          #更新失败后,重复更新时间;
1W ; expiry          #重复更新多久宣告失败,不在进行更新。
1D ) ; minimum        #等同于TIL。
IN NS test.com.
IN MX 10 mail.test.com.
www IN A 192.168.23.134

mail IN A 192.168.23.135
创建test.com.zone反解文件

# cat 23.168.192.in-addr.local

$TTL 86400

@ IN SOA localhost. root.localhost. (

1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS test.com.

134 IN PTR www.test.com.

135 IN PTR mail.test.com.

100 IN PTR www.test.net.

101 IN PTR mail.test.net.
#named后查看日志信息。如看到下述报错信息:
couldn't open pid file '/var/run/named/named.pid': Permission denied

修改文件属主权限

# ls -ald /var/named/chroot/var/run/named

drwxrwx--- 2 named named 4096 Mar 14 2003 /var/named/chroot/var/run/named

/etc/named.conf:30: couldn't add command channel 127.0.0.1#953: address in use

表示该953端口正在占用而导致报错,因为named服务已经启动,killall named,在重启named即可。

配置rndc:# rndc-confgen >/etc/rndc.conf
# cat -n /etc/rndc.conf

# ll /etc/rndc.conf #修改rndc.conf为640 root.named
-rw-r----- 1 root named 475 Oct 12 14:45 /etc/rndc.conf
#tail +13 /etc/rndc.conf>>/etc/named.conf 去掉相关的注释#

# rndc status #使用rndc测试服务状态

使用rndc reload无需重启named服务重新加载配置文件。
# rndc reload #使用rndc重新加载该配置文件

server reload successful

使用ping、nslookup进行测试。
搭建slave DNS服务器

修改master中/etc/named.conf配置文件

# cat /etc/named.conf

…………………………………………

zone "test.com" IN {

type slave;

file "test.com.zone";

allow-update { none ;};

allow-transfer { 192.168.23.136 ;};
}; #添加slave 主机IP地址,允许该主机进行DNS传送

zone "23.168.192.in-addr.arpa" IN {

type slave;

file "23.168.192.in-addr.local";

allow-update { none ;};

allow-transfer { 192.168.23.136 ;};
};

………………………………………………………

Slave主机的/etc/named.conf与master的/etc/named.conf一致即可,将type master改成slave即可。

修改权限

# ls -ald /var/named/chroot/var/run/named

drwxrwx--- 2 named named 4096 Mar 14 2003 /var/named/chroot/var/run/named #至少是750

修改named.rfc1912.zones及正反解析文件,与master一致即可。

启动named,之后如果需要更新数据库,只需要修改解析文件,并重启named,slave便会自动更新dns配置文件。

客户端设置

修改/etc/resolv.conf中的nameserver ip指向该dns服务器。

# cat /etc/nsswitch.conf

hosts: dns files #即dns查询优先
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: