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

例题解析DNS主从服务器简单配置2

2012-10-20 19:47 155 查看
(以下实例基于Red Hat Enterprise Linux Server release 5.8版本)

使用当前主机172.16.9.1 进行解析:配置过程

假如名称叫做ns.mm.com

ns.mm.com

别名:www ftp

为其他主机进行解析。

第一步,

修改主机名:

vim /etc/sysconfig/network

HOSTNAME=ns.mm.com

hostname ns.mm.com 让它立即生效,重新登录便可以看到效果。

安装软件:

先卸载之前的 rpm -e bind-libs bind-utils

安装bind97:yum list -y bind97 bind97-libs bind97-utils(实现存在yum源,我在之前已经安装过,这里不多做解释)

提供主配置文件/etc/named.conf, 将默认配置文件删除,或者修改名称。

vim /etc/named.conf

options { //全局设置

directory "/var/named"; //路径

};

zone "." IN { //定义根区域

type hint;

file"named.ca"; //文件会在装上bind后自动生成,如果没有,就用dig -t NS. > /FILE 去获取根域内的所有记录,重定向到该文件即可

};

zone "localhost" IN {

type master;

file "localhost.zone";

};

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

type master;

file "127.0.0.zone";

};

zone "mm.com" IN {

type master;

file "mm.com.zone";

};

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

type master;

file "172.16.9.zone";

allow-transfer { none; };

};

cd /var/named //切换目录

编辑相应的区域文件localhost.zone 127.0.0.zone mm.com.zone 172.16.9.zone

以区域文件"mm.com.zone"为例

内容为:

$ORIGIN . ;区域名称附加后缀

$TTL 86400 ; 1 day

mm.com IN SOA ns.mm.com. admin.mm.com. (

2012102001 ; serial 序列号

12H ; refresh (12 hours) 刷新时间

1H ; retry (1 hour) 重试时间

30D ; expire (4 weeks 2 days) 过期时间

2D ; minimum (2 days) 否定回答的TTL值

)

NS ns.mm.com.

NS ns2.mm.com.

MX 10 mail.mm.com.

$ORIGIN mm.com.

ftp CNAME www

mail A 172.16.9.4

ns A 172.16.9.1

ns2 A 172.16.9.2

www A 172.16.9.1

~

注:在此文件中定义各记录,以SOA记录为第一条,任何主机名都要给他一个A记录,MX记录一定不要忘记定义优先级。

反向解析文件记录,以172.16.9.zone为例:

$ORIGIN .

$TTL 86400 ; 1 day

9.16.172.in-addr.arpa IN SOA ns.mm.com. admin.mm.com. (

2012102001 ; serial

12H ; refresh (12 hours)

1H ; retry (1 hour)

30D ; expire (4 weeks 2 days)

2D ; minimum (2 days)

)

NS ns.mm.com.

NS ns2.mm.com.

MX 10 mail.mm.com.

$ORIGIN 9.16.172.in-addr.arpa.

1 PTR ns.mm.com.

PTR www.mm.com.

2 PTR ns2.mm.com.

4 PTR mail.mm.com.

注:反向区域中,PTR记录的NAME是IP 剩下的部分(主机地址)要反过来写

区域文件全部定义好之后,可以先检测一下语法:

相应的命令:

named-checkconf 检测主配置文件中的语法错误

named-checkzone 检测区域文件中的语法错误

如检测mgedu.com 这个区域文件有没有语法错误:

named-checkzone "mm.com" mm.com.zone

如果两项都没有错误便可以启动服务:service named restart

验证一下是否启动:netstat -tunlp | grep 53

rndc 远程名称服务控制器(安全性要求很重要)

remote name domain controller

默认只工作在tcp/127.0.0.1的953端口

rndc

reload 重新载入配置文件和区域文件

stop 停止服务

flush 清空缓存

reconfig 重新载入主配置文件和发生过更新的区域文件

reload zone 重新载入某区域文件

status 显示当前服务状态

使用rndc-confgen 可以生成一对密钥,用这对密钥可以实现远程控制的安全性,将该密钥的两段分别设置在主配置文件/etc/named.conf

和另一个远程服务器的主配置文件中去掉注释,即可实现密钥的远程控制。

如果指定外网为DNS服务器,把rndc.conf 的前半段复制粘贴到DNS 服务器的主配置文件中即可。

