BIND搭建主从DNS

DNS介绍

DNS (Domain Name System)域名解析系统,主要用来解析IP 和域名的对应关系。

DNS有这几种不同的记录类型:

  • A记录:Adress记录,用来指定域名或主机名和IP的对应关系。域名对应的IP地址。
  • NS记录:Name Server ,域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。
  • MX记录:Mail Exchanger,邮件服务器的域名记录,通过解析@后的域名将邮件发送到指定服务器。
  • CNAME记录:Canonical Name, 别名记录,允许将多个域名映射到同一台计算机上。
  • TXT记录:一般指主机名或域名的说明。

查看DNS三个命令: dig  nslookup host

dig可以方便清晰的查看dns的解析过程,使用host可以比较准确的查看当前主机的DNS解析记录,在有缓存干扰的情况下使用host查看是比较准确的。

DNS默认使用的UDP协议,使用53端口。在生产的实际应用中,DNS会优先使用UDP协议,在一些防火墙的限制下,如果UDP传输不成功,会使用TCP协议,所以在部署DNS时,需要允许DNS的TCP和UDP的数据包通过网络。

DNS的安装部署

配置指南及参数说明:http://www.zytrax.com/books/dns/ch7/hkpng.html

配置主DNS

安装需要的组件:

# yum install -y bind-utils bind bind-devel bind-chroot

首先需要利用脚本生成一个rndc的配置文件和 rndc的key:

# /sbin/rndc-confgen -r  /dev/urandom  > /etc/rndc.conf
# cat   /etc/rndc.conf 

# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "zIGnSUO1Y8iBkw0jyJzGxA=="; # 密钥要在所有的文件中保持一致
};
options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "zIGnSUO1Y8iBkw0jyJzGxA==";
# };
# 
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

配置rndc.key的配置文件:

cat  /etc/rndc.key
key "rndc-key" {
        algorithm hmac-md5;
        secret "zIGnSUO1Y8iBkw0jyJzGxA==";
};

打开配置文件/etc/named.conf,修改其中的配置 :

options {
        listen-on port 53 { any; };         # 监听的端口和IP
        directory       "/var/named";       # 主配置文件目录
        dump-file       "/var/named/data/cache_dump.db"; # 缓存的dumpDB文件路径,没有指定的情况下是在Directory目录
        statistics-file "/var/named/data/named_stats.txt";  # DNS解析状态统计,可以做监控
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };     #允许访问DNS服务器的主机,可以是IP段和主机名
        recursion yes;              # 开启递归查询
        pid-file "/var/named/chroot/var/run/named/named.pid";
        forwarders {               # DNS转发服务器,用于本地DNS无域名解析记录情况
                    114.114.114.114;
                    8.8.8.8;
                    };
};

key  "rndc-key" {              # 值KEY进行验证
        algorithm hmac-md5;
        secret "zIGnSUO1Y8iBkw0jyJzGxA==";  # 此处的KEY是使用rndc命令中生成的,要保持一致

};

controls {
        inet 127.0.0.1 port 953
        allow {127.0.0.1; } keys {"rndc-key"; };

};

logging {                          #日志信息级别
        channel warning {          #告警日志,及日志存放的路径,单个文件大小
        file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
        severity warning;
        print-category yes;
        print-severity yes;
        print-time yes;
        
        };
        
        channel general_dns {    # 访问日志 记录10个,每个大小最大为100m
          file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
          serverity info;
          print-category yes;
          print-severity yes;
          print-time yes;
        };
        
        category default {   #默认使用warning日志配置
          warning;
        };
        
        category queries {   #调用访问日志配置
        general_dns;
        };
};

include "/var/named/chroot/etc/view.conf";  #包含的一些配置文件

配置主配置文件中指定的view 文件:

cat /var/named/chroot/etc/view.conf
view "View" {                         # view 名称
 zone "test.com" {                    # 域名
    type master;                      # 主 DNS
    file "test.com.zone";             # 指定的域文件
    allow-transfer {        # 允许进行数据同步的主机,这里是slave,从DNS
    192.168.1.11;
};
  notify yes;               # 如果主DNS记录发生变化,则通知从DNS同步
  also-notify {
    192.168.1.11;
};

};
};

配置域文件:

[[email protected] ~]# cat /var/named/chroot/etc/test.com.zone
$ORIGIN .             # 文件生效的域 . 代表使用后面指定的配置
$TTL 3600 ; 1 hour    # 域名的生存周期
test.com  IN SOA op.test.com dns.test.com. (
          2000      ; serial-number         # 用于标记DNS记录是否发生了更改
          900       ; refresh  (15 minutes) 
          600       ; retry (10 minutes)
          86400     ; expire (1 day)
          3600      ; minimum (1 hour)
          )
     NS    op.test.com.     # NS 记录
