Начало работы с DNS-сервером BIND

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

В этой статье вы узнаете, как установить и настроить безопасный DNS-сервер BIND и проверить, что поддомены разрешаются на правильный IP-адрес.

Продолжайте читать и создавайте свой DNS-сервер без лишних усилий!

Предварительные требования

Этот учебник будет практическим демонстрационным материалом. Для следования за ним убедитесь, что у вас есть следующее.

  • A Linux server – This example uses the Ubuntu 20.04 server.
  • A non-root user with root privileges or root/administrator user.
  • A domain name pointed to the server IP address – This demo uses the atadomain.io domain and server IP address 172.16.1.10.

Установка пакетов BIND

Репозиторий по умолчанию Ubuntu предоставляет пакеты BIND, но они не устанавливаются в системе по умолчанию. Вы можете установить BIND как основной DNS-сервер или только как авторитетный. BIND предоставляет вам мощные функции, такие как поддержка установки master-slave, поддержка DNSSEC и встроенные списки контроля доступа (ACL).

Чтобы начать работу с DNS BIND, вам сначала нужно установить пакеты BIND на свою машину с помощью менеджера пакетов apt.

1. Откройте терминал и войдите в свой сервер.

2. Затем выполните команду apt update, чтобы обновить и обновить индекс пакетов репозитория. Эта команда гарантирует, что вы устанавливаете последнюю версию пакетов.

sudo apt update
Refreshing Package Index

3. После обновления выполните следующую команду apt install, чтобы установить пакеты BIND для сервера Ubuntu.

Пакеты bind9-utils и bind9-dnsutils предоставляют дополнительные инструменты командной строки для BIND. Эти пакеты полезны для тестирования и управления сервером DNS BIND.

sudo apt install bind9 bind9-utils bind9-dnsutils -y
Installing BIND Packages

4. Наконец, выполните команду systemctl ниже, чтобы проверить службу BIND.

Пакет BIND поставляется с службой named, которая автоматически запускается и активируется во время установки пакета BIND.


# Проверить, включена ли служба named
sudo systemctl is-enabled named

# Проверить статус службы named
sudo systemctl status named

Теперь вы должны видеть, что служба BIND named включена, а ее статус активен (работает). На этом этапе служба BIND будет автоматически запускаться при запуске/перезагрузке системы.

Checking BIND named service

Настройка сервера DNS BIND

Теперь вы установили пакеты BIND на сервере Ubuntu, поэтому настало время настроить установку BIND на вашем сервере Ubuntu. Как? Редактируя конфигурации BIND и службы named.

Вся конфигурация для BIND доступна в каталоге /etc/bind/, а конфигурации для службы named — в /etc/default/named.

1. Отредактируйте конфигурацию /etc/default/named с помощью выбранного вами редактора и добавьте опцию -4 на строку OPTIONS, как показано ниже. Эта опция запустит службу named только на IPv4.

OPTIONS="-4 -u bind"

Сохраните внесенные изменения и закройте файл.

Configuring BIND to Run on IPv4 Only

2. Затем отредактируйте файл /etc/bind/named.conf.options и добавьте следующую конфигурацию ниже строки directory "/var/cache/bind";.

Эта конфигурация устанавливает службу BIND для работы на стандартном UDP-порте 53 на локальном хосте сервера и общедоступном IP-адресе (172.16.1.10). Одновременно она позволяет запросы от любого хоста к серверу DNS BIND, используя Cloudflare DNS 1.1.1.1 в качестве переадресатора.

    // listen port and address
    listen-on port 53 { localhost; 172.16.1.10; };

    // for public DNS server - allow from any
    allow-query { any; };

    // define the forwarder for DNS queries
    forwarders { 1.1.1.1; };

    // enable recursion that provides recursive query
    recursion yes;

В конце закомментируйте строку listen-on-v6 { any; };, как показано ниже, чтобы отключить запуск службы named на IPv6.

Editing the BIND Configuration Options

3. Наконец, выполните следующую команду, чтобы проверить конфигурацию BIND.

sudo named-checkconf

Если нет вывода, конфигурации BIND верны и не содержат ошибок.

Verifying BIND Configurations

Настройка DNS-зон

На данном этапе вы настроили базовую конфигурацию сервера DNS BIND. Теперь вы готовы создать DNS-сервер с вашим доменом и добавить другие поддомены для ваших приложений. Для этого вам потребуется определить и создать новую конфигурацию зон DNS.

В этом руководстве вы создадите новый сервер имен (ns1.atadomain.io) и поддомены (www.atadomain.io, mail.atadomain.io, vault.atadomain.io).

