DNS主从服务器的搭建:
用 cat /etc/issue查看实验平台版本
实验平台:Red Hat Enterprise Linux Server release 5.8 (Tikanga)
内核版本:2.6.18-308.el5
域名:insrpion.com
用当前主机:172.16.60.1提供解析
主机名:ns.insprion.com
1.修改主机名:
vim /etc/sysconfig/network
hostname ns.insrpion.com 让其立即生效
2.在/etc目录下建立named.conf
vim /etc/named.conf
- options {
- directory "/var/named";
- };
- zone "." IN {
- type hint;
- file "named.ca";
- };
- zone "localhost" IN {
- type master;
- file "localhost.zone";
- allow-transfer { none; };
- };
- zone "0.0.127.in-addr-arpa" IN {
- type master;
- file "127.0.0.zone";
- allow-transfer { none; };
- };
- zone "insprion.com" IN {
- type master;
- file "insprion.com.zone";
- allow-transfer { 172.16.60.1; };
- };
- zone "60.16.172.in-addr.arpa" IN {
- type master;
- file "172.16.60.zone";
- allow-transfer { none; };
- };
3.在/var/named目录下建立根、本地正向区域&反向区域、服务器端的正向区域&反向区域
cd /var/named
这里只列出服务器端的正向区域和反向区域:
vim insprion.com.zone
- $TTL 86400
- @ IN SOA ns.insprion.com. admin.insprion.com. (
- 2012102101
- 12H
- 1H
- 30D
- 1D )
- @ IN NS ns
- IN NS ns2
- IN MX 10 mail
- ns IN A 172.16.60.1
- ns2 IN A 172.16.60.7
- www IN A 172.16.60.1
- ftp IN CNAME www
- pop3 IN A 172.16.60.3
- mail IN A 172.16.60.7
vim 172.16.60.zone
- $TTL 86400
- @ IN SOA ns.insprion.com. admin.insprion.com. (
- 2012102101
- 12H
- 1H
- 30D
- 1D )
- IN NS ns.insprion.com.
- IN NS ns2.insprion.com.
- 1 IN PTR ns.insprion.com.
- IN PTR www.insprion.com.
- 3 IN PTR pop3.insprion.com.
4.建立完毕后,检查语法
named-checkconf
named-checkzone "insprion.com" insprion.com.zone
named-checkzone "60.16.172" 172.16.60.zone
当上述无误后,重启服务: service named start
至此一个主服务器搭建完毕
5.搭建从服务器
准备工作:
修改主机名:
vim /etc/sysconfig/network
hostname ns2.insrpion.com 让其立即生效
rndc reconfig 重启服务
编辑/etc/selinux/config 处于关闭状态
注:selinux 应该关闭,setenforce 0 (临时有效的)
getenforce 重启一下
如果让其永久有效,改配置文件
vim /etc/selinux/config
# SELINUX=permissive
虽然DNS在某种意义上讲是不受SELINUX控制的,但是他的某些文件受到SELINUX的控制
从服务器的IP:172.16.63.1
现在我们以172.16.63.1这台主机搭建一个从服务器(正向和反向都做)
首先引入一个概念:完全区域传送
比如:通过 dig -t AXFR insprion.com 可以把对方域内所有的记录统统拿过来。可以设想,如果在互联网上,那么别人就可以轻易的用dig命令获取你的所有记录,那将是非常危险的,因此我们是不能随便让人做区域传送的,所以我们只能让那些通过认证的客户端允许做区域传送,一般说来只有slave才可以做区域传送的。这里我才引入区域传送的概念。
在做从服务器之前首先要明白一个问题,仅允许谁同步
格式:allow-transfer { }; 注释: 大括号内加入IP地址,IP地址后面跟分号,每个IP地址中间用空格隔开;根区域中是不允许使用allow-transfer
eg: allow-transfer { 172.16.60.1; 172.16.63.1};
allow-transfer { 127.0.0.0/8; 172.16.60.1/16};允许两个网络内的所有主机同步
如果谁都不需要同步的话是:allow-transfer { none; };
配置环境:
安装软件:
先卸载之前的 rpm -e bind-libs bind-utils
安装bind97:yum -y install bind97 bind-libs bind-utils(前提是存在yum源,我在之前已经安装过,这里不多做解释)
因为主从配置文件基本都是一样,那我们可以直接把主配置文件复制过来稍微修改一下就可以直接使用
声明从区域的方法:
- zone "ZONE" IN {
- type slave;
- file "slaves/ZONE_FILE";
- masters { MASTER_SERVER; };
- allow-transfer {};
- };
6.同步文件
建立连接,首先要建立密钥认证:
ssh-keygen -t rsa -N ''
直接回车回车生成如下密钥:
- Generating public/private rsa key pair.
- Enter file in which to save the key (/root/.ssh/id_rsa):
- Created directory '/root/.ssh'.
- Your identification has been saved in /root/.ssh/id_rsa.
- Your public key has been saved in /root/.ssh/id_rsa.pub.
- The key fingerprint is:
- ce:cf:b1:38:be:ff:2b:71:05:a4:67:af:0f:32:67:2d root@ns2.insprion.com
把上面生成的公钥复制到另一台主机:
ssh-copy-id -i .ssh/id_rsa.pub root@172.16.60.1
这样我们访问另一台主机就不用输入密码了。
反过来做同样的操作,在主服务器中也实现认证,步骤和上面相同
6.双方互相认证成功后,开始从主服务器上面复制文件
复制主配置文件
scp -p /etc/named.conf 172.16.63.1:/etc
改变其属主
chown :named /etc/named.conf
再复制几个数据文件,这里需要说明一下,无论是主服务器还是从服务器,对于服务器来讲,根区域、localhost以及localhost的反向区域,对当前服务器来讲,都是主的,一定是当前服务器解析当前服务器的localhost
从服务器的named.conf的具体配置如下:
- vim /etc/named.conf
- options {
- directory "/var/named";
- };
- zone "." IN {
- type hint;
- file "named.ca";
- };
- zone "localhost" IN {
- type master;
- file "localhost.zone";
- allow-transfer { none; };
- };
- zone "0.0.127.in-addr-arpa" IN {
- type master;
- file "127.0.0.zone";
- allow-transfer { none; };
- };
- zone "insprion.com" IN {
- type slave;
- file "insprion.com.zone";
- masters { 172.16.60.1; };
- };
- //zone "60.16.172.in-addr.arpa" IN {
- // type master;
- // file "172.16.60.zone";
- //};
保存。
复制区域文件
scp -p localhost.zone 127.0.0.zone root@172,16.63.1:/var/named 目录下
下一步:在从服务器中修改区域文件的属性:
chown :named localhost.zone 127.0.0.zone
下一步检查配置文件
named-checkconf
service named start
基本的主从服务器配置完成