(一)跟我一起玩Linux网络服务:DNS服务——BIND(/etc/named.conf、/var/named)设置实现和解释


2015年3月24更新 添加了要加的配置域名解析器(否则会找不到域名)     一、创建该实验的的模型   配置完gate虚拟机的两张网卡后,就启动gate的转发 [root@localhost root]# vi /etc/sysctl.conf ... net.ipv4.ip_forward = 1 ...   修改成以上的形式,net.ipv4.ip_forward=1是指表示转发,0表示不转发   vm1和vm2要添加到达对方的路由 vm1上: # route add -net 192.168.128.0/24 gw 10.10.10.8   vm2上: # route add -net 10.10.10.0/24 gw 192.168.128.8   通过ping命令互相ping通     二、开始BIND的设置:   1、打开/etc/name.conf [root@localhost root]# vi /etc/named.conf
    添加上了后面一段 zone "gr.org" IN {                    //指定一个域名为gr.org的正向区域
        type master;
        file "gr.org.db";                //指定文件名是gr.org.db
};    
区域Type:
master: 主域服务
slave: 从域服务
stub: 只复制主域的NS记录,属于BIND特有功能.
hint: 设定初始化设置根域服务器所用的参数.
forward: 域转发设置
2、添加域名解析文件 添加一个gr.org的区域(zone),类型为主机(master,还有两种是slave和hint) 文件就在option定义的目录下/var/named 在该目录下创建gr.org.db文件 创建该文件,并插入以下的内容 [root@localhost root]# vi /var/named/gr.org.db    
TTL
time to live 生存时间,默认为秒
@

表示相应的域名,表示一个域名定义的开始
这里代表gr.org

IN

表示后面的数据使用的是INTERNET标准

SOA

表示授权开始

ns.gr.org.

该域的主域名服务器

root.gr.org.

管理员邮件地址(这里的邮件地址中的用.来代替常见的邮件地址的@.)

20150317

serial(d. adams)表示配置文件的修改版本,格式是年月日当日修改的次数,每次修改时都应该修改这个数字,

要不然所做修改的不会更新到网上的其它DNS服务器的数据库上,即你所做的更新很可能对于不以你你的所配置

的DNS服务器数据库上,即你所做的更新很可能对于不以你的所配置的DNS服务器为DNS服务器的客户端来说就

不会反映出你的更新,也就对他们来说你更新是没意义的

6H

refresh,定义以单位(M分,H时,W周,默认是秒即不带单位)的刷新频率,即规定从域名服务器多长时间查

询一个主服务器,以服务器的数据的是最新的

30M

retry,以30分钟的时间间隔重试,即当从服务器试图在主服务器上查询更新时,而连接失败了,则这个值规定

了从服务器多长时间后重试

1W

expire,规定从服务器在向主服务器更新失败之后清除记录的时间

15M

minimum TTL,规定缓冲服务器不能与主服务器联系上的清除记录时间

NS

net server,表示该主机是域名服务器

A

address,定义了一条A记录,表示该主机名到IP地址的对应记录

MX

mail exchange,定义一条邮件记录

CNAME

定义了对应主机的一个别名

PTR

指一条反向域名解析PTR记录,类似A记录(PTR指针记录由IP地址提供商提供)

 (图表2016-11-02更新) { 配置域名解析器 #cat > /etc/resolv.conf nameserver 10.10.10.10 DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。 resolv.conf的关键字主要有四个,分别是: nameserver //定义DNS服务器的IP地址 domain //定义本地域名 search //定义域名的搜索列表 sortlist //对返回的域名进行排序 此处是2015/3/24完善的}   3、测试设置是否完成 设置完成后,可用cat命令查看是否设置完整,确认后 使用命令   # service named start 启动服务,提示成功启动即可使用下面的命令来查看是否能连接到本机设置的DNS { 如果要开机启动就是用下面的命令 chkconfig named on 此处是2015/3/24完善的} (1)测试vm1上能否查询到该域名 # nslookup -sil www.gr.org 如果出现 **  server can't find www.gr.org: SERVFAIL 可以查看/etc/named.conf和/var/named/下的相关文件,这里是gr.org.db是否设置出错,一个地方出错都不会执行   (2)测试vm2上能否查询到该域名 成功之后,可以在vm2上查看是否存在 [root@localhost root]#  nslookup -sil www.gr.org
;; connection timed out; no servers could be reached 出现这个问题,很大程度上是由于gate机器上已经关掉该端口了,所以就使用关掉防火墙的简单方法开启该端口(53)。 在gate虚拟机上 # service iptables stop   (3)测试Windows上能否查询到该域名 使用Windows系统测试是否存在 先试试ping www.gr.org 看可不可以ping的通,一般可以的(应为我们也有这个网址被用了),那么如何判断是否是连我们的vm1的? 那就要断掉本地网络再试试ping命令 发现ping www.gr.org是不通的,而ping 10.10.10.10是通的,原因是没有设置DNS,设置方法如下: 1.关闭本地网络(以太网) 2.把vm1的DNS改为vm1的ip 再试试 >ping www.gr.org   4、在上面的基础上进行添加反向域名解析 (1)下面就要我们加上反向域名解析域区 # vi /etc/named.conf  添加以下的语句(内容) zone "10.10.10.in-addr.arpa" IN{                    //定义一个ip是10.10.10.*的反向域区         type master;         file "10.10.10.db"; }; 注:如果在file下面加上一句allow-transfer {192.168.6.4;}; 就是说指定从服务器,从服务器上面就要加上主服务器的ip即加上 master {192.168.6.3;};   (2)添加反向域名解析文件和配置 再用命令# vi /var/named/10.10.10.db 添加如下的配置信息 $TTL 86400
@       IN      SOA     ns.gr.org       root.gr.org.(
                20150317  6H  30M  1W  15M)
          IN      NS      ns.gr.org.
10      IN      PTR     ns.gr.org.
10      IN      PTR     www.gr.org.
11      IN      PTR     mail.gr.org.   注: PTR        指一条反向域名解析PTR记录,类似A记录(PTR指针记录由IP地址提供商提供)   注:这里刚好是对称的,不容易看出,其实就比如192.168.133.0/24(就是用133.168.192的特殊域),后面的10,11就类似于用192.168.133.0/24的来表示就是10.133.168.192.in-addr.arpa(也就是192.168.133.10),这里是10.10.10.10.in-addr.arpa和11.10.10.10.in-addr.arpa   (3)测试配置是否完成 使用命令# rndc reload重启域名服务 通过# nslookup -sil 10.10.10.10 (在vm2也可以看到一样的信息) 就可以看到了信息 Server:         10.10.10.10
Address:        10.10.10.10#53

10.10.10.10.in-addr.arpa        name = www.gr.org.
10.10.10.10.in-addr.arpa        name = ns.gr.org. 有两条,证明我们的反向域名解析也配置好了   注:有什么意见或建议可以在评论区回复