1. Отредактируйте файл /etc/bind/named.conf.local с использованием вашего предпочтительного редактора и добавьте следующую конфигурацию.

Эта конфигурация определяет прямую зону (/etc/bind/zones/forward.atadomain.io) и обратную зону (/etc/bind/zones/reverse.atadomain.io) для доменного имени atadomain.io.

zone "atadomain.io" {
    type master;
    file "/etc/bind/zones/forward.atadomain.io";
};

zone "1.16.172.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/reverse.atadomain.io";
};

Сохраните изменения и закройте файл.

Defining Forward Zone and Reverse Zone BIND

2. Затем выполните следующую команду для создания нового каталога (/etc/bind/zones) для конфигураций зон DNS строкой.

mkdir -p /etc/bind/zones/

3. Выполните каждую из команд ниже, чтобы скопировать конфигурации прямых и обратных зон по умолчанию в каталог /etc/bind/zones.

# Копировать конфигурацию прямой зоны по умолчанию
sudo cp /etc/bind/db.local /etc/bind/zones/forward.atadomain.io

# Копировать конфигурацию обратной зоны по умолчанию
sudo cp /etc/bind/db.127 /etc/bind/zones/reverse.atadomain.io

# Перечислить содержимое каталога /etc/bind/zones/
ls /etc/bind/zones/
Copying Default Zones Configurations

4. Теперь отредактируйте конфигурацию прямой зоны (/etc/bind/zones/forward.atadomain.io) с использованием вашего предпочтительного редактора и заполните следующую конфигурацию.

Перенаправление зоны – это место, где вы определяете свое доменное имя и IP-адрес сервера. Эта конфигурация преобразует доменное имя в правильный IP-адрес сервера.

Ниже приведена конфигурация, создающая следующий сервер и поддомены:

  • ns1.atadomain.io – Основной сервер имен для вашего домена с IP-адресом 172.16.1.10.
  • Запись MX для домена atadomain.io, обрабатываемая mail.atadomain.io. Запись MX используется для почтового сервера.
  • Поддомены для приложений: www.atadomain.io, mail.atadomain.io и vault.atadomain.io.
;
; BIND data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            2         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Define the default name server to ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.

; Resolve ns1 to server IP address
; A record for the main DNS
ns1     IN      A       172.16.1.10


; Define MX record for mail
atadomain.io. IN   MX   10   mail.atadomain.io.


; Other domains for atadomain.io
; Create subdomain www - mail - vault
www     IN      A       172.16.1.10
mail    IN      A       172.16.1.20
vault   IN      A       172.16.1.50

Сохраните изменения и закройте файл.

Configuring Forward Zone BIND

5. Как и в прямой зоне, отредактируйте файл конфигурации обратной зоны (/etc/bind/zones/reverse.atadomain.io) и заполните следующую конфигурацию.

Обратная зона преобразует IP-адрес сервера в доменное имя. Обратная зона или запись PTR существенны для служб, таких как почтовый сервер, что влияет на репутацию почтового сервера.

Запись PTR использует последний блок IP-адреса, например запись PTR с номером 10 для IP-адреса сервера 172.16.1.10.

Эта конфигурация создает обратную зону или запись PTR для следующих доменов:

  • Сервер имен ns1.atadomain.io с обратной зоной или записью PTR 172.16.1.10.
  • Запись PTR для домена mail.atadomain.io на IP-адрес сервера 172.16.1.20.
;
; BIND reverse data file for the local loopback interface
;
$TTL    604800
@       IN      SOA     atadomain.io. root.atadomain.io. (
                            1         ; Serial
                        604800         ; Refresh
                        86400         ; Retry
                        2419200         ; Expire
                        604800 )       ; Negative Cache TTL

; Name Server Info for ns1.atadomain.io
@       IN      NS      ns1.atadomain.io.


; Reverse DNS or PTR Record for ns1.atadomain.io
; Using the last number of DNS Server IP address: 172.16.1.10
10      IN      PTR     ns1.atadomain.io.


; Reverse DNS or PTR Record for mail.atadomain.io
; Using the last block IP address: 172.16.1.20
20      IN      PTR     mail.atadomain.io.

Сохраните изменения и закройте файл.

Configuring Reverse Zone BIND

6. Теперь выполните следующие команды, чтобы проверить и подтвердить конфигурации BIND.

# Проверка основной конфигурации для BIND
sudo named-checkconf

# Проверка зоны forward.forward.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/forward.atadomain.io

# Проверка обратной зоны reverse.atadomain.io
sudo named-checkzone atadomain.io /etc/bind/zones/reverse.atadomain.io