$ORIGIN test.com.
shanks   A  1.2.3.4
op      A   1.2.3.4
t      A    1.2.3.4

修改目录权限,并加入开机自启动:

cd /var && chown -R named.named named
systemctl start named
systemctl enable named

如果启动失败,显示PID无法读取,可以查看相关的配置文件和目录权限,同时,确认启动脚本中的PIDfile目录是否一致。

CentOS7 的服务管理脚本路径为: /usr/lib/systemd/system

启动成功后查看端口是否监听:

[[email protected] system]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.1.10:53         0.0.0.0:*               LISTEN      9972/named          
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      9972/named          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      955/sshd            
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      9972/named          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2057/master         
tcp6       0      0 :::22                   :::*                    LISTEN      955/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      2057/master         
[[email protected] system]# netstat -lnup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 192.168.1.10:53         0.0.0.0:*                           9972/named          
udp        0      0 127.0.0.1:53            0.0.0.0:*                           9972/named

查看是否能够解析:

[[email protected] system]# dig @127.0.0.1 t.test.com
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.4 <<>> @127.0.0.1 t.test.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38617
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;t.test.com.                    IN      A
;; ANSWER SECTION:
t.test.com.             3600    IN      A       1.2.3.4
;; AUTHORITY SECTION:
test.com.               3600    IN      NS      OP.test.com.
;; ADDITIONAL SECTION:
OP.test.com.            3600    IN      A       1.2.3.4
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 06 15:29:47 CST 2016
;; MSG SIZE  rcvd: 88

配置从DNS

在另外一台机器上安装从DNS,可以使用master-slave 模式来对主从进行同步。

安装好后,配置named.conf,和master上保持相同:

# cat /etc/named.conf

options {
  listen-on port 53 {any;};
  directory "/var/named/chroot/etc/";
  pid-file "/var/named/chroot/var/run/named/named.pid";
  allow-query { any; };
  Dump-file "/var/named/chroot/var/log/binddump.db";
  Statistics-file "/var/named/chroot/var/log/named_stats";
  zone-statistics yes;
  memstatistics-file "log/mem_stats";
  empty-zones-enable no;
  forwarders {114.114.114.114;8.8.8.8; };
};
key "rndc-key" {
        algorithm hmac-md5;
        secret "zIGnSUO1Y8iBkw0jyJzGxA==";
};
controls {
       inet 127.0.0.1 port 953
               allow { 127.0.0.1; } keys { "rndc-key"; };
 };
