Установка Bind DNS Server на CentOS 8 / RHEL 8

Установка Bind DNS Server на CentOS 8 / RHEL 8

Введение

Это руководство проведет вас через шаги, которые вам потребуются для настройки DNS-сервера BIND в CentOS 8 / RHEL 8 Linux — Настройка привязки главного / подчиненного DNS-сервера в CentOS 8 / RHEL 8. Система доменных имен — это иерархическая и децентрализованная система именования для компьютеры, службы или другие ресурсы, подключенные к Интернету или частной сети. (Википедия). Он действует как телефонная книга в Интернете, поскольку дает адрес каждому компьютеру с связанным с ним полным доменным именем.

Как часть прикладного уровня эталонной модели TCP / IP, DNS очень важен в повседневной работе компьютеров по всему миру. Мы собираемся установить авторитетный BIND DNS Master и Slave на CentOS8 и выполнить такие настройки, как добавление записей PTR, A / AAAA среди других.

Установите Bind DNS Server на CentOS 8 / RHEL 8

Выполните следующие команды, чтобы установить пакеты Bind DNS-сервера на сервере CentOS 8 / RHEL 8 Linux.

$ dnf -y install bind bind-utils vim
CentOS-8 - AppStream                                   1.3 kB/s | 4.3 kB     00:03    
CentOS-8 - Base                                        1.2 kB/s | 3.9 kB     00:03    
CentOS-8 - Extras                                      467  B/s | 1.5 kB     00:03    
Dependencies resolved

В этой настройке мы будем держать SELinux в принудительном режиме.

$ getenforce
Enforcing
THE REASON FOR THIS IS THAT  (Source: RedHat) 
SELinux helps mitigate the damage made by configuration mistakes. Domain Name System (DNS) servers often replicate information between each other in what is known as a zone transfer. Attackers can use zone transfers to update DNS servers with false information. When running the Berkeley Internet Name Domain (BIND) as a DNS server in Red Hat Enterprise Linux, even if an administrator forgets to limit which servers can perform a zone transfer, the default SELinux policy prevents zone files from being updated using zone transfers, by the BIND named daemon itself, and by other processes  (Source: RedHat).

Настройка авторитетного сервера BIND DNS на CentOS 8 / RHEL 8

Давайте настроим наш авторитетный DNS-сервер BIND. Откройте файл конфигурации /etc/ named.conf.

Наш DNS-сервер имеет следующие настройки.

  • infoit.com.ua Зона (Доменное имя)
  • 192.168.154. 0 — управляемая подсеть
  • 192.168.154.94 IP подчиненного сервера
  • 192.168.154.88 — IP главного сервера

Вот конфигурационный файл named.conf.

$ sudo 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.
//
 
options {
         listen-on port 53 { any; }; ## Listen on any since it is an authoritative DNS Publicly available. 
         listen-on-v6 port 53 { any; }; ## You can also set the same for IPv6
         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";
         secroots-file   "/var/named/data/named.secroots";
         recursing-file  "/var/named/data/named.recursing";
 ## Since this will be an authoritative Nameserver, allow query from any host        
         allow-query     { any; };           allow-transfer  {192.168.154.94; };      /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.                    
- If you are building a RECURSIVE (caching) DNS server, you need to enable recursion.       
- If your recursive DNS server has a public IP address, you MUST enable access       
control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. 
Implementing BCP38 within your network would greatly reduce such attack surface.  */      recursion no; ## Following Advice from above.      dnssec-enable yes;      dnssec-validation yes;      managed-keys-directory "/var/named/dynamic";     
        pid-file "/run/named/named.pid";      session-keyfile "/run/named/session.key";      /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */    
          include "/etc/crypto-policies/back-ends/bind.config"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; ## Set your ZONE details as shown below for different domains. Set the forward and reverse details. You can set the names of files as you like zone "infoit.com.ua" IN { type master; file "infoit.forward"; allow-update { none; }; }; ## Make sure you follow the rule for reverse zone (154.168.192.in-addr.arpa). [If your IP is 192.168.10.10, It will be 10.168.192.in-addr.arpa] zone "154.168.192.in-addr.arpa" IN { type master; file "infoit.reverse"; allow-update { none; }; };

Главный сервер 192.168.154.88 . Обратите внимание, что ваш IP-адрес должен быть общедоступным, потому что это авторитетный DNS-сервер.

Создать файлы зоны

После того, как вы установили файлы в named.conf, мы должны создать файлы зоны и разместить все записи, которые вы хотите добавить, такие как A/AAAA, MX, PTR и другие. Создайте файлы в каталоге /var/named/

$ sudo vim /var/named/infoit.forward

$TTL 86400
 @   IN  SOA     dns1.infoit.com.ua. root.infoit.com.ua. (
 # You can use any numerical values for serial number but it is recommended to use [YYYYMMDDnn]
         2019112201  ;Serial
         3600        ;Refresh
         1800        ;Retry
         604800      ;Expire
         86400       ;Minimum TTL
)
         # Set your Name Servers here
         IN  NS      dns1.infoit.com.ua.
         IN  NS      dns2.infoit.com.ua.
         # define Name Server's IP address
         IN  A       192.168.154.88
         # Set your Mail Exchanger (MX) Server here
         IN  MX 10   dns1.infoit.com.ua.

# Set each IP address of a hostname. Sample A records.
dns1     IN  A       192.168.154.88
dns2     IN  A       192.168.154.94
mail1    IN  A       192.168.154.97

Создайте соответствующие обратные записи для того же домена, который мы определили в конфигурационном файле named.conf.

$ sudo vim /var/named/infoit.reverse

$TTL 86400
 @   IN  SOA     dns1.infoit.com.ua. root.infoit.com.ua. (
         2019112201  ;Serial
         3600        ;Refresh
         1800        ;Retry
         604800      ;Expire
         86400       ;Minimum TTL
 )
         # Set Name Server
         IN  NS      dns1.infoit.com.ua.
## Set each IP address of a hostname. Sample PTR records.
88      IN  PTR     dns1.infoit.com.ua.
94      IN  PTR     dns2.infoit.com.ua.
97      IN  PTR     mail1.infoit.com.ua.

Изменить настройки DNS на главном сервере

Сделайте наш новый DNS-сервер сервером имен по умолчанию. Откройте файл /etc/resolv.conf и добавьте строки ниже. Обязательно замените IP-адрес в соответствии с вашей средой.

$ sudo vim /etc/resolv.conf  
nameserver 192.168.154.88

Разрешить службу DNS на брандмауэре

Настройте брандмауэр, чтобы разрешить службу DNS.

sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --reload

Убедитесь, что ваши конфигурации в порядке, запустите и включите привязку:

sudo named-checkconf
sudo systemctl start named
sudo systemctl enable named 

Мы закончили с DNS-сервером Master BIND. Приступим к настройке нашего Slave-сервера.

Настроить подчиненный DNS-сервер — 192.168.154.94

Настройте подчиненный сервер. Откройте /etc/ named.conf и отредактируйте соответствующим образом

$ sudo 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

options {
         listen-on port 53 { any; };
         listen-on-v6 port 53 { any; };
         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";
         recursing-file  "/var/named/data/named.recursing";
         secroots-file   "/var/named/data/named.secroots";
         allow-query     { any; }; ## Allows hosts to query Slave DNS
         allow-transfer { none; }; ## Disable zone transfer
          
          /* 
          - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
          - If you are building a RECURSIVE (caching) DNS server, you need to enable 
            recursion.
          - If your recursive DNS server has a public IP address, you MUST enable access 
            control to limit queries to your legitimate users. Failing to do so will
            cause your server to become part of large scale DNS amplification 
            attacks. Implementing BCP38 within your network would greatly
            reduce such attack surface 
         */
## Since this is a slave, lets allow recursion.
    recursion yes;      dnssec-enable yes;      dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.root.key";    managed-keys-directory "/var/named/dynamic";      pid-file "/run/named/named.pid";      session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; ## Let us create zone definitions for both forward and reverse dns lookups. # The files will be created automatically on the slave. zone "infoit.com.ua" IN { type slave; file "slaves/infoit.forward"; masters { 192.168.154.88; }; ## Master server it is receiving DNS Records from }; zone "154.168.192.in-addr.arpa" IN { type slave; file "slaves/infoit.reverse"; masters { 192.168.154.88; }; ## Master server it is receiving DNS Records from };

Изменить настройки DNS на подчиненном сервере

Сделайте наши новые DNS-серверы (как главный, так и подчиненный) в качестве серверов имен по умолчанию. Откройте файл /etc/resolv.conf и добавьте строки ниже. Обязательно замените IP-адреса в соответствии с вашей средой

$ sudo vim /etc/resolv.conf
nameserver 192.168.154.88
nameserver 192.168.154.94

Убедитесь, что ваши конфигурации в порядке, запустите и включите привязку:

sudo named-checkconf
sudo systemctl start named
sudo systemctl enable named

Проверьте каталог /var/named/slaves, не были ли файлы зоны переданы с главного устройства.

$ ll /var/named/slaves/
total 12
-rw-r--r-- 1 named named 480 Nov 23 14:16 infoit.forward
-rw-r--r-- 1 named named 492 Nov 23 14:45 infoit.reverse

Доказательство того, что наш DNS работает

Проверка, разрешает ли наш DNS-сервер. Мы собираемся использовать машину Windows для тестирования нашего DNS-сервера BIND.

Измените сетевые параметры ваших окон, как показано ниже. Пусть DNS отражает ваши новые DNS-серверы.

Откройте PowerShell или командную строку, введите nslookup и протестируйте наши службы DNS.

И наш BIND DNS работает !!. Если вы работаете на клиентском компьютере Linux, отредактируйте файл / etc / hosts, чтобы изменить параметры конфигурации DNS.

Вывод

Теперь у нас есть BIND DNS Master и Slave, которые работают нормально. Мы надеемся, что это руководство является исчерпывающим и принесло вам пользу. Спасибо, что посетили, и переходите к другим увлекательным гидам ниже.