> For the complete documentation index, see [llms.txt](https://utm-1.gitbook.io/utm-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://utm-1.gitbook.io/utm-docs/dokumentaciya/utm-it/programmnoe-obespechenie/linux-servera/sistemnoe-po/bind-dns1-master-rezhim/bind-pervonachalnoe-opisanie.md).

# BIND (первоначальное описание)

## Ссылки

Как установить DNS на сервере Linux: пошаговое руководство: [youstable.com](https://www.youstable.com/ru/blog/install-dns-on-linux/)

Настройка DNS-сервера BIND: [help.sweb.ru](https://help.sweb.ru/nastrojka-dns-servera-bind_1315.html)

Как настроить DNS-сервер BIND9 в Ubuntu 20.04: [serverspace.io](https://serverspace.io/support/help/configure-bind9-dns-server-on-ubuntu/)

Как настроить DNS-сервер BIND9 в Ubuntu 20.04: [serverspace.ru](https://serverspace.ru/support/help/dns-server-bind9-ubuntu-20-04/)

Настройка локального авторитетного DNS-сервера на Linux: [labex.io](https://labex.io/ru/tutorials/comptia-set-up-a-local-authoritative-dns-server-on-linux-592803)

Полная конфигурация DNS-сервера BIND9 с указанием имени хоста: [translated.turbopages.org](https://translated.turbopages.org/proxy_u/en-ru.ru.83def4eb-68ee534e-3adea25a-74722d776562/https/www.baeldung.com/linux/bind9-dns-server-configuration)

Как настроить BIND9 вторичным DNS-сервером (Secondary DNS) на Ubuntu 20.04: [serverspace.ru](https://serverspace.ru/support/help/bind9-secondary-dns-ubuntu-20-04/)

## Описание

**Некоторые особенности BIND:**

* Работает как authoritative DNS-сервер для внутренних зон и как recursive resolver для внешних запросов.
* Может отвечать на запросы о доменах, за которые он отвечает (например, internal.local), и пересылать запросы о внешних доменах (например, google.com) к публичным DNS-серверам.
* Поддерживается организацией Internet Systems Consortium.
* Написана на Си, работает в Unix-подобных операционных системах, Windows и OpenBSD.

## Установка

**Чтобы установить BIND в Ubuntu, нужно**:&#x20;

1. Обновить список пакетов:&#x20;

   ```
   sudo apt update
   ```

   .
2. Установить пакет BIND9:&#x20;

   ```
   sudo apt install bind9
   ```

   .
3. Включить BIND для запуска при загрузке:&#x20;

   ```
   sudo systemctl enable bind9
   ```

   ,&#x20;

   ```
   sudo systemctl start bind9
   ```

   .
4. Проверить, запущен ли BIND:&#x20;

   ```
   sudo systemctl status bind9
   ```

## Настройка

<details>

<summary>Общие сведения</summary>

**Некоторые параметры, которые можно настроить в файле named.conf.options**:

* **listen-on** — указывает сети, которые будет обслуживать DNS-сервер. Для работы по всем адресам параметр не указывается или задаётся «any».
* **allow-query** — указывает, кому разрешено выполнять запросы. По умолчанию сервер разрешает только локальные запросы, поэтому нужно добавить необходимые IP-адреса или прописать «any», чтобы разрешить все запросы.
* **forwarders** — содержит IP-адреса DNS-серверов, на которые перенаправляется запрос, если сервер не содержит необходимых данных.

&#x20;**После настройки** нужно проверить корректность изменений с помощью утилиты демона named —&#x20;

```
named-checkconf
```

Если ошибок нет, изменения вступили в силу.

**Важно**: значения IP-адресов и диапазонов нужно заменить на актуальные в соответствии с сетевой конфигурацией.

</details>

### Настройка переадресаторов в *named.conf.options* <a href="#bd-1-configure-forwarders-in-namedconfoptions" id="bd-1-configure-forwarders-in-namedconfoptions"></a>

{% hint style="info" %}
Тут изменения не требуются
{% endhint %}

<details>

<summary>Вручную</summary>

Чтобы настроить переадресацию, нам нужно отредактировать файл *named.conf.options*. Этот файл содержит глобальные параметры для нашего DNS-сервера.

```bash
sudo nano /etc/bind/named.conf.options
```

В этом файле найдите раздел *forwarders*. Здесь мы добавим IP-адреса внешних серверов, которые хотим использовать.

Кроме того, **мы можем использовать общедоступные DNS-серверы, такие как Google Public DNS или Cloudflare DNS**, или указать DNS-серверы, предоставляемые нашим интернет-провайдером.

Давайте используем DNS-серверы Google в нашей конфигурации:

```bash
$ cat /etc/bind/named.conf.options
...
forwarders {
        8.8.8.8;
        8.8.4.4;
};
...
```

Таким образом, наш DNS-сервер получает указание: «Если вы не можете найти ответ самостоятельно, обратитесь к этим серверам». Кроме того, мы можем добавить дополнительные IP-адреса, если хотим использовать дополнительные серверы пересылки.

После добавления переадресаторов нам нужно сохранить файл и перезапустить BIND9, чтобы изменения вступили в силу:

```bash
$ sudo systemctl restart bind9
```

После настройки переадресации наш сервер может обрабатывать внешние DNS-запросы.

</details>

### Настройка зон в *named.conf.local* <a href="#bd-2-set-up-zones-in-namedconflocal" id="bd-2-set-up-zones-in-namedconflocal"></a>

<details>

<summary>Вручную</summary>

В файле *named.conf.local* определяем локальные зоны.&#x20;

```bash
sudo nano /etc/bind/named.conf.local
```

Для начала давайте определим нашу зону прямого поиска. **Эта зона отвечает за преобразование доменных имён в IP-адреса**.

Затем давайте добавим блок *zone* для нашего домена, указав его как *master* и указав расположение файла зоны:

```bash
# Forward zone
zone "utmhome.ru" {
    type master;
    file "/etc/bind/zones/db.utmhome.ru";
};
```

Это сообщает нашему DNS-серверу, что он является основным источником информации для utmhome.ru и что записи DNS для этой зоны хранятся в файле */etc/bind/zones/db.*&#x75;tmhome.ru.

Далее давайте определим зону обратного поиска. **Эта зона отвечает за преобразование IP-адресов в доменные имена**.

Аналогичным образом в том же файле добавим ещё один блок *zone* для нашей подсети, снова указав её тип *master* и расположение файла зоны:

```bash
# Reverse zone
zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.1.168.192";
};
```

Однако эта конфигурация сообщает нашему DNS-серверу, что он отвечает за обратный поиск IP-адреса 192.168.1.3, а соответствующие записи хранятся в */etc/bind/zones/db.*&#x31;.168.192.

Кроме того, после настройки зон нам нужно создать соответствующие файлы зон.

</details>

<details>

<summary>Скриптом</summary>

На этом этапе вы создадите все необходимые конфигурации локальных зон. Вместо ручного редактирования файлов вы будете использовать скрипт для выполнения следующих действий, обеспечивая точную настройку:

1. **Создание `/etc/bind/named.conf.local`**: Этот файл будет сгенерирован с нуля для содержания определений как вашей прямой (utmhome.ru), так и обратной зоны просмотра.
2. **Создание файла обратной зоны**: Скрипт также создаст файл `db.REVERSE_IP` с необходимыми `PTR` записями.

Сначала соберите информацию об IP-адресе, необходимую для конфигурации обеих зон:

```bash
IP=$(ip -4 addr show enp3s0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
REV_IP=$(echo $IP | awk -F. '{print $3"."$2"."$1}')
LAST_OCTET=$(echo $IP | awk -F. '{print $4}')
```

Это извлекает IP-адрес вашего ВМ и обрабатывает его для создания формата обратного IP-адреса, необходимого для зоны обратного просмотра. Например, если ваш IP-адрес `192.168.1.3`, то `REV_IP` станет `1.168.192`, а `LAST_OCTET` станет 3.

Далее создайте основной файл конфигурации зоны, который сообщает `bind9` о обеих зонах:

```bash
sudo bash -c "cat > /etc/bind/named.conf.local" << EOF
//
// Do any local configuration here
//

// Forward lookup zone
zone "utmhome.ru" {
    type master;
    file "/etc/bind/zones/db.utmhome.ru";
};

// Reverse lookup zone
zone "${REV_IP}.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.${REV_IP}";
};
EOF
```

Этот файл определяет как зону прямого просмотра (для преобразования имен в IP-адреса), так и зону обратного просмотра (для преобразования IP-адресов обратно в имена). `type master` указывает, что этот сервер является авторитетным для этих зон.

</details>

### Создание файлов прямой и обратной зоны <a href="#bd-creating-forward-and-reverse-zone-files" id="bd-creating-forward-and-reverse-zone-files"></a>

#### Создайте каталог Zones <a href="#bd-1-create-the-zones-directory" id="bd-1-create-the-zones-directory"></a>

Во-первых, нам нужно место для хранения этих файлов зон. BIND9 ожидает, что они будут находиться в определённом каталоге, поэтому давайте его создадим:

```bash
sudo mkdir /etc/bind/zones
```

#### Создание файла прямой зоны <a href="#bd-2-create-forward-zone-file" id="bd-2-create-forward-zone-file"></a>

<details>

<summary>Вручную</summary>

Теперь давайте создадим файл прямой зоны. Этот файл отвечает за «прямой» поиск, преобразуя доменные имена в IP-адреса.

Таким образом, мы можем начать с файла шаблона, предоставленного BIND9:

```bash
$ cat /etc/bind/db.local
;
; BIND data file for local loopback interface
;
$TTL	604800
@	IN	SOA	localhost. root.localhost. (
			      2		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@	IN	NS	localhost.
@	IN	A	127.0.0.1
@	IN	AAAA	::1
```

Давайте скопируем этот файл на *db.*&#x75;tmhome.ru и настроим его:

```bash
sudo cp /etc/bind/db.local /etc/bind/zones/db.utmhome.ru
```

Это скопирует шаблон в наш файл *db.*&#x75;tmhome.ru, который мы можем отредактировать в соответствии с нашими целями. Внутри файла давайте определим записи DNS, которые сопоставляют доменные имена с IP-адресами:

**Первоначальный вариант**

<pre class="language-bash"><code class="lang-bash">sudo nano /etc/bind/zones/db.utmhome.ru
<strong>;
</strong>; BIND data file for local loopback interface
;
$TTL	604800
@	IN	SOA	utm-server3.utmhome.ru. admin.utmhome.ru. (
			      2		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@	IN	NS	utm-server3.utmhome.ru.
@       IN      A       192.168.1.3
utm-server3   IN  A	192.168.1.3
</code></pre>

Здесь мы настроили utm-server3.utmhome.ru в качестве основного сервера имён для нашего домена и сопоставили домен с IP-адресом 192.168.1.3.

**Текущий вариант**

```bash
sudo nano /etc/bind/zones/db.utmhome.ru
```

```bash
;
; BIND data file for local loopback interface
;
$TTL	604800
@	IN	SOA	ns1.utmhome.ru. admin.utmhome.ru. (
			      2		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@       IN      NS      ns1.utmhome.ru.
ns1     IN      A       192.168.1.3
;
RT-AX86U-0A20   IN  A	192.168.1.1
RED-NOTE-PC     IN  A	192.168.1.2
utm-server3     IN  A	192.168.1.3
utm-server4     IN  A	192.168.1.4
utm-server5     IN  A	192.168.1.5
;
HOME-PC         IN  A	192.168.1.12
WORK-PC         IN  A	192.168.1.13
ANDREY-PC       IN  A	192.168.1.14
MAXIM-PC        IN  A	192.168.1.15
NOTE-PC         IN  A	192.168.1.16
GPBNB28791      IN  A	192.168.1.17
;
utm-proxy       IN  A	192.168.1.30
;
ubuntu-server-1 IN  A	192.168.1.31
ubuntu-server-2 IN  A	192.168.1.32
;
utm-test3-11    IN  A	192.168.3.11

www     IN      CNAME   HOME-PC
Andrey  IN      CNAME   HOME-PC
Maxim   IN      CNAME   WORK-PC
```

Здесь мы настроили utm-server3.utmhome.ru в качестве основного сервера имён для нашего домена и сопоставили домен с IP-адресом 192.168.1.3.

</details>

<details>

<summary>Скриптом</summary>

Сначала скопируйте шаблон файла, чтобы новый файл имел правильные права доступа и владельца:

```bash
sudo cp /etc/bind/db.local /etc/bind/zones/db.utmhome.ru
```

Далее, вместо ручного редактирования файла, вы можете выполнить один блок команд, который:

1. Получит IP-адрес вашего ВМ (виртуальной машины).
2. Сгенерирует динамический серийный номер, используя текущую дату.
3. Запишет полное и корректное содержимое файла зоны в `/etc/bind/db.utmhome.ru`.

Сначала захватите IP-адрес вашего ВМ в переменную, которая будет использоваться в файле зоны:

```bash
VM_IP=$(ip -4 addr show enp3s0  | grep -oP '(?<=inet\s)\d+(\.\d+){3}') 
```

Эта команда извлекает IPv4-адрес из вашего основного сетевого интерфейса (enp3s0) с помощью регулярного выражения. IP-адрес будет автоматически вставлен в ваши DNS-записи.

Теперь создайте файл зоны с соответствующими DNS-записями. Эта одна команда сгенерирует полный файл зоны:

```bash
sudo bash -c "cat > /etc/bind/zones/db.utmhome.ru" << EOF
\$TTL    604800
@       IN      SOA     ns1.utmhome.ru. admin.utmhome.ru. (
                     $(date +%Y%m%d)01 ; Serial (YYYYMMDDNN)
                             604800     ; Refresh
                              86400     ; Retry
                            2419200     ; Expire
                             604800 )   ; Negative Cache TTL
;
@       IN      NS      ns1.utmhome.ru.
ns1     IN      A       ${VM_IP}
webserver IN    A       ${VM_IP}
utm-server3 IN   A       ${VM_IP}
www     IN      CNAME   webserver
EOF
```

Эта команда автоматически заполняет файл зоны правильными записями, используя конкретный IP-адрес вашего ВМ. Вы можете проверить содержимое с помощью `cat /etc/bind/zones/db.utmhome.ru`. Теперь вы успешно определили и создали свою первую зону прямого просмотра.

</details>

#### Создание файла обратной зоны <a href="#bd-3-create-reverse-zone-file" id="bd-3-create-reverse-zone-file"></a>

<details>

<summary>Вручную</summary>

Теперь давайте создадим файл обратной зоны. Этот файл отвечает за обратный поиск, преобразуя IP-адреса в доменные имена.

Точно так же давайте начнём с шаблона, который мы будем настраивать:

```bash
$ cat /etc/bind/db.127
;
; BIND reverse data file for local loopback interface
;
$TTL	604800
@	IN	SOA	localhost. root.localhost. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@	IN	NS	localhost.
1.0.0	IN	PTR	localhost.
```

Давайте скопируем указанный выше файл в db.1.168.192:

```bash
sudo cp /etc/bind/db.127 /etc/bind/zones/db.1.168.192
```

Теперь давайте изменим файл, чтобы в нём был указан правильный диапазон IP-адресов и имя хоста:

**Первоначальный вариант**

```bash
sudo nano /etc/bind/zones/db.1.168.192
;
; BIND reverse data file for local loopback interface
;
$TTL	604800
@	IN	SOA	utm-server3.utmhome.ru. admin.utmhome.ru. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@	IN	NS	utm-server3.utmhome.ru.
3	IN	PTR	utm-server3.utmhome.ru.
```

Аналогичным образом последний октет IP-адреса (*3.1.168* в *192.168.1.3*) сопоставляется с utm-server3.utmhome.ru.

**Текущий вариант**

```bash
sudo nano /etc/bind/zones/db.1.168.192
```

```bash
;
; BIND reverse data file for local loopback interface
;
$TTL	604800
@       IN      SOA     ns1.utmhome.ru. admin.utmhome.ru. (
			      1		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@       IN      NS      ns1.utmhome.ru.
;
3     IN      PTR     ns1.utmhome.ru.
;
1     IN      PTR     RT-AX86U-0A20.utmhome.ru.
2     IN      PTR     RED-NOTE-PC.utmhome.ru.
3     IN      PTR     utm-server3.utmhome.ru.
4     IN      PTR     utm-server4.utmhome.ru.
5     IN      PTR     utm-server5.utmhome.ru.
;
12    IN      PTR    HOME-PC.utmhome.ru.
13    IN      PTR    WORK-PC.utmhome.ru.
14    IN      PTR    ANDREY-PC.utmhome.ru.
15    IN      PTR    MAXIM-PC.utmhome.ru.
16    IN      PTR    NOTE-PC.utmhome.ru.
17    IN      PTR    GPBNB28791.utmhome.ru.
;
30    IN      PTR    utm-proxy.utmhome.ru.
31    IN      PTR    ubuntu-server-1.utmhome.ru.
32    IN      PTR    ubuntu-server-2.utmhome.ru.
```

</details>

<details>

<summary>Скриптом</summary>

Сначала соберите информацию об IP-адресе, необходимую для конфигурации обеих зон:

```bash
IP=$(ip -4 addr show enp3s0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
REV_IP=$(echo $IP | awk -F. '{print $3"."$2"."$1}')
LAST_OCTET=$(echo $IP | awk -F. '{print $4}')
```

Это извлекает IP-адрес вашего ВМ и обрабатывает его для создания формата обратного IP-адреса, необходимого для зоны обратного просмотра. Например, если ваш IP-адрес `192.168.1.3`, то `REV_IP` станет `1.168.192`, а `LAST_OCTET` станет 3.

Создайте файл обратной зоны с PTR-записями:

```bash
sudo bash -c "cat > /etc/bind/zones/db.${REV_IP}" << EOF
\$TTL    604800
@       IN      SOA     ns1.utmhome.ru. admin.utmhome.ru. (
                     $(date +%Y%m%d)01 ; Serial
                             604800     ; Refresh
                              86400     ; Retry
                            2419200     ; Expire
                             604800 )   ; Negative Cache TTL
;
@       IN      NS      ns1.utmhome.ru.
;
${LAST_OCTET}     IN      PTR     ns1.utmhome.ru.
${LAST_OCTET}     IN      PTR     webserver.utmhome.ru.
${LAST_OCTET}     IN      PTR     utm-server3.utmhome.ru.
EOF
```

Этот автоматизированный подход гарантирует, что обе зоны правильно определены в `named.conf.local`, а файл обратной зоны корректно создан, что предотвращает распространенные ошибки конфигурации.

</details>

### Проверка конфигурации и перезапуск BIND9 <a href="#bd-verifying-configuration-and-restarting-bind9" id="bd-verifying-configuration-and-restarting-bind9"></a>

<details>

<summary>Проверка ручной настройки</summary>

Для начала давайте перепроверим файлы зоны с помощью инструмента *named-checkzone*. Этот инструмент помогает выявлять ошибки в конфигурации.

```bash
sudo named-checkzone utmhome.ru /etc/bind/zones/db.utmhome.ru
zone utmhome.ru/IN: loaded serial 2
OK
```

Если всё в порядке, мы увидим сообщение *Ok*, указывающее на то, что зона успешно загрузилась. Далее давайте таким же образом проверим файл обратной зоны:

```bash
sudo named-checkzone 1.168.192.in-addr.arpa /etc/bind/zones/db.1.168.192
zone 1.168.192.in-addr.arpa/IN: loaded serial 1
OK
```

Опять же, успешный вывод означает, что наша обратная зона настроена правильно.

Давайте **перезапустим службу BIND9, чтобы применить все внесённые изменения**:

```bash
sudo systemctl restart bind9
```

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

Давайте проверим с помощью инструмента *dig*, работает ли DNS-сервер:

```bash
dig @192.168.1.3 utmhome.ru

; <<>> DiG 9.18.39-0ubuntu0.24.04.1-Ubuntu <<>> @192.168.1.3 utmhome.ru
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12911
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: ec7b0451eb3802500100000068ee602facd489a4dead9943 (good)
;; QUESTION SECTION:
;utmhome.ru.                       IN      A

;; ANSWER SECTION:
utmhome.ru.                604800  IN      A       192.168.1.3

;; Query time: 0 msec
;; SERVER: 192.168.1.3#53(192.168.1.3) (UDP)
;; WHEN: Tue Oct 14 17:37:35 MSK 2025
;; MSG SIZE  rcvd: 80
```

Эти результаты свидетельствуют о том, что наш сервер BIND9 работает должным образом.

</details>

<details>

<summary>Проверка настройки, выполненной скриптами</summary>

На этом этапе вы проверите все внесенные изменения в конфигурацию, а затем протестируете ваш работающий DNS-сервер. Крайне важно проверять файлы конфигурации на наличие синтаксических ошибок перед их применением, поскольку ошибка может помешать корректному запуску службы `bind9`. После проверки вы будете использовать утилиту `dig` для выполнения DNS-запросов и подтверждения того, что ваш сервер работает должным образом.

Сначала проверьте основные файлы конфигурации `bind9` на наличие синтаксических ошибок с помощью `named-checkconf`. Если эта команда не выдает никакого вывода, это означает, что ваши файлы конфигурации (`named.conf.local`, `named.conf.options` и т. д.) действительны.

```bash
sudo named-checkconf
```

Далее проверьте синтаксис вашего файла зоны прямого просмотра. Команда `named-checkzone` проверяет файл зоны на корректность.

```bash
sudo named-checkzone utmhome.ru /etc/bind/zones/db.utmhome.ru
```

Успешная проверка вернет статус "OK" и покажет серийный номер из вашего файла зоны:

```plaintext
zone utmhome.ru/IN: loaded serial 2024052001
OK
```

Теперь проверьте зону обратного просмотра. Поскольку имя зоны и имя файла зависят от IP-адреса вашего ВМ, сначала соберите необходимую информацию:

```bash
IP=$(ip -4 addr show enp3s0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
REV_IP=$(echo $IP | awk -F. '{print $3"."$2"."$1}')
ZONE_NAME="${REV_IP}.in-addr.arpa"
ZONE_FILE="/etc/bind/zones/db.${REV_IP}"
```

Это создает правильное имя зоны и путь к файлу на основе фактического IP-адреса вашего ВМ.

Теперь выполните команду проверки зоны:

```bash
echo "Checking reverse zone: ${ZONE_NAME}"
sudo named-checkzone ${ZONE_NAME} ${ZONE_FILE}
```

Успешная проверка снова покажет статус "OK":

```plaintext
zone 1.168.192.in-addr.arpa/IN: loaded serial 2024052001
OK
```

Перед перезапуском убедитесь, что служба `bind9` может читать файлы зон, установив правильные права владения. Сначала снова получите информацию об IP-адресе, чтобы построить правильный путь к файлу:

```bash
IP=$(ip -4 addr show enp3s0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
REV_IP=$(echo $IP | awk -F. '{print $3"."$2"."$1}')
```

Теперь установите правильные права владения для обоих файлов зон:

```bash
sudo chown root:bind /etc/bind/zones/db.utmhome.ru "/etc/bind/zones/db.${REV_IP}"
```

После проверки всех конфигураций пришло время перезапустить службу `bind9`, чтобы применить изменения:

```bash
sudo systemctl restart bind9
```

Чтобы быть уверенным, что служба запустилась корректно и загрузила ваши новые зоны, проверьте системные журналы.

```bash
sudo grep named /var/log/syslog | grep "loaded serial"
```

Вы должны увидеть вывод, подтверждающий успешную загрузку обеих ваших зон. Вывод также будет включать зоны по умолчанию, такие как `localhost`, что является нормальным. Главное — найти строки для utmhome.ru и вашей обратной зоны.

```plaintext
... named[...]: zone utmhome.ru/IN: loaded serial 2025071401
... named[...]: zone 1.168.192.in-addr.arpa/IN: loaded serial 2025071401
...
```

Если вы не видите этих строк, просмотрите вывод `sudo systemctl status bind9` на наличие ошибок.

Наконец, протестируйте ваш DNS-сервер с помощью `dig`. Вы будете запрашивать ваш локальный сервер напрямую, указывая `@127.0.0.1`.

Сначала протестируйте прямое разрешение для utm-server3`.utmhome.ru`:

```bash
dig @127.0.0.1 utm-server3.utmhome.ru
```

В выводе найдите раздел `ANSWER SECTION`. Он должен показывать `A` запись, указывающую на IP-адрес вашего ВМ, и, что важно, `flags` в заголовке должны включать `aa` для авторитетного ответа. Строка `SERVER` внизу должна показывать `127.0.0.1`.

```plaintext
...
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41853
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: cb28c746fe0a6d090100000068ee6f3af738a8b86527e6b3 (good)
;; QUESTION SECTION:
;utm-server3.utmhome.ru.             IN      A

;; ANSWER SECTION:
utm-server3.utmhome.ru.      604800  IN      A       192.168.1.3

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
...
```

Затем протестируйте обратное разрешение, используя флаг `-x`. Сначала захватите IP-адрес вашего ВМ:

```bash
IP=$(ip -4 addr show enp3s0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
```

Теперь выполните тест обратного разрешения:

```bash
dig @127.0.0.1 -x $IP
```

В разделе `ANSWER SECTION` теперь должны отображаться созданные вами `PTR` записи, сопоставляющие ваш IP-адрес с именами хостов, а `flags` снова должны включать `aa`.

```plaintext
...
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16765
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 5f1b135dd58acb7e0100000068ee6fc31660204d96f23e03 (good)
;; QUESTION SECTION:
;3.1.168.192.in-addr.arpa.      IN      PTR

;; ANSWER SECTION:
3.1.168.192.in-addr.arpa. 604800 IN     PTR     utm-server3.utmhome.ru.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP)
...

...
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ...
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;<last_octet>.<your_reversed_network_part>.in-addr.arpa. IN PTR

;; ANSWER SECTION:
<last_octet>.<your_reversed_network_part>.in-addr.arpa. 604800 IN PTR utm-server3.utmhome.ru.
<last_octet>.<your_reversed_network_part>.in-addr.arpa. 604800 IN PTR ns1.utmhome.ru.
<last_octet>.<your_reversed_network_part>.in-addr.arpa. 604800 IN PTR webserver.utmhome.ru.

;; SERVER: 127.0.0.1#53(127.0.0.1)
...
```

Поздравляем! Вы успешно настроили, проверили и протестировали базовый авторитетный DNS-сервер.

</details>

### Настройка DNS-клиентов <a href="#bd-configuring-dns-clients" id="bd-configuring-dns-clients"></a>

Теперь, когда наш сервер BIND9 запущен, давайте настроим клиентские компьютеры так, чтобы они использовали его для разрешения имён. Кроме того, **это гарантирует, что устройства в нашей сети смогут использовать наш локальный DNS-сервер для более быстрого и надёжного поиска имён**.

{% hint style="info" %}
Данное решение работает только до перезагрузки системы!
{% endhint %}

Для клиентов Linux нам нужно отредактировать файл [*/etc/resolv.conf*](https://translated.turbopages.org/proxy_u/en-ru.ru.83def4eb-68ee534e-3adea25a-74722d776562/https/www.baeldung.com/linux/etc-resolv-conf-file), чтобы указать IP-адрес нашего сервера:

```bash
sudo nano /etc/resolv.conf
```

Кроме того, в этом файле давайте добавим строку с директивой *nameserver*, за которой следует IP-адрес нашего сервера BIND9:

```bash
nameserver 192.168.1.3
```

Кроме того, мы можем добавить директиву *search*, чтобы указать домен, который следует использовать для неквалифицированных имён:

```bash
search utmhome.ru
```

Таким образом, если пользователь на клиентском компьютере попытается получить доступ к utm-server3 (без домена), клиент автоматически попытается разрешить utm-server&#x33;*.*&#x75;tmhome.ru.

После сохранения изменений клиент должен начать использовать наш сервер BIND9.

{% hint style="danger" %}
Так не делать!

Не останавливать службу systemd-resolved

После перезагрузки получаем пустой файл /etc/resolv.conf

Потом нужно разобраться!
{% endhint %}

После перезагрузки системы файл /etc/resolv.conf пересоздается и ранее внесенные в него изменения не сохраняются. Чтобы этого избежать необходимо:

* **Отключить systemd-resolved**. Если предпочтительно ручное управление DNS, systemd-resolved можно отключить с помощью команд&#x20;

  ```
  systemctl stop systemd-resolved
  ```

  &#x20;и&#x20;

  ```
  systemctl disable systemd-resolved
  ```

  .

## Тестирование

**После настройки нужно проверить работу DNS**. Для этого можно использовать команды:

* ```
  dig @127.0.0.1 example.local
  ```
* ```
  nslookup www.example.local 127.0.0.1
  ```

&#x20;Если DNS-сервер работает правильно, должны быть корректные ответы на все запросы.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://utm-1.gitbook.io/utm-docs/dokumentaciya/utm-it/programmnoe-obespechenie/linux-servera/sistemnoe-po/bind-dns1-master-rezhim/bind-pervonachalnoe-opisanie.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
