如何在CentOS 7上使用BIND设置主从DNS服务器

欢迎来到本教程,了解如何在CentOS上将Berkeley Internet名称域(BIND)实用程序安装和配置为主DNS服务器和从DNS服务器。

有各种开源软件包可用于配置DNS名称服务器。其中一些软件包包括 dnsmasq不限。在本教程中,您将使用BIND包配置本地DNS服务器。 BIND是用于实现DNS协议的开源软件,该协议定义了基于主机名的联网设备如何相互查找。

本教程使用三台配置如下的CentOS 7服务器:

  • 服务器1
    • 主机名: server1.example.com
    • IP地址: 192.168.122.10
    • 作用: Master DNS server
  • 服务器2
    • 主机名: server2.example.com
    • IP地址: 192.168.122.11
    • 作用: Slave DNS server
  • 服务器3
    • 主机名: server3.example.com
    • IP地址: 192.168.122.20
    • 作用: client server

在所有服务器上,必须先安装BIND软件包,然后才能进行配置。

# yum install -y bind bind-utils

安装软件包后,就开始吧。

配置主DNS服务器

让我们开始编辑主BIND配置文件 /etc/named.conf 如下所示进行调整。

允许特定主机访问主DNS服务器。因此,创建一个访问控制列表 允许的 包含先前允许的主机的IP地址 选件 配置文件部分。

# vim /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