Когда ваша конфигурация правильна, вы увидите вывод, аналогичный ниже.

Checking and Verifying BIND configurations

7. Наконец, выполните следующую команду systemctl ниже, чтобы перезагрузить и проверить службу named. Это применяет новые изменения к службе named.

# Перезагрузить службу named
sudo systemctl restart named

# Проверить службу named
sudo systemctl status named

Ниже вы можете видеть, что статус службы named активен (работает).

Restarting Named Service and Verifying Named Service Status

Открытие порта DNS с помощью брандмауэра UFW

На этом этапе вы завершили установку сервера DNS BIND. Но вам все еще нужно защитить ваш DNS-сервер. Вы настроите брандмауэр UFW и откроете порт DNS для любых запросов к серверу. Это позволяет клиентам делать запросы к серверу DNS BIND.

По соображениям безопасности рекомендуется запустить и включить брандмауэр UFW на вашем сервере Ubuntu.

1. Выполните команду ufw ниже, чтобы проверить доступные приложения в брандмауэре UFW.

sudo ufw app list

Вы должны увидеть Bind9 в списке приложений UFW ниже.

Listing Available Applications on the UFW Firewall

2. Теперь выполните следующую команду, чтобы разрешить Bind9 в брандмауэре UFW.

sudo ufw allow Bind9
Adding UW Rule

3. В конце выполните следующую команду для проверки включенных правил в брандмауэре UFW.

sudo ufw status

Вы должны увидеть приложение Bind9 в списке, как на скриншоте ниже.

Verifying List of Rules

Проверка установки сервера DNS BIND

Вы завершили установку DNS BIND и настроили брандмауэр UFW. Но как проверить установку вашего DNS-сервера? Команда dig решит эту задачу.

Dig – это утилита командной строки для устранения неполадок установки DNS-сервера. dig выполняет DNS-запрос для указанного доменного имени и отображает подробные ответы для целевого доменного имени. В системе Ubuntu dig входит в пакет bind9-dnsutil.

Чтобы проверить установку вашего DNS-сервера BIND:

1. Выполните каждую команду dig ниже, чтобы проверить субдомены www.atadomain.io, mail.atadomain.io и vault.atadomain.io.

Если установка вашего DNS-сервера прошла успешно, каждый поддомен будет разрешен в соответствующий IP-адрес на основе конфигурации forward.atadomain.io.

# Проверка имен доменов
dig @172.16.1.10 www.atadomain.io
dig @172.16.1.10 mail.atadomain.io
dig @172.16.1.10 vault.atadomain.io

Ниже приведен результат разрешения поддомена www.atadomain.io на IP-адрес сервера 172.16.1.10.

Checking sub-domain www.atadomain.io

Ниже приведен поддомен mail.atadomain.io, разрешенный на IP-адрес сервера 172.16.1.20.

Checking sub-domain mail.atadomain.io

И ниже приведен поддомен vault.atadomain.io, разрешенный на IP-адрес сервера 172.16.1.50.

Checking sub-domain vault.atadomain.io

2. Затем выполните команду dig ниже, чтобы проверить запись MX для домена atadomain.io.

dig @172.16.1.10 atadomain.io MX

Вы должны увидеть, что домен atadomain.io имеет запись MX mail.atadomain.io.

Checking MX record for atadomain.io

3. Наконец, выполните следующие команды, чтобы проверить запись PTR или обратную зону для IP-адресов сервера 172.16.1.10 и 172.16.1.20.

Если установка BIND прошла успешно, каждый IP-адрес будет разрешен в имя домена, определенное в конфигурации reverse.atadomain.io.

# Проверка записи PTR или обратного DNS
dig @172.16.1.10 -x 172.16.1.10
dig @172.16.1.10 -x 172.16.1.20

Как видите ниже, IP-адрес сервера 172.16.1.10 разрешается в доменное имя ns1.atadomain.io.

Checking PTR record for IP address 172.16.1.10

Как видите ниже, IP-адрес сервера 172.16.1.20 разрешается в доменное имя mail.atadomain.io.

Checking PTR record for IP address 172.16.1.20

Conclusion

На протяжении этого руководства вы узнали, как создать и настроить безопасный сервер DNS BIND на своем сервере Ubuntu. Вы также создали прямую и обратную зону для добавления вашего домена и проверили DNS-серверы, запустив команды dig.

Теперь, как вы можете реализовать сервер DNS BIND в своей среде? Возможно, реализовать BIND как авторитетный сервер? Или настроить высокую доступность с помощью мастер-слейв установки BIND?

Source:
https://adamtheautomator.com/bind-dns-server/