logging {
  channel warning {
    file "/var/named/chroot/var/log/dns_warning" versions 10 size 10m;
    severity warning;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  channel general_dns {
    file "/var/named/chroot/var/log/dns_log" versions 10 size 100m;
    severity info;
    print-category yes;
    print-severity yes;
    print-time yes;
  };
  category default {
    warning;
  };
  category queries {
    general_dns;
  };
};
include "/var/named/chroot/etc/view.conf";

rndc.key和rndc.conf 文件也与master保持一致。

配置从DNS上的view文件:

[[email protected] ~]# cat /var/named/chroot/etc/view.conf
view "Slave view" {        # view文件信息,可以自定义
    zone "test.com" {      # 域名名称
       type slave;         # 指定此服务器为slave
       masters {192.168.1.10;};   # 指定主DNS ip
       file "slave.test.com.zone";  # 定义文件名称,可以自定义
};
};

修改目录权限,并加入开机启动:

cd /var && chown -R named.named named
systemctl start named
systemctl enable named

提示:如果服务已经启动的情况下,在修改了除named.conf 之外的配置文件时,只需要使用rndc reload 命令即可使配置生效。

当master和slave 同步之后,在指定的slave目录/var/named/chroot/etc 下生成 zone文件。

[[email protected] ~]# ls -l /var/named/chroot/etc/
total 8
drwxr-x---. 2 named named   6 Sep 28 21:14 named
drwxr-x---. 3 named named  24 Dec  6 15:59 pki
-rw-r--r--. 1 named named 268 Dec  6 20:15 slave.test.com.zone # 同步生成的文件
-rw-r--r--. 1 named named 136 Dec  6 18:00 view.conf

这里生成的文件是一个二进制文件,可以通过本地测试文件是否正确:

[[email protected] etc]# dig @127.0.0.1 t.test.com
; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7_2.4 <<>> @127.0.0.1 t.test.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16200
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;t.test.com.INA
;; ANSWER SECTION:
t.test.com.3600INA1.2.3.4
;; AUTHORITY SECTION:
test.com.3600INNSOP.test.com.
;; ADDITIONAL SECTION:
OP.test.com.3600INA1.2.3.4
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Dec 06 20:32:53 CST 2016
;; MSG SIZE  rcvd: 88
时间: 2024-08-05 01:45:06

BIND搭建主从DNS的相关文章

linux架构学习第二十四天-DNS详解及bind搭建各种DNS测试

内容: 一.DNS 1.域名系统概述 2.域名的结构 3.域名服务器 4.域名解析过程 5.域名服务器的资源记录(resource record RR) 二.bind搭建DNS服务器 1.bind的安装 2.搭建DNS服务器 3.搭建主从DNS服务器 4.实现DNS子域 5.实现DNS视图view(智能DNS) 一.DNS 1.域名系统概述 域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成为IP地址.域名系统其实就是名字系统.为什么

搭建主从DNS服务器及重要传送和递归属性详解

1.allow-recursion 主要功能是允许哪些主机递归查询,以免DNS服务器挂机或浪费网络资源 例如:仅允许1.1.1.0/24网段内的主机递归DNS查询,其他主机一律不许递归 allow-recursion { 1.1.1.0/24; }; 2.allow-transfer,仅对从服务器进行区域数据传送,否则安全风险 例如:仅对1.1.1.19这台从DNS服务器进行区域数据传送 allow-transfer { 1.1.1.19; }; 3.背景:搭建主从DNS服务器,要求如下: a.

centos6.7搭建主从DNS服务器

linux下构建DNS服务器BIND DNS:域名解析. 域名分类 v 顶级域由两三个字母组成的名称用于指示国家地区或使用名称的单位的类型.如 v 组织域.net, .com, .org,.mil, .edu, .gov, .cc, .mobi v 国家域.jp, .tw, .hk, .iq,.ir, .cn, .uk, .us 全球有13台根服务器 v A INTERNIC.NET美国弗吉尼亚州 198.41.0.4 v B 美国信息科学研究所美国加利弗尼亚州 128.9.0.107 v C

搭建主从DNS服务器

在DNS域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件,从而起到备份解析记录与负载均衡的作用,所以通过搭建从服务器可以减轻主服务器的负载压力,还可以提升用户的查询的效率. 实验环境: 系统:Redhat6.5 IP: 主DNS 192.168.10.50 从DNS 192.168.10.10 以正向解析实验为案例 第1步:主从DNS服务器都安装bind软件,提供named服务 yum install bind -y #yum安装bind 第2步:配置主DNS服务器 编辑主DNS服

一步一步搭建主从DNS服务器

DNS服务作为基础的网络服务在互联网中到处存在,学习搭建DNS服务器是网络管理员的基本技能之一. 准备环境:vmware workstation 10 redhat 5.10 x86_64  虚拟机2台 主DNS:192.168.195.129  ns1.jwh5566.com 192.168.1.114  连外网   主要是客户端用来测试DNS是否递归查询的 从DNS:192.168.195.128    ns2.jwh5566.com 域名:jwh5566.com 代理的客户端:192.16

CentOS 6.8使用bind搭建内网DNS主从服务

1.DNS域名解析服务说明 > DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析:正向解析:根据主机名(域名)查找对应的IP地址.反向解析:根据IP地址查找对应的主机名(域名). 工作形式上又分主服务器.从服务器和缓存服务器. 主服务器:在特定区域内具有唯一性.负责维护该区域内的域名与IP地址对应关系. 从服务器:从主服务器中获得域名与IP地址对应关系并维护,以防主服务器宕机等情况. 缓存服务器:通过向其他域名解析

基于bind搭建DNS主从

使用bind的主从复制功能可以实现的功能:提供冗余,避免单点故障:均衡负载查询需求,从而提高系统可用性. 一.安装 #bind-chroot 负责DNS安全作用,将bind进程严格限制在特定的目录中 yum install bind bind-chroot bind-utils 二.配置文件 bind主服务器 #bind主配置文件 cat /etc/named.conf options { listen-on port 53 { any; }; listen-on-v6 port 53 {:1;

Linux上-DNS(bind)搭建2015091601

1.DNS的基础概念 2.DNS域名解析查询过程 3.DNS基本服务的实现 4.DNS主从同步的实现 5.DNS的高级视图功能     本机的相关信息: [[email protected] ~]#uname –r   //查看当前系统的内核版本 2.6.32-504.el6.x86_64 [[email protected] ~]#cat /etc/redhat-release    //查看当前系统的发行版本 CentOS release6.6 (Final) [[email protect

主从DNS服务器的搭建八步骤

主从DNS服务器的搭建八步骤: 第一步:yum安装DNS解析器:bind 第二步:配置DNS服务器的主配置文件/etc/named.conf 第三步:修改主配文件named.rfc1912.zones  第四步:创建正向解析文件:从服务器无需操作,自动同步主服务器 第五步:创建反向解析文件:从服务器无需操作,自动同步主服务器 第六步:修改正反向解析文件的属主及属组为named 第七步:启动主从DNS服务器的named服务,查看日志检验启动是否成功 第八步:使用检测工具验证DNS的最终效果 环境需