# Create an access control list called allowed 
acl "allowed" {
        192.168.122.10;
        192.168.122.11;
        192.168.122.20;
};
options {
        listen-on port 53 { 127.0.0.1; 192.168.122.10; }; # IP Address of the Master
        listen-on-v6 port 53 { ::1; };
        directory   "/var/named";
        dump-file   "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { localhost; allowed; }; # Enable 'allowed' hosts to query Master DNS
        allow-transfer  { localhost; 192.168.122.11; }; #IP Address of secondary nameserver

创建正向和反向DNS区域语句。

# Zone statement for forward DNS lookup
zone "example.com" IN {
        type master;                           # type of zone
        file "/var/named/forward.example.com"; # location of forward zone file
        allow-update { none; };
};
# Zone statement for reverse DNS lookup
zone    "122.168.192.in-addr.arpa" IN {
        type master;                    
        file "/var/named/reverse.example.com"; # location of reverse zone file
        allow-update { none; };
};

然后保存配置文件并退出。

为在其中创建的正向和反向区域语句创建区域文件。 /etc/named.conf

  • 创建前向区域文件/etc/named.conf文件中的zone语句指定了一个正向区域文件 /var/named/forward.example.com。打开文件并进行如下编辑:# vim /var/named/forward.example.com
    $ORIGIN example.com.
    $TTL 86400
    @   IN  SOA server1.example.com. root.example.com. (
            2017020401   ; serial
            3600         ; refresh
            1800         ; retry
            604800       ; expire
            86400 )      ; minimum TTL
    ;
    ; define nameservers
        IN  NS  server1.example.com.
        IN  NS  server2.example.com.
    ;
    ; IP address and hostname
    server1 IN  A   192.168.122.10
    server2 IN  A   192.168.122.11
    ;
    ;client records
    server3 IN  A   192.168.122.20
    

    保存文件并退出编辑器。

  • 创建反向区域文件# vim /var/named/reverse.example.com
    $ORIGIN 122.168.192.in-addr.arpa.
    $TTL    86400
    @   IN  SOA server1.example.com.    root.example.com. (
            2017020402  ; serial
            3600        ; refresh
            1800        ; retry
            604800      ; expire
            86400 )     ; minimum TTL
    ;
    ;nameservers
        IN  NS  server1.example.com.
        IN  NS  server2.example.com.
    ;
    ;nameserver IP addresses
        IN  A   192.168.122.10
        IN  A   192.168.122.11
    ;
    ; client IP Address
        IN  A   192.168.122.20
    ; nameserver PTR records
    10  IN  PTR server1.example.com.
    11  IN  PTR server2.example.com.
    ;
    ; client PTR records
    20  IN  PTR server3.example.com.
    

保存文件并退出编辑器。

在开始BIND之前,即 命名服务使用以下命令来确保配置文件中没有语法错误:

# named-checkconf

如果配置文件中没有错误,该命令将不返回任何内容。

  • 要检查前向区域文件的语法,请运行以下命令:
    # named-checkzone example.com /var/named/forward.example.com 
    zone example.com/IN: loaded serial 2017020401
    OK
    
  • 运行命令以检查反向区域文件的语法。
    # named-checkzone 122.168.192.in-addr.arpa /var/named/reverse.example.com 
    zone 122.168.192.in-addr.arpa/IN: loaded serial 2017012001
    OK
    

因为没有错误,所以您可以启动BIND并使其在启动时启动。

# systemctl start named
# systemctl enable named

如果防火墙正在运行,请通过它启用DNS服务并重新加载防火墙。

# firewall-cmd --add-service=dns --permanent;firewall-cmd --reload 

编辑/etc/resolv.conf文件,添加名称服务器IP地址,并将主DNS服务器更改为您自己的DNS服务器。

# vim /etc/resolv.conf

添加以下行: nameserver 192.168.122.10

在网络界面中更改DNS服务器详细信息。我的网络接口是eth0。

# nmcli con mod eth0 ipv4.dns 192.168.122.10
# nmcli con down eth0; nmcli con up eth0 

然后测试以查看主机名或地址是否已解析。

要检查名称解析,请执行以下操作:# dig server1.example.com

验证主机名解析# dig -x 192.168.122.10`

从DNS服务器的配置。

安装BIND软件包。

# yum install bind bind-utils -y

编辑 /etc/named.conf 创建一个文件并进行如下所示的调整。

# vim /etc/named.conf

## Create an ACL
acl "allowed" {
        192.168.122.10;
        192.168.122.11;
        192.168.122.20;
};
options {
        listen-on port 53 { 127.0.0.1; 192.168.122.11; }; ## Slave server IP address
        listen-on-v6 port 53 { ::1; };
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query { localhost; allowed; }; ## Allows 'allowed ' hosts to query Slave DNS
        allow-transfer { none; }; ## Disable zone transfer
  • 为正向和反向DNS查找创建区域语句。
    # zone statement for forward dns lookup
    zone "example.com" IN {
            type slave;
            file "slaves/forward.example.com";
            masters { 192.168.122.10; };
    };
    # zone statement for reverse dns lookup
    zone  "122.168.192.in-addr.arpa" IN {
            type slave;
            file "slaves/reverse.example.com";
            masters { 192.168.122.10; };
    };      
    

保存文件并退出。

在网络界面中更改DNS服务器详细信息。在这种情况下,添加两个DNS服务器并重新启动接口。

# nmcli con mod eth0 +ipv4.dns "192.168.122.10 192.168.122.11"
# nmcli con down eth0;nmcli con up eth0

编辑 /etc/resolv.conf 将以下行添加到文件中:

# nameserver 192.168.122.10
# nameserver 192.168.122.11

允许通过防火墙的DNS服务并重新加载防火墙。

# firewall-cmd --add-service=dns --permanent;firewall-cmd --reload 

测试服务器,如果一切正常,请继续配置客户端。

客户端配置

登录客户端进行编辑 /etc/resolv.conf 文件为主要和辅助名称服务器添加IP地址。

# nameserver 192.168.122.10
# nameserver 192.168.122.11

测试前向参考。

# nslookup server3.example.com
Server:     192.168.122.10
Address:    192.168.122.10#53

Name:   server3.example.com
Address: 192.168.122.20

测试反向查找。

# nslookup 192.168.122.20
Server:     192.168.122.10
Address:    192.168.122.10#53

20.122.168.192.in-addr.arpa name = server3.example.com.

现在,您的本地DNS服务器已设置并可以运行。

Sidebar