这个用法在这里先不使用。

到这里DNS 的简单配置宣告成功!!

验证解析:

正向:dig -t A www.mm.com @127.0.0.1

反向:dig -x 172.16.9.2 @127.0.0.1

dig 里有一个用法:AXFR 完全区域传送:

使用:dig -t AXFR mm.com 可以把对方所有的记录全部拿过来,

这样做对DNS服务器来说是很不安全的,所以应该控制其不能随意访问该记录。

所以应该设定传送权限,仅允许在自己控制范围内的主机进行区域传送。

仅允许谁传送的指令:

allow-transfer { 172.0.0.0/8; 172.16.100.2; }

{} 里面是允许传送的网络地址或者IP地址,中间用空格隔开,每个地址后分号结尾。

有两个特殊的地址:

none: 全都不允许同步

any: 任何人都允许同步

传送定义zone 当中,说明该区域受到控制;如果设置到全局中,说明全局区域都受到控制。

vim /etc/named.conf 设定仅允许谁传送(注:根区域中是不允许传送的哦)

zone "mm.com" IN {

type master;

file "mm.com.zone";

allow-transfer { 127.0.0.0/8; 172.16.9.2; }; //设定允许传送的网络和主机

};

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

type master;

file "172.16.9.zone";

allow-transfer { none; }; //设定都不允许传送

rndc reconfig 重新载入一下配置文件

service named restart 重启服务

测试一下:dig -t axfr mm.com [@172.16.9.2] 地址控制很严格的,要按照允许传送的地址输入才可以

配置从服务器

从服务器是从主服务器中同步数据的,所以不用为从服务器定义配置文件。

例如用172.16.9.2这台主机来配置mm.com 这台主机的从服务器。

主机名假设为ns2.mm.com

修改主机名

vim /etc/sysconfig/network

HOSTNAME=ns2.mm.com

service network restart

从服务器中:

安装bind和主服务器的安装方法相同,在这里就不重复了。

从区域的声明方法:

zone"ZONE" IN {

type slave;

file "slaves/FILE_NAME" ;

masters { master _ server;};

};

注:同步过来的文件属组应该有写权限的,在这里有一个固定的目录slaves将同步的文件保存在slaves 中

注:selinux 应该关闭,setenforce 0 (临时有效的)

如果让其永久有效,改配置文件

vim /etc/selinux/config

# SELINUX=permissive

让两台主机进行通信,基于密钥认证。

两台主机中设置:

ssh-keygen -t rsa -N ''(自动生成.ssh目录) //-t 是指定密钥的类型,-N '' 指定密码为空

ssh-copy-id -i .ssh/id_rsa.pub root@172.16.9.1/2 //-i 指定密钥文件

检测一下通信:

ssh 172.16.9.1 'ifconfig'

ssh 172.16.9.2 'ifconfig'

可以看到对方的地址信息。

然后在主服务器中复制,

scp -p /etc/named.conf 172.16.9.2:/etc(将一台主机上的named.conf复制到172.16.9.1这台主机上的/etc下

然后改变文件的属组

ll /etc/named.conf

chmod 640 /etc/named.conf

chown :named /etc/named.conf

主服务器上复制另外的数据文件:

scp -p /var/named/localhost.zone 127.0.0.zone root@172.16.9.2:/var/named

在从服务器中检测下是否复制成功了,然后更改其权限640和属组named

注:在主从服务器中,根区域和localhost ,172.0.0.1 都是不能让别人解析的

在从服务器中设置:这里只是设置正向解析

vim /etc/named.conf

在zone "mkgedu.com"里设置

type slave ;

file "slave/mm.com.zone ";

masters { master_ip; }

rndc-confgen 要重新生成的或把另外一台主机的密钥复制过来也可以

mm.com.zone 文件的内容是从主服务器中同步过来的,不用再自定义。

named-checkconf

named-checkzone "mm.com" mm.com.zone

检测语法错误

启动named: service named start

查看日志文件信息:tail /var/log/messages

在从服务器中进行解析:dig -t A www.mm.com @127.0.0.1

反向解析: dig -x 172.16.9.1

注:修改一次主服务器的数据文件内容的时候,要将其序列号加上1

在启动服务和查询过程中,要经常查看日志信息,有利于发现错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息