• dns bind配置教程


    实验环境

    三台centos7虚拟机,一台ip为192.168.52.130,一台为192.168.52.131,最后一台为192.168.52.132

    安装bind

    使用yum -y insall bind bind-libs bind-utils来安装bind

    使用rpm -ql bind来查询bind的生成了哪些工具,比如dig等等

    备份文件

    之后的文件,比如/etc/named.conf等等,都是安装bind的之后有的,建议在实验前,使用mv 文件 文件.backup备份一下,等学习完后,在去看看默认文件是怎么样的

    另外bind的sample配置文件在/usr/share/doc/bind-*/sample下,可以进行参考

    配置bind

    单台dns服务器

    操作包含3个文件

    /etc/named.conf # 整个dns服务器配置

    /etc/named.rfc1912.zones # 上面的文件通过include命令导入此文件,bind的sample里面注释写着这个文件包含的zone应该包含所有localhost名称和地址的定义,如RFC1912中所建议的那样,并且不应该泄漏给别的nameserver(这只是一个规范,不是强制要求)

    /var/named/test.com.zone # 具体某个zone的配置,后面详细说明

    使用单台虚拟机ip为192.168.52.130

    配置文件

    /etc/named.conf

    options{
        directory "/var/named"; # 指定之后单独zone文件的路径
    };
    
    # 所有这个文件都有这样的配置,好像是root域的配置
    zone "." IN {
        type hint;
        file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones"; # 符合rfc要求的一类zone
    include "/etc/named.root.key"; # 暂不清楚,应该和加密相关
    

    /etc/named.rfc1912.zones

    zone "test.com" IN {
    	type master; # 主从设置,如果是从(slave),还要设置字段masters
    	file "test.com.zone";
    };
    

    /var/named/test.com.zone

    该文件和前面2个不一样,使用;为注释,前面2个可以#///**/

    $TTL 600 ;全局ttl设定
    ; 配置soa,必须要有一个,且要在开头,@表示当前域,也就是test.com,IN表示internet,soa为类型,test.com.暂不确定,好像是该域的ns的名称,root.qq.com为管理者邮箱,第一个.表示@,因为和当前域@重复,所以写成.
    @	IN	SOA	test.com.	root.qq.com(
    							1811201955 ; 序列号,在主从中有作用(serial)
    							1H ; 刷新时间(refresh)
    							5M ; 重试时间(retry)
    							1W ; 超时时间(expire)
    							10M) ; 否定答案缓存时间(minimum),以上中文来源于网络,英文来源于文档注释,单位不确定什么意思,比如那个w
    							
    ; 配置ns服务,至少要有一个,且必须配套要有ns的a记录
    	IN	NS	ns1
    ns1	IN	A	192.168.52.130
    
    ; 上面的写法可以这样,补全后缀,注意要加.,选择一个就好
    ;	 IN	NS	ns1.test.com.
    ; ns1	IN	A	192.168.52.130
    
    ; @表示当前域,即test.com,第二行名称为空,表示同上,即还有一个test.com,ip为2.2.2.2
    @	IN	A	1.1.1.1
    	IN	A	2.2.2.2
    
    ; 表示www.test.com的ip为3.3.3.3
    www IN	A	3.3.3.3
    
    ; 通配符,都指向255.255.255.255
    *	IN	A	255.255.255.255
    

    使用指令进行检测语法错对

    named-checkconf检测conf文件,自然也会检查include进去的文件

    named-checkzone "test.com" /var/named/test.com.zone检测zone文件

    启动dns

    service named start启动服务,其实就是systemctl start named.service

    service named stop关闭服务

    rndc reload用于在不关闭服务的情况下,更新配置,但是这个配置在配置文件有错误的情况下,也是显示更新成功,但是不会生效,使用要注意(todo)

    检查

    使用host -t a www.test.com 192.168.52.130来测试,如果没错,按照设置会输出1.1.1.12.2.2.2

    两台服务器测试主从同步设置

    主从服务器以zone为粒度,也就是这里这里的主从是相对于zone来说的,一个主服务器在这个zone里是主,在另一个就可能是从了

    就只操作test.com为例,进行操作,

    test.com的主服务器IP为192.168.52.130

    test.com的从服务器ip为192.168.52.131

    操作的文件

    主:

    修改/var/named/test.com.zone

    从:

    新增/etc/named.conf

    新增/etc/named.rfc1912.zones

    /var/named/slaves/test.com.zone(这个文件不用新建,bind在同步过程中,自动生成)

    配置文件

    主服务器/var/named/test.com.zone

    $TTL 600 
    @	IN	SOA	test.com.	root.qq.com(
    							1811201955 
    							1H
    							5M
    							1W 
    							10M)
    							
    	IN	NS	ns1
    ;新增ns记录,注意新增的名称为空,即为默认的test.com.
    	IN	NS	nsSlave
    ;新增对应的a记录
    nsSlave	IN	NS	192.168.52.131
    
    ns1	IN	A	192.168.52.130
    @	IN	A	1.1.1.1
    	IN	A	2.2.2.2
    www IN	A	3.3.3.3
    *	IN	A	255.255.255.255
    

    从服务器/etc/named.conf

    options{
        directory "/var/named";
    };
    
    zone "." IN {
        type hint;
        file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    

    从服务器/etc/named.rfc1912.zones

    zone "test.com" IN {
        type slave; # 这里为slave
        masters {192.168.52.130;}; # 这里注意加s和;
        masterfile-format text; # 默认生成的zone文件是乱码的,加上这个设置,输出就不会乱码了
        file "slaves/test.com.zone"; # 同步文件的路径
    };
    

    启动服务

    在检查完配置文件的准确性后,分别启动主和备服务器,可以看到从服务器在/var/named/下生成了zone文件

    使用host -t a www.test.com 196.128.52.131,如果没错误,在主从服务器下都会输出1.1.1.12.2.2.2

    防火墙

    使用centos7默认防火墙开启,只有22端口是开放的,如果在非本机测试,要开启端口53,这里我直接关闭了防火墙,使用systemctl stop firewalld

    测试增量传送

    修改主服务器的/var/named/test.com.zone文件,来进行增量修改

    $TTL 600 
    @	IN	SOA	test.com.	root.qq.com(
    							1811201955 
    							1H
    							5M
    							1W 
    							10M)
    							
    	IN	NS	ns1
    	
    ;新增ns记录,注意新增的名称为空,即为默认的test.com.
    	IN	NS	nsSlave
    ;新增对应的a记录
    nsSlave	IN	NS	192.168.52.131
    
    ns1	IN	A	192.168.52.130
    @	IN	A	1.1.1.1
    	IN	A	2.2.2.2
    www IN	A	3.3.3.3
    
    ; 增量传送
    ; 新增一个,放在通配符前面,同时修改序列号为1811202031,使用rndc reload在不用关闭服务器服务下来更新配置
    hello IN A 4.4.4.4
    
    *	IN	A	255.255.255.255
    

    在新增域名和更新序列号后,更新配置,可以看到从服务器的配置文件也会很快更新

    测试

    再次使用之前的命令host -t a hello.test.com 196.128.52.130host -t a hello.test.com 196.128.52.131进行测试,应该都会输出一样的4.4.4.4

    两台服务器进行子域授权

    将一台dns服务器的子域授权给另一台dns服务器管理

    以sub.test.com为例

    父dns服务器为192.168.52.130

    子dns服务器为192.168.52.132

    配置文件

    修改父dns的/var/named/sub.test.com.zone

    新增子dns的/etc/named.conf

    新增子dns的/etc/named.rfc1912.zones

    新增子dns的/var/named/sub.test.com.zone

    配置文件

    父dns的/var/named/test.com.zone

    $TTL 600 
    @	IN	SOA	test.com.	root.qq.com(
    							1811201955 
    							1H
    							5M
    							1W 
    							10M)
    							
    	IN	NS	ns1
    	IN	NS	nsSlave
    	
    ; 添加新的ns记录,第一个代表要授权的子域
    sub IN  NS  nsSub
    ; 为ns记录设置a记录,指向子dns服务器
    nsSub   IN  A   192.168.52.132
    
    nsSlave	IN	NS	192.168.52.131
    ns1	IN	A	192.168.52.130
    @	IN	A	1.1.1.1
    	IN	A	2.2.2.2
    www IN	A	3.3.3.3
    hello IN A 4.4.4.4
    *	IN	A	255.255.255.255
    

    子dns的/etc/named.conf

    options{
        directory "/var/named";
    };
    
    zone "." IN {
        type hint;
        file "named.ca";
    };
    
    include "/etc/named.rfc1912.zones";
    include "/etc/named.root.key";
    

    子dns的/etc/named.rfc1912.zones

    zone "sub.test.com" IN {
    	type master;
    	file "sub.test.com.zone";
    };
    

    子dns的/var/named/sub.test.com.zone

    $TTL 600
    @	IN	SOA	sub.test.com.	root.qq.com(
    							1811201031
    							1H 
    							5M 
    							1W 
    							10M) 
    	IN	NS	ns1
    ns1	IN	A	192.168.52.130
    @	IN	A	11.11.11.11
    hello	IN	A	22.22.22.22
    

    测试

    在检查后配置文件没有错误后,对父dns输入rndc reload重新装载配置,对子dns输入service named start启动服务

    host -t A sub.test.com 192.168.52.130host -t A sub.test.com 192.168.52.132进行测试,如果配置没有出错,输出11.11.11.11

    参考文档

    配置:http://blog.51cto.com/anyisalin/1753638

    配置:http://cn.linux.vbird.org/linux_server/0350dns_3.php

    记录类型:http://www.178linux.com/67851

    乱码解决:https://yq.aliyun.com/articles/507346

    官方文档:https://bind.isc.org/doc/arm/9.13/Bv9ARM.html

    待完成

    1.view的使用

    2.主从的原理,是主提醒,还是从去取

    3.文档的一些阅读,比如序列号的范围,比如序列号自动策略

  • 相关阅读:
    Linux基础操作
    MySQL基础常用指令
    String什么时候创建一个新对象?
    HashMap源码浅析
    LinkList源码浅析
    ArrayList源码浅析
    如何解决syntax error near unexpected token `fi'
    如何解决The request sent by the client was syntactically incorrect.
    Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> ajaxTest in servlet mapping
    CLUSTER cluster is down,redis报错
  • 原文地址:https://www.cnblogs.com/faberry/p/9995931.html
Copyright © 2020-2023  润新知