在一台
linux
服务器上安装配置
DNS
服务器
第一部分:了解DNS
1.BIND
软件介绍
BIND最新的版本我们可通过官方站点(
https://www.isc.org/)中下载到。在RHEL5系统中,与BIND域名服务相关的几个主要软件包和作用如下:
Bind——提供了域名服务的主要程序及相关文件
Bind-utils——提供了对
DNS服务器的测试工具程序(如nslookup、dig等)
Bind-chroot——为
bind提供一个伪装的根目录以增强安全性
Caching-nameserver——为配置
BIND作为缓存域名服务器提供必要的默认配置文件
2.BIND
服务控制
BIND软件包安装完毕以后,提供的主程序默认位于“
/usr/sbin/named”,系统中会自动增加一个名为
named的系统服务,通过脚本文件“/etc/init.d/named”或service命令都可以控制域名服务的运行。下面是常用的关于DNS服务的命令:
- 启动服务:/etc/init.d/named start或service named start
- 重新加载:service named reload
- 停止服务:service named restart
- 查看状态:service named status
3.BIND
的主配置文件
Named服务的主配置文件为
named.conf,一般位于“/etc/”目录中,如果使用了bind-chroot功能,则可能位“/var/named/chroot/etc/”目录中
下面是全局配置部分最常见的配置项及其注解:
- options {
- listen-on port 53 { 1.1.1.1; }; //设置named服务监听的端口及IP地址
- directory "/var/named"; //设置区域数据库文件的默认存放位置
- allow-query { 192.168.1.0/24; 172.16.16.0/24; }; //允许DNS查询的客户端
- recursion yes; //设置允许递归查询
- dump-file "/var/named/data/cache_dump.db"; //设置缓存数据库文件位置
- statistics-file "/var/named/data/named_stats.txt"; //设置状态统计文件位置
- };
在以上配置内容中,除了
directory项通常保留以外,其他的配置项都可以省略,若不指定listen-on配置项,named默认在所有可用的IP地址上监听服务。服务器处理客户端的DNS解析请求时,如果在named.conf文件中找不到相匹配的区域,将会向根域服务器或者由forwarders项指定的其他DNS服务器提交查询。
以下是区域配置部分常见的配置项:
- zone "." IN { //设置根区域
- type hint; //设置区域类型(hint表示根域、masters表示主域、slave表示从域)
- file "named.ca"; //设置对应的根域地址数据库文件
- };
- zone "doubao.com" IN { //设置正向DNS区域
- type master;
- file "doubao.zone"; //设置对应的正向区域地址数据库文件
- allow-transfer { 200.200.200.1; }; //设置允许下载区域数据库信息的从名服务器
- allow-update { none; }; //设置允许动态更新的客户端地址(none为禁止)
- };
- zone "1.168.192.in-addr.arpa" IN { //设置反向DNS区域名称
- type master;
- file "192.168.1.arpa"; //设置对应的反向区域地址数据库文件
- };
在以上配置中,需要注意的地方如下:
每个
zone区域都是可选的,具体根据实际需要而定;
zone配置部分的“
IN”关键字可以省略;
反向区域的名称由倒序的网络地址和“
.in-addr.arpa”组合而成,例如对于192.168.1.0/24网段,其反向域名为“1.168.192.in-addr.arpa”;
区域设置中的一部分配置内容(如
allow-transfer、allow-update等)也可发放在全局配置中。
4.
区域数据库配置文件
区域数据库配置文件位于“
/var/named/”目录中,如果使用了bind-chroot功能,则可能位于“/var/named/chroot/var/named”目录中。
全局
TTL配置项及SOA记录
- $TTL 600
- @ IN SOA doubao.com. admin.doubao.com. ( //设置SOA标记、域名、域管理邮箱
- 1997022700 ; Serial //更新序列号,用于标记地址数据库的变化
- 28800 ; Refresh //刷新时间,从域名服务器更新该地址数据库文件的间隔时间
- 14400 ; Retry //重试延时,是刷新时间的补充
- 3600000 ; Expire //失效时间,超过此时间仍无法更新,则放弃
- 86400 ) ; Minimum //设置无效地址解析记录的默认缓存时间
- @ IN NS ns1.doubao.com.
- IN MX 10 mail.zpp.com.
- ns1 IN A 172.16.16.1
- mail IN A 172.16.16.1
- www IN A 172.16.16.1
- ftp IN CNAME www
在上述配置项中,时间参数的默认单位为秒,也可以使用以下单位:
M(分)、H(时)、W(周)、D(天);从域名服务器根据更新序列号决定是否需要重新下载地址数据库,如果发现序列号与上一次的相同,则不会下载地址数据库,文件中的@表示当前的DNS区域名,相当于“zpp.com”,“
admin.zpp.com.”表示管理员的电子邮件地址(由于“@”符号已有其他含义,因此将邮件地址中的“@”用“.”代替。
从上面可以看到在区域数据配置文件中有以下几种常用的地址解析记录:
NS域名服务器
(name server)记录,用于设置当前域的DNS服务器的域名地址。
MX邮件交换(
Mail Exchange)记录,用于设置当前域的邮件服务器域名地址。
CNAME别名(
Canonical Name)记录,用于设置别名
5.
地址数据库文件的特殊应用
1>.基于
DNS解析的负载均衡
当同一个域名对应有多个不同
IP地址的服务器时,可以通过DNS区域数据库文件实现简单的轮询负载均衡,只需要在地址数据库中添加相应的多条A记录即可。
2>.泛域名解析
当同一个
IP地址的服务器对应有相同域内大量不同的域名时(如:51cto的博客域名解析服务),可以通过DNS区域数据文件使用泛域名解析,只需要添加一条主机地址为“*”的A地址记录即可(作用类似于通配符)。
例如:
51cto博客使用同一台Web服务器提供虚拟主机服务,IP地址为173.16.16.173,对应的各虚拟主机名均属于51cto.com域,如2009.blog.51cto、xxx..blog.51cto等,在DNS区域“51cto.com”的地址数据库最后一行可添加如下图的泛域名解析记录。
* IN A 192.168.1.1
|
3>.子域授权(或委派)
当
DNS区域内层次较多,域名数量巨大时,就可以使用子域授权,将某个子域内各域名的解析工作交给另外一台服务器来完成。
例如:在
DNS区域“.doubao.com”的地址数据库文件中设置子域授权,将“abc.doubao.com”子域授权给abc公司的DNS服务器(IP地址为192.168.1.1)如下面的设置即可.
好了,在进行了上述的了解后,我们来进行下列的实验:
实验部分:
1、
规划
:
我们假设在互联网上创建了主机为
doubao.com;IP地址网段为172.16.111.0/24这个网段;
- ns 172.16.111.1 //ns服务器的地址
- www 172.16.111.1,172.16.111.3
- mail 172.16.111.2 //邮件服务器
- ftp www //ftp为www的别名
1、
BIND
的安装:
首先要注意的是当用
yum list all | grep “^bind”时,要注意安装的
bind版本需要一致
由于我的
bind已经安装好,我大致说下需要的步骤(涉及到卸载以前的版本这里不再去进行安装)rpm –e bin-libs bin-utils //卸载以前的旧版本
yum install bind97-libs bind97-utils //安装
libs和utils 其中的libs文件是bind需要依赖的库文件,安装时要一同安装:
- yum install bin97 –y //安装bind97
- rpm –ql bin97-utils //可以查看一下utils包给我们提供的工具,其中的前四个是客户端非常重要的命令行工具,
dig //到域名服务器中查找其相关信息
-t 指定资源记录类型并指明通过哪个服务器来查询能得到很多
2
、配置相关的文件
配置
named.conf文件
- mv /etc/named.conf /etc/named.conf.org //备份下原来的文件,
- vim /etc/named.conf //配置自己的named.conf
- options { //注意花括号前要有空格
- directory “/var/named”; //每个语句后边都要有分号
- };
- zone “.” IN { //定义根
- type hint;
- file “named.ca”
- };
- zone “localhost” IN { //定义正向DNS区域
- type hint;
- file “named.localhost”;
- };
- zone “0.0.127.in-addr.arpa” IN { //定义反向DNS区域
- type master;
- file “named.loopbak;
- };
- :wq //保存退出
注意:基本上这样一个文件就定义好缓存服务器的配置了!
接下来我们来改变其属组属主和其文件权限
- chown root:named /etc/named.conf
- chmod 640 /etc/named.conf
- named-checkconf //检查语法错误
- named-checkzone ‘.’ /var/named/named.ca //检查zone配置
- named-checkzone ‘localhost’ /var/named/named. localhost
- named-checkzone ‘0.0.127.in-addr.arpa’ /var/named/named.loopback
这个时候,先确定下
SELnux是否在启动中,如启动了得现将其关闭:
getenforce
Enforcing //开启状态
Permissive//关闭状态
setenforce 0 //关闭
//临时关闭
setenforce 1 //开启
“久生效
# vim /etc/selinux/config
将其中的
SELINUX=enforcing替换为SELINUX=permissive,替换后不会立即生效”
service network restart
//重启网络服务
然后用
netstat来查看DNS服务是否真的启动起来了:
下图可以看到其
53号端口已经打开
然后编辑
/etc/resolv.conf文件,将其ip地址改为172.16.111.1
这个时候,一个
DNS的缓存服务器已经创建好了!
3
、创建互联网服务器
2步骤中,我们已经创建好了一个DNS缓存服务器,根据我们刚准备创建的doubao.com。我们来进行下面的操作
我们来编辑/etc/named.conf追加新的区域:
- zone "doubao.com" IN { //正向解析
- type master;
- file "doubao.com.zone";
- };
- zone "111.16.172.in-addr.arpa" IN { //反向解析
- type master;
- file "172.16.111.zone";
- };
因为两个zone的文件还没有创建,所以我们要到var/named/下创建两个文件
cd /var/named
vim doubao.com.zone
- $TTL 600 /定义TTL值,以便后边简写
- doubao.com. IN SOA ns1.doubao.com. admin.doubao.com.
- 20120401
- 1H
- 5M
- 2D
- 6H)
- doubao.com. IN NS ns1.doubao.com
- MX IN MX 10 mail.doubao.com.
- ns1 IN A 172.16.111.1
- mail IN A 172.16.111.2
- www IN A 172.16.111.1
- www IN A 172.16.111.3
- ftp IN CNAME www
出来改其权限属组
- chmod 640 doubao.com.zone
- chown root:named doubao.com.zone
- named-checkzone “doubao.com” /var/named/doubao.com.zone
- vim 172.16.111.zone
- $TTL 600
- @ IN SOA ns1.doubao.com. admin.doubao.com. (
- 2013040101
- 1H
- 5M
- 2D
- 6H )
- @ IN NS ns1.doubao.com.
- 1 IN PTR ns1.doubao.com.
- 1 IN PTR www.doubao.com.
- 2 IN PTR mail.doubao.com.
- 3 IN PTR www.doubao.com.
- 出来改其权限属组
- chmod 640 172.16.111.zone
- chown root:named 172.16.111.zone
- named-checkzone “doubao.com” /var/named/172.16.111.zone
到这里,我们已经创建好了。所以此刻我们可以重启网络服务了!
sercive network restart
然后可以dig查看或者nslookup查看
本文转自 陈延宗 51CTO博客,原文链接:http://blog.51cto.com/407711169/1170978,如需转载请自行联系原作者