这里我们总的来说下对DNS的理解:
-->正向解析与反向解析:
1)正向解析:
正向解析是指域名到IP地址的解析过程。
2)反向解析:
反向解析是从IP地址到域名的解析过程;反向解析的作用为服务器的身份验证。
-->主从DNS服务器:
主DNS服务器(Master DNS): 数据库更新由管理员手动完成;
辅助DNS服务器 (SlaveDNS):数据库更新从主服务器或其他辅助DNS服务器那里完成;
-->DNS 子域:
DNS服务器不仅可以为属于本域的客户端用户提供解析服务,也可以授权给某个域,让其也可以提供相应的DNS解析服务,称为子域授权.
-->DNS 子域委派:
具体的作用是为了方便管理 提高DNS的解析性能,实现通信负载平衡.
-->DNS 转发器的作用:
解析某本机不负责的区域内的名称时不转发给根,而是转给指定的主机;
根服务只有13个,如果DNS的查询全部都发送到根服务器效率比较低下,启动DNS转发器后,DNS进行查询的时候,如果遇到本机不能解析的查询,就向DNS转发器请求查询,DNS转发器指定的地址一般都是比较大的DNS服务器,通常接受大量的DNS查询操作,比如电信的核心DNS.
-->ACL-访问控制列表:
将多个一同处理的地址定义为一组,并且给它起个名字,这就是列表;
-->view 视图:
所谓视图简单来说就是,将DNS服务器一切为两个部分;
所谓视图我们把一个DNS服务器工作在不同的多个逻辑界面上,一个区域可以再不同的视图中各自定义一次;
如果我们定义了 视图 所有区域都必须定义在 view 中,包括根;
-->资源记录:
某些资源记录不仅包括DNS域中服务器的信息,还可以用于定义域,即指定每台服务器授权了哪些域,这些资源记录就是SOA和NS资源记录。
1)SOA资源记录: 每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA记录。SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。
2)NS资源记录: 名称服务器(NS)资源记录表示该区的授权服务器,它们表示SOA资源记录中指定的该区的主和辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS记录。
3)A资源记录: 地址(A)资源记录把FQDN映射到IP地址,因而解析器能查询FQDN对应的IP地址。
4)PTR资源记录: 相对于A资源记录,指针(PTR)记录把IP地址映射到FQDN。
5)CNAME资源记录: 规范名字(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网络的实现细节,使连接的客户机无法知道。
6)MX资源记录: 邮件交换(MX)资源记录为DNS域名指定邮件交换服务器。邮件交换服务器是为DNS域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。
-->DNS查询:分为递归查询和迭代查询两种.
(1) 递归查询: 即客户端向本地DNS服务器请求查询域名,本地DNS服务器收到查询任务后如自身无法回答则向其他服务器查询,直到查到结果后返回结果给客户端。期间DNS服务器可能要查询很多其他DNS服务器。
(2)迭代查询:即客户端向本地服务器请求查询域名,本地DNS服务器无法回答,则给客户端返回另一个能查询域名的服务器地址,客户端再向另一服务器查询,期间可能客户端需查询多个DNS服务器,最终查到结果。
注意:如果您感觉内容太长,那么请到以下分支查看你所需要的内容:
1. 总结 DNS and BIND: http://xiaomazi.blog.51cto.com/5891742/1376225
2. 分支1- 正/反向域名解析之yum与编译安装: http://xiaomazi.blog.51cto.com/5891742/1376228
3. 分支2- 主从DNS服务器: http://xiaomazi.blog.51cto.com/5891742/1376231
4. 分支3- 子域授权、请求转发: http://xiaomazi.blog.51cto.com/5891742/1377087
5. 分支4- ACL 及 view视图: http://xiaomazi.blog.51cto.com/5891742/1377090
需求介绍:
一、DNS的常用命令
二、如何使用 yum安装 并配置使用?
1.手动添加配置文件;
2.利用原有的配置文件文件进行修改;
3.以及反向解析的实现;
三、如何实现 BIND主从复制?
1.配置正向主从服务的实现;
2.配置反向主从服务的实现;
3.区域传送的安全控制;
四、如何实现 子域授权、请求转发及ACL?
1.远程管理BIND的工具;
2.子域授权;
3.请求转发;
五、ACL 设置 与 view 视图;
六、如何在 编译环境安装bind ,配置并使用?
一、DNS的常用命令:
1.测试解析命令.
1). dig命令:
# dig [-t type] [-x addr] [name] [@server]
+[no]trace-->(跟踪解析过程)
+[no]recurse-->(是否使用递归的方式)
+[no]tcp -->(是否使用tcp查询,而不使用udp)
+[no]question-->(是否隐藏问题)
+[no]answer-->(是否隐藏答案)
+[no]authority-->(是否隐藏权威段)
+[no]additional-->(是否隐藏附加段)
2). host命令:
# host [-t type] {name} [server]
例子:
[root@localhost ~]# host -t MX xiaoma.com
xiaoma.com mail is handled by 10 mail.xiaoma.com.
[root@localhost ~]#
3). nslookup命令(交互式的命令):
nslookup>
server DNS_SERVER_IP
set q=TYPE
{name}
例子:
[root@localhost ~]# nslookup
> set q=A
> www.xiaoma.com
Server:172.16.17.202
Address:172.16.17.202#53
Name:www.xiaoma.com
Address: 172.16.17.203
>
2.启动/重加载命令:
1).启动命令:
# named -u named
# servcice named start(这个可能会依赖rndc.key的)
2).重载命令:
# service named reload
# killall -1 named
# killall named(关闭)
3.测试语法错误:
# service named configtest
# named-checkconf
# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone
二、bind的基本使用:
1、正向解析配置:
第一种:手动创建配置文件及区域文件:
前提:
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
1).将准备好的bind包安装:
[root@localhost ~]# yum -y install bind
2).注意: 这里没有使用源配置文件,而是手动写配置文件:
[root@localhost etc]# mv /tmp/named.conf /etc/named.conf.origin
3).新建编辑配置文件/etc/named.conf:
4).配置区域文件(这里是系统自带的哦):
⑴编辑/var/named/named.loopback文件(如果是新建的文件要修改其相关属性):
[root@localhost ~]# vim /var/named/named.loopback
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
PTR localhost.
⑵编辑/var/named/named.localhost文件(如果是新建的文件要修改其相关属性):
[root@localhost ~]# vim /var/named/named.localhost $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1
⑶编辑/var/named/xiaoma.com.zone文件(手动创建):
5).修改named.conf属性:
[root@localhost named]# chown root:named /var/named/xiaoma.com.zone
[root@localhost named]# chmod 640 /var/named/xiaoma.com.zone
[root@localhost etc]# chown root:named /etc/named.conf
[root@localhost etc]# chmod --reference=/etc/named.conf.origin /etc/named.conf(1)-->注意:这个(1)和(2)是一样的.
[root@localhost etc]# chmod 640 /etc/named.conf(2)
6).启动测试语法/手动测试语法的使用:
第一:启动时测试: [root@localhost etc]# service named configtest zone localhost/IN: loaded serial 0 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 第二:手动测试: [root@localhost etc]# named-checkconf [root@localhost etc]# 区域文件是系统自带的,我这里就没有必要检查语法了吆. root@localhost named]# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone zone xiaoma.com/IN: loaded serial 2014031301 OK [root@localhost named]#
7).启动named服务:
[root@localhost etc]# service named start-->启动时需要产生随机数. Generating /etc/rndc.key: [root@localhost etc]# --> 如果这里启动不了就使用下面的这个命令:以root的身份启动,启动后以named用户执行. [root@localhost etc]# named -u named
8).使用dig命令测试(这里介绍了下面绝不会介绍):
2.正向解析配置:
第二种:直接修改配置文件及区域文件:
前提:
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
1).将准备好的bind包安装:
[root@localhost ~]# yum -y install bind
2).修改配置文件:named.conf:
注意: 这里只是把注释的内容贴出来了: // listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; // allow-query { localhost; }; // dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; //include "/etc/named.root.key";
3).修改区域文件/etc/named.rfc1912.zones:
在文章尾部添加:
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "xiaoma.com" {
type master;
file "xiaoma.com.zone";
};
4).修改其属性:
[root@localhost named]# chmod 640 /var/named/xiaoma.com.zone
[root@localhost named]# chown root:named /var/named/xiaoma.com.zone
[root@localhost named]# named-checkconf
[root@localhost named]# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone
5).启动服务/重新加载服务:
[root@localhost named]# named -u named
[root@localhost named]# service named reload
[root@localhost named]# killall -1 named
6).测试解析:
[root@localhost ~]# dig -t MX xiaoma.com
[root@localhost ~]# dig -t CNAME pop.xiaoma.com
[root@localhost ~]# dig -t MX xiaoma.com
[root@localhost ~]# dig -t CNAME pop.xiaoma.com
[root@localhost ~]# dig -t CNAME ftp.xiaoma.com
[root@localhost ~]# dig -t A www.xiaoma.com
[root@localhost ~]# dig -t NS xiaoma.com
[root@localhost ~]# dig -t NS xiaoma.com @172.16.17.202
[root@localhost ~]# dig -t A mail.xiaoma.com
--->我们以它来测试查询 mail 的 A 记录:
上下图片对比:
6).使用 +trace 跟踪解析过程(要连上网络的吆):
接上面的环境基础(2.正向解析配置:):
3.配置反向解析:
1).定义区域文件/etc/named.rfc1912.zones:
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "17.16.172.in-addr.arpa"{
type master;
file "172.16.17.zone";
};
2).创建区域文件172.16.17.zone:
复制文件保持属组及权限: [root@localhost named]# cp -p xiaoma.com.zone 172.16.17.zone
3).编辑区域文件172.16
.
17
.zone:
4).启动测试语法/重新加载:
5).测试解析:
接上,其它解析:
[root@localhost named]# dig -x 172.16.17.204
[root@localhost named]# dig -x 172.16.17.203
6).host命令测试解析:
接上 2 和 3 的配置的基础之上:
三、区域传送的 主从复制:
注意:
这里的主机名字我改了,为了方便认出 主和从 的;
主DNS服务器: host1
从DNS服务器: host2
----不在同一网段也可以同步----
前提:
挂载光盘:
[root@host2 ~]# mkdir /media/cdrom
[root@host2 ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@host2 ~]# cd /etc/yum.repos.d/
[root@host2 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@host2 yum.repos.d]# vim media1.repo
[media1]
name=media1
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
-->将准备好的bind包安装:
[root@localhost ~]# yum -y install bind
1.配置正向主从服务的实现:
1).主服务器配置 /var/named/xiaoma.com.zone:
2).主服务器配置 重新加载区域文件:
[root@host1 ~]# service named reload
Reloading named: [ OK ]
3).测试主从服务器是否能通信:
2).从服务器配置 /etc/named.conf:
注意:
这里只是把注释的内容贴出来了:
// listen-on port 53 { 127.0.0.1; };
// listen-on-v6 port 53 { ::1; };
// allow-query { localhost; };
// dnssec-enable yes;
// dnssec-validation yes;
// dnssec-lookaside auto;
// bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
//include "/etc/named.root.key";
3).从服务器配置 vim /etc/named.rfc1912.zones:
4).从服务器配置 启动并查看端口53是否启动:
[root@host2 ~]# named -u named
[root@host2 ~]# ss tunl
5).从服务器配置查看/var/named/slaves/xiaoma.com.zone是否以同步:
6).从服务器配置 测试解析:
7).主服务器配置 重新加载并修改序列号:
I.添加一条记录并修改序列号:
II.重新加载:
[root@host1 ~]# service named reload
Reloading named: [ OK ]
8).查看日志:
9).从服务器 查看是否同步:
10).其它解析:
[root@host2 ~]# dig -t NS xiaoma.com @172.16.17.100
[root@host2 ~]# dig -t MX xiaoma.com @172.16.17.100
[root@host2 ~]# dig -t CNAME pop.xiaoma.com @172.16.17.100
[root@host2 ~]# dig -t CNAME ftp.xiaoma.com @172.16.17.100
接上(1.配置正向主从服务的实现)
2.配置反向主从服务的实现:
1).从服务器配置 vim /etc/named.rfc1912.zones :
2).从服务器 测试语法并重新加载:
[root@host2 ~]# named-checkconf
[root@host2 ~]# service named reload
Reloading named: [ OK ]
3).从服务器 查看日志:
4).从服务器 查看同步文件:
5).将主服务器的记录添加至反向记录:
我们在主服务器(/var/named/172.16.17.zone)里面加一条NS记录,告诉主服务器有一个从服务器.(ns2、img以及从服务器的记录).
6).启动服务并重新加载:
7).主服务器 查看日志:
8).从服务器 查看同步:
接上面(2.配置反向主从服务的实现)
3.区域传送的安全控制:
注意:我们都知道默认在未设置安全控制的情况下,DNS服务器的区域传送是传送所有服务器的,那么我们应该如何防范别人同步你的服务器的数据呢?
1).主服务器配置 vim /etc/named.rfc1912.zones :
2).主服务器配置 测试语法/重加载:
[root@host1 ~]# named-checkconf
[root@host1 ~]# service named reload
Reloading named: [ OK ]
[root@host1 ~]#
3).主服务器 测试区域传送:
4).从服务器 测试区域传送:
6).定从服务器的安全控制 vim /etc/named.rfc1912.zones:
7).从服务器 测试语法/重加载
[root@host2 ~]# named-checkconf
[root@host2 ~]# service named reload
Reloading named:
8).从服务器 测试:
接上面的环境配置.
四、如何实现 子域授权、请求转发及ACL?
1.远程管理BIND的工具:
简单介绍:
rndc: Remote Name Domain Controller
rndc: 密钥
rndc: 持有一半密钥,保存于rndc的配置文件中;
BIND:持有一半密钥,保存于主配置文件中;
常用选项:
reload : 重读
reload zone : 重加区域文件
reconfig: 重读配置文件并加载新增的区域;
querylog: 关闭或开启查询日志;
flush: 清空服务器的缓存;
flushname name: 清空指定名称相关的缓存;
trace: 打开debug,debug有级别的概念,每执行一次提升一次级别;
trace LEVEL: 指定deb②ug的级别;
如果rndc无法正常工作,可尝试使用rndc-confgen 生成/etc/rndc.conf配置文件,并将配置文件中的后半部分复制到BIND的主配置文件中并按指示启用即可.
如: # rndc-confgen -r /dev/urandom > /etc/rndc.conf
# service named reload
还有一个就是在下面的小7)中的方法实现自动生成rndc.key文件.
1).首先主服务器上生成rndc的密钥:
I.生成密钥:
[root@host1 ~]# rndc-confgen -r /dev/urandom > /etc/rndc.conf
II.密钥介绍:
2).在主服务器 将/etc/rndc.conf属于BIND的复制到/etc/named.conf
3).在主服务器上 查看状态:
4).再主服务器上查看端口:
[root@host1 ~]# ss -tunl
5).从服务器上升成密钥:
与主服务器的步骤一样:1)-2)-3)-4)-5) 这里就不贴图了哈.
6). 例子:
①第一次开启,执行第二次关闭:rndc querylog
接上:
②停止rndc:
[root@host2 ~]# rndc stop
[root@host2 ~]# ps aux | grep named
root 263701.00.1103252828pts/0S+20:450:00grepnamed
[root@host2 ~]# named -u named
③trace的使用:
[root@host2 ~]# rndc trace
[root@host2 ~]# rndc trace 执行三次
[root@host2 ~]# rndc trace
[root@host2 ~]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 2
worker threads: 2
number of zones: 21
debug level: 3符合上面的三次.
xfers running: 0
xfers deferred: 0
soa queries inprogress: 0
query logging isOFF
recursive clients: 0/0/1000
tcp clients: 0/100
server isup andrunning
[root@host2 ~]# rndc trace 0 (指定级别)
[root@host2 ~]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 2
worker threads: 2
number of zones: 21
debug level: 00级别
xfers running: 0
xfers deferred: 0
soa queries inprogress: 0
query logging isOFF
recursive clients: 0/0/1000
tcp clients: 0/100
server isup andrunning
[root@host2 ~]#
7).如何自动生成rndc.key , vim /etc/rc.d/init.d/named文件:
2.BIND子域授权的实现(主要将正向的,反向的很麻烦):
子域名和委派的区别?
子域文件在父域文件中
委派有独立的区域文件
-->实验环境
三台虚拟机:一台主,一台从,一台子域.
注意这三台都要使用yum安装bind吆.
前提:
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
>>>将准备好的bind包安装:
[root@localhost ~]# yum -y install bind
主配置文件不需要更改;
1).主服务器配置 正向授权文件 vim /etc/rc.d/init.d/named:
接上 测试语法:
[root@host1 ~]# named-checkconf [root@host1 ~]# named-checkzone "xiaoma.com"/var/named/xiaoma.com.zone zone xiaoma.com/IN: tech.xiaoma.com/NS 'dns.tech.xiaoma.com'(out of zone) has no addresses records (A or AAAA) zone xiaoma.com/IN: loaded serial 2014031203 OK [root@host1 ~]# rndc reload [root@host1 ~]# service named restart
2).这里配置了一台子域服务器IP:172.16.200.21:
3).子域配置/etc/named.conf:
// listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; // allow-query { localhost; }; // dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; //include "/etc/named.root.key";
4).子域配置 定义/etc/named.rfc1912.zones :
5).子域配置 区域文件/var/named/tech.xiaoma.com.zone:
6).赋予权限属性并启动:
[root@localhost named]# hown root:named tech.xiaoma.com.zone
[root@localhost named]# chmod 640 tech.xiaoma.com.zone
[root@localhost named]# named-checkzone "xiaoma.com" /var/named/tech.xiaoma.com.zone
zone xiaoma.com/IN: loaded serial 2014031201
OK
[root@localhost named]# named-checkconfig
[root@localhost named]# service named start
Starting named: [ OK ]
[root@localhost named]# rndc reload
server reloadsuccessful
[root@localhost named]#
7).子域 测试解析A记录:
8).主服务器解析NS记录,虽然有授权,但是不以父域的相应为结果(父域能解析子域).
9).在子域上解析父域(子域不能解析父域)--这是需要转发功能的:
接上2配置:
3.配置区域转发:转发域.
1).子域配置 /etc/named.rfc1912.zones:
2).重载服务.
[root@localhost named]# named-checkconf
[root@localhost named]# rndc reload
server reloadsuccessful
不行的就用这个:
[root@localhost named]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@localhost named]#
3).在子域上测试解析父域的A记录:
4).子域配置:怎么解析其它的服务器呢?如www.google.com
I.配置/etc/named.conf文件:
II.配置/etc/named.rfc1912.zones:
五、ACL 设置 与 view 视图;
1.ACL 的简单配置:
1).ACL的安全控制选项:
allow-transfer {};
通常都需要启用;
allow-query {};
此项通常仅用于服务器是缓存名称服务器时,只开放查询功能给本地客户端;
allow-recursion { };
定义递归白名单;
allow-update { none; };
定义允许动态更新区域数据文件的主机白名单;
2).访问控制列表只有定义后才能使用;通常acl要定义在named.conf的最上方;
3).BIND有四个内置的acl:
any: 任何主机
none: 无一主机
local: 本机
localnet: 本机的所在的网络;
4).配置实例 /etc/named.conf文件中定义:
5).启动并检测语法错误:
[root@host1 ~]# named-checkconf
[root@host1 ~]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
[root@host1 ~]#
2.view视图 的简单配置:
如果我们定义了 视图 所有区域都必须定义在 view 中,包括根;
前提:
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
1).将准备好的bind包安装:
[root@localhost ~]# yum -y install bind
2).修改配置文件:named.conf:
注意: 这里只是把注释的内容贴出来了: // listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; // allow-query { localhost; }; // dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; //include "/etc/named.root.key";
3).修改区域文件/etc/named.rfc1912.zones:
[root@localhost ~]# vim /etc/named.rfc1912.zones //named.rfc1912.zones: // //Provided by Red Hat caching-nameserver package // //ISC BIND named zone configuration forzones recommended by //RFC 1912 section 4.1 : localhost TLDs and address zones //and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt //(c)2007 R W Franks // //See /usr/share/doc/bind*/sample/forexample named configuration files. // 定义内网的客户端为192.168.0.0/24的(根也在): view left { match-clients { 192.168.0.0/24; }; zone "."IN { typehint; file"named.ca"; }; zone "localhost.localdomain"IN { typemaster; file"named.localhost"; allow-update { none; }; }; zone "localhost"IN { typemaster; file"named.localhost"; allow-update { none; }; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"IN { typemaster; file"named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa"IN { typemaster; file"named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa"IN { typemaster; file"named.empty"; allow-update { none; }; }; 外网的区域: zone "xiaoma.com"IN { typemaster; file"xiaoma.com.left"; }; }; 定义外网客户端: view right { match-clients { 172.16.0.0/16; }; zone "xiaoma.com"IN { typemaster; file"xiaoma.com.right"; }; }; 定义其他网络找不到客户端,就匹配到外网上去: view default { match-clients { any; }; zone "xiaoma.com"IN { typemaster; file"xiaoma.com.right"; }; };
4).检查配置文件:
[root@localhost ~]# named-checkconf
5).配置区域文件 /var/named/xiaoma.com.left
6).配置区域文件 /var/named/xiaoma.com.right
7).赋予文件属性:
[root@localhost named]# chown root:named xiaoma.com.*
[root@localhost named]# chmod 640 xiaoma.com.*
8).启动服务:
[root@localhost named]# service named start
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
[root@localhost named]#ss -tunl
9).模拟IP地址:
[root@localhost ~]# ifconfig eth0:0 192.168.0.7/24 up
10).测试解析:
接上:
9).windows测试:
六、编译安装bind及应用:
>>>编译安装named(bind-
9.9
.
5
):
前提:配置好开发环境,安装包组(yum安装).
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
安装开发包组:
[root@xiaoma ~]# yum grouplist | grep Development
Desktop Platform Development
Development tools
Server Platform Development
[root@xiaoma ~]# yum -y groupinstall "Server Platform Development" "Desktop Platform Development" "Development tools"
1、下载源代码,编译安装:
1).将准备好的源码包解压并编译安装:
[root@xiaoma tmp]# tar xf bind-9.9.5.tar.gz [root@xiaoma tmp]# cd bind-9.9.5 [root@xiaoma bind-9.9.5]# ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --enable-threads --enable-epoll --disable-chroot root@xiaoma bind-9.9.5]# make root@xiaoma bind-9.9.5]# make install
2.创建主配置文件/etc/named/named.conf:
3.创建区域数据文件:
① 创建/var/named/named.ca :
[root@xiaoma ~]# mkdir /var/named
[root@xiaoma ~]# cd /var/named/
[root@xiaoma named]# dig -t NS . @172.16.0.1 > named.ca
② 创建/var/named/named.loopback
:
[root@xiaoma named]# vim named.loopback
$TTL 86400
@ IN SOA localhost. admin.localhost. (
2014031101
2H
10M
7D
1D )
IN NS localhost.
1 IN PTR localhost.
③ 创建/var/named/named.localhost :
[root@xiaoma named]# vim named.localhost
$TTL 86400
@ IN SOA localhost. admin.localhost. (
2014031101
2H
10M
7D
1D )
IN NS localhost.
localhost. IN A 127.0.0.1
④然后创建/var/named/xiaoma.com.zone
文件:
[root@xiaoma named]# vim /var/named/xiaoma.com.zone
$TTL 86400
@ IN SOA dns.xiaoma.com. dnsadmin.xiaoma.com. (
2014031101
2H
10M
3D
1D)
IN NS dns
IN MX 10mail
dns IN A 172.16.17.202
mail IN A 172.16.17.202
www IN A 172.16.17.1
4.创建系统用户,且测试启动:
① 创建用户:
[root@xiaoma ~]# groupadd -g 53 -r named
[root@xiaoma ~]# useradd -g named -r named
[root@xiaoma ~]# id named
uid=496(named) gid=53(named) groups=53(named)
[root@xiaoma ~]# ls /home/
② 赋予相应属性:
[root@xiaoma named]# chmod 640 /etc/named/named.conf /var/named/*
[root@xiaoma named]# chown root:named /etc/named/* /var/named/*
③ 设置PATH变量:
[root@xiaoma named]# echo 'export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH' > /etc/profile.d/named.sh
[root@xiaoma named]# cat /etc/profile.d/named.sh
[root@xiaoma named]# source /etc/profile.d/named.sh
④ 检查语法:
[root@xiaoma ~]# named-checkconf
[root@xiaoma ~]# named-checkzone "0.0.127.in-addr.arpa" /var/named/named.loopback
zone 0.0.127.in-addr.arpa/IN: loaded serial 2014031101
OK
[root@xiaoma ~]# named-checkzone "localhost" /var/named/named.localhost
zone localhost/IN: loaded serial 2014031101
OK
[root@xiaoma named]# named-checkzone "xiaoma.com" xiaoma.com.zone
zone xiaoma.com/IN: loaded serial 2014031101
OK
[root@xiaoma ~]# killall -1 named
⑤ 测试启动并查看端口:
[root@xiaoma named]# named -u named
[root@xiaoma named]# ss -tunl
⑥测试解析A记录:
[root@localhost named]# dig -t A www.xiaoma.com @172.16.17.202 ; <<>> DiG 9.9.5 <<>> -t A www.xiaoma.com @172.16.17.202 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49273 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.xiaoma.com. IN A ;; ANSWER SECTION: www.xiaoma.com. 86400 IN A 172.16.17.1 ;; AUTHORITY SECTION: xiaoma.com. 86400 IN NS dns.xiaoma.com. ;; ADDITIONAL SECTION: dns.xiaoma.com. 86400 IN A 172.16.17.202 ;; Query time: 0 msec ;; SERVER: 172.16.17.202#53(172.16.17.202) ;; WHEN: Fri Mar 07 01:37:43 CST 2014 ;; MSG SIZE rcvd: 93 [root@localhost named]#
5.提供服务脚本,并赋予权限:
1).脚本:
[root@xiaoma ~]# vim /etc/rc.d/init.d/named #!/bin/bash # # description: named daemon # chkconfig: - 25 80 # pidFile=/usr/local/bind9/var/run/named.pid lockFile=/var/lock/subsys/named confFile=/etc/named/named.conf [ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions start() { if [ -e $lockFile ]; then echo "named is already running..." exit 0 fi echo -n "Starting named:" daemon --pidfile "$pidFile" /usr/local/bind9/sbin/named -u named -c "$confFile" RETVAL=$? echo if [ $RETVAL -eq 0 ]; then touch $lockFile return $RETVAL else rm -f $lockFile $pidFile return 1 fi } stop() { if [ ! -e $lockFile ]; then echo "named is stopped." # exit 0 fi echo -n "Stopping named:" killproc named RETVAL=$? echo if [ $RETVAL -eq 0 ];then rm -f $lockFile $pidFile return 0 else echo "Cannot stop named." failure return 1 fi } restart() { stop sleep 2 start } reload() { echo -n "Reloading named: " killproc named -HUP #killall -HUP named RETVAL=$? echo return $RETVAL } status() { if pidof named &> /dev/null; then echo -n "named is running..." success echo else echo -n "named is stopped..." success echo fi } usage() { echo "Usage: named {start|stop|restart|status|reload}" } case $1 in start) start ;; stop) stop ;; restart) restart ;; status) status ;; reload) reload ;; *) usage exit 4 ;; esac
2).赋予相应属性:
[root@xiaoma ~]# chkconfig --add named
[root@xiaoma ~]# chkconfig --list named
named 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@xiaoma ~]# killall named -->关闭named
[root@xiaoma ~]# chmod +x /etc/rc.d/init.d/named
[root@xiaoma ~]# service named start
Starting named: [ OK ]
A smile is the most beautiful language!!!
以本人的理解而写出博客,如若有错误,欢迎指出.
---->小马子
转载于:https://blog.51cto.com/xiaomazi/1376225