327 lines
12 KiB
Markdown
327 lines
12 KiB
Markdown
# Настройка сервера разрешения имён BIND
|
||
|
||
## 1. Установка
|
||
|
||
Debian, Ubuntu
|
||
|
||
```bash
|
||
sudo apt install bind9 bind9-doc dnsutils python-ply-doc
|
||
```
|
||
|
||
*при этом, можно ограничится установкой основного пакета `bind`, однако установщик предлагает и дополнительные пакеты*
|
||
|
||
Cent OS Stream
|
||
|
||
```bash
|
||
sudo dnf install bind bind-utils
|
||
```
|
||
|
||
В результате установки в системе появится служба `named.sevice`
|
||
|
||
|
||
## 2. Запуск службы
|
||
|
||
После установки необходимо перечитать список демонов системы
|
||
|
||
```bash
|
||
sudo systemctl daemon-reload
|
||
```
|
||
|
||
и выполнить запуск службы `named`
|
||
|
||
```bash
|
||
sudo systemctl enable --now named.service
|
||
```
|
||
|
||
## 3. Основной конфигурационный файл BIND
|
||
|
||
Конфигурационный файлы расположены:
|
||
|
||
Debian, Ubuntu - `/etc/bind`</br>
|
||
Cent OS - `/etc`
|
||
|
||
Основным файлом настройки является - `named.conf`</br>
|
||
Для проверки корректности конфигурации служит утилита - `named-checkconf`
|
||
|
||
Кроме, непосредственно, самой настройки сервера, файл `named.conf` может включать ссылки на другие конфигурационные файлы, которые указываются в директиве `include`, например
|
||
|
||
```bash
|
||
include "/etc/bind/named.conf.options";
|
||
```
|
||
|
||
Таким образом, файл `named.conf` может содержать исключительно ссылки на другие конфигурационные файлы
|
||
|
||
```bash
|
||
da2001@ns:/etc/bind $ cat /etc/bind/named.conf
|
||
|
||
include "/etc/bind/named.conf.options";
|
||
include "/etc/bind/named.conf.local";
|
||
include "/etc/bind/named.conf.default-zones";
|
||
```
|
||
|
||
В конфигурационных файлах bind можно использовать комментарии различных стилей:</br>
|
||
стиль C: `/* */`</br>
|
||
стиль C++: `// до конца строки`</br>
|
||
стиль Unix: `# до конца строки`</br>
|
||
|
||
## 4. Кэширующий режим работы
|
||
|
||
По умолчанию конфигурация настраивается на работу в режиме кэширующего сервера. В этом режиме `bind` только сохраняет в своём кэше ответы от вышестоящих DNS серверов и транслирует их клиентам. За счёт этого, при повторном запросе, ответ клиенту выдаётся из записи в кэше, соответственно и ответ клиент получает быстрее, т.к. нет обращения к внешним серврерам имён. Всё, что для этого требуется - это добавить IP адреса DNS вышестоящих серверов в секции `forwarders`
|
||
|
||
Пример настройки - `/etc/bind/named.conf.options`
|
||
|
||
```bash
|
||
options {
|
||
directory "/var/cache/bind";
|
||
|
||
// интерфейсы, на которых принимаются DNS запросы
|
||
listen-on port 53 {
|
||
127.0.0.1;
|
||
192.168.13.2; // IP адрес интерфейса сервера
|
||
};
|
||
|
||
listen-on-v6 port 53 {
|
||
any;
|
||
};
|
||
|
||
// кто может обращаться за DNS запросами к этому серверу. { any; } значит любой
|
||
allow-query {
|
||
any;
|
||
};
|
||
|
||
// вышестоящие DNS-сервера, на которые будет переадресован запрос при отсутствии ответа
|
||
forwarders {
|
||
// NS сервера Яндекса
|
||
77.88.8.8;
|
||
77.88.8.1;
|
||
};
|
||
|
||
dnssec-validation auto;
|
||
|
||
};
|
||
|
||
```
|
||
|
||
После внесения изменений в конфигурацию, необходимо выполнить проверку синтаксиса с помощью утилиты `named-checkconf`. Если будут обнаружены ошибки, утилита укажет на строки с ошибками и предложит варианты исправления.
|
||
|
||
## 5. Firewall
|
||
|
||
Если на сервере активирован межсетевой экран, необходимо разрешить работу DNS:
|
||
|
||
Cent OS (firewalld)
|
||
|
||
```bash
|
||
sudo firewall-cmd --add-service=dns --permanent
|
||
sudo firewall-cmd --reload
|
||
```
|
||
|
||
Проверить разрешения
|
||
|
||
```bash
|
||
sudo firewall-cmd --list-services
|
||
```
|
||
|
||
или
|
||
|
||
```bash
|
||
sudo firewall-cmd --list-all
|
||
```
|
||
|
||
Ubuntu (ufw)
|
||
|
||
```bash
|
||
sudo ufw allow dns
|
||
```
|
||
|
||
Проверить разрешения
|
||
|
||
```bash
|
||
sudo ufw status verbose
|
||
```
|
||
|
||
Перезапуск службы для применения внесенных изменений в конфигурацию
|
||
|
||
```bash
|
||
sudo systemctl restart named.service
|
||
```
|
||
|
||
## 6. Проверка работы BIND
|
||
|
||
Для проверки работы сервера в режиме кэширования можно запросить разрешение имени с помощью утилиты `nslookup`. Эта утилита входит в состав пакета `dnsutils`.
|
||
|
||
С клиента в одной локальной сети с сервером BIND выполним запрос разрешения имени `ubuntu.com`
|
||
|
||
```bash
|
||
nslookup ubuntu.com ns
|
||
```
|
||
|
||
`ns` - имя сервера BIND в локальной сети</br>
|
||
Если всё настроено верно, в ответ получим
|
||
|
||
```bash
|
||
[da2001@fedora ~]$ nslookup ubuntu.com ns
|
||
Server: ns
|
||
Address: 192.168.13.2#53
|
||
|
||
Non-authoritative answer:
|
||
Name: ubuntu.com
|
||
Address: 185.125.190.20
|
||
Name: ubuntu.com
|
||
Address: 185.125.190.21
|
||
Name: ubuntu.com
|
||
Address: 185.125.190.29
|
||
Name: ubuntu.com
|
||
Address: 2620:2d:4000:1::27
|
||
Name: ubuntu.com
|
||
Address: 2620:2d:4000:1::26
|
||
Name: ubuntu.com
|
||
Address: 2620:2d:4000:1::28
|
||
|
||
```
|
||
|
||
## 7. Разрешение имён в локальной сети.
|
||
|
||
Для разреешения имён в локальной сети, необходимо определить зоны прямого и обратного просмотра:
|
||
- зона прямого просмотра выпоняет разрешение доменных имён в IP адреса
|
||
- зона обратного просмотра выполняет разрешения IP адресов в имена
|
||
|
||
### Зона прямого просмотра
|
||
|
||
Необходимо создать файл описания зоны и указать его в основном конфигурационном файле `named.conf`
|
||
|
||
в Ubuntu это можно сделать следующими командами:
|
||
|
||
```bash
|
||
sudo touch /etc/bind/named.conf.dav.lan
|
||
|
||
sudo bash -c "echo 'include \"/etc/bind/named.conf.dav.lan\";' >> /etc/bind/named.conf"
|
||
```
|
||
|
||
в Cent OS в команде необходимо изменить пути размещения файлов на `/etc/named.conf`
|
||
|
||
**Содержимое файла описания зоны прямого просмотра**
|
||
|
||
```bash
|
||
da2001@ns:~ $ cat /etc/bind/named.conf.dav.lan
|
||
zone "dav.lan" {
|
||
type master;
|
||
file "/etc/bind/zone.dav.lan";
|
||
};
|
||
|
||
```
|
||
|
||
теперь необходимо выполнить непосредственное описание зоны
|
||
|
||
```bash
|
||
da2001@ns:~ $ cat /etc/bind/zone.dav.lan
|
||
$TTL 604800
|
||
@ IN SOA dav.lan. root.dav.lan. (
|
||
2022070101 ; Serial
|
||
604800 ; Refresh
|
||
86400 ; Retry
|
||
2419200 ; Expire
|
||
604800 ) ; Negative Cache TTL
|
||
|
||
@ IN NS ns
|
||
@ IN AAAA ::1
|
||
ns IN A 192.168.13.2
|
||
|
||
zidoo IN A 192.168.13.3
|
||
voip IN A 192.168.13.4
|
||
|
||
```
|
||
|
||
где,</br>
|
||
`$TTL 604800` - время жизни записи в кэше</br>
|
||
`dav.lan.` - название зоны, `root.dav.lan.` - эл.адрес администратора, но вместо @ указана точка. Точки в конце названия зоны и адреса администраторы ОБЯЗАТЕЛЬНЫ</br>
|
||
`Serial` - указан номер версии конфигурации, может быть задан произвольно, обычно в нём указывают дату изменения и порядковый номер изменения</br>
|
||
`@ IN NS ns` - указание на DNS сервер</br>
|
||
`@ IN A 192.168.13.2` - сопоставление имени и IPv4 адреса DNS сервера</br>
|
||
`@ IN AAAA ::1` - сопоставление имени и IPv6 локального адреса DNS сервера</br>
|
||
|
||
Далее можно добавлять записи сопоставления адресов других хостов в сети.
|
||
|
||
После внесения всех изменений в конфигурацию, стоит проверить корректность описания файла зоны утилитой `named-checkzone`, утилите необходимо передать в качестве аргументов имя зоны и файл описывающий зону
|
||
|
||
```bash
|
||
da2001@ns:~ $ named-checkzone dav.lan /etc/bind/zone.dav.lan
|
||
zone dav.lan/IN: loaded serial 2022070101
|
||
OK
|
||
```
|
||
|
||
### Зона обратного просмотра
|
||
|
||
Для указания файла описания заны обратного просмотра, добавим его в ранее созданный файл `named.conf.dav.lan`
|
||
|
||
```bash
|
||
da2001@ns:~ $ cat /etc/bind/named.conf.dav.lan
|
||
zone "dav.lan" {
|
||
type master;
|
||
file "/etc/bind/zone.dav.lan";
|
||
};
|
||
|
||
zone "13.168.192.in-addr.arpa" {
|
||
type master;
|
||
file "/etc/bind/zone.192.168.13";
|
||
};
|
||
|
||
```
|
||
|
||
и опишем зону обратного просмотра
|
||
|
||
```bash
|
||
$TTL 604800
|
||
@ IN SOA dav.lan. root.dav.lan. (
|
||
2022070101 ; Serial
|
||
604800 ; Refresh
|
||
86400 ; Retry
|
||
2419200 ; Expire
|
||
604800 ) ; Negative Cache TTL
|
||
|
||
@ IN NS ns.
|
||
2 IN PTR ns.dav.lan.
|
||
3 IN PTR zidoo.dav.lan.
|
||
4 IN PTR voip.dav.lan.
|
||
```
|
||
|
||
от описания прямой зоны, обратная зона отличается типом записей, в ней указываем записи PTR.</br>
|
||
|
||
**Формат PTR записи**</br>
|
||
`3 IN PTR zidoo.dav.lan.`</br>
|
||
`3` - последний октет IPv4 адреса</br>
|
||
`zidoo.dav.lan.` - FQDN, точка в конце обязательна
|
||
|
||
После описания обратной зоны, проверим корректность внесения данных
|
||
|
||
```bash
|
||
da2001@ns:/etc/bind $ sudo named-checkzone 13.168.192.in-addr.arpa dav.lan.rzone
|
||
zone 13.168.192.in-addr.arpa/IN: loaded serial 2022070101
|
||
OK
|
||
```
|
||
|
||
## 8. Проверка разрешения имён в локальной сети.
|
||
|
||
### Проверка зоны прямого просмотра
|
||
|
||
С клиента в локальной сети запросим разрешение имени в IPv4 адрес существующего хоста в локальной сети, при этом укажем, что разрешать имя в адрес необходимо нашим DNS сервером
|
||
|
||
```bash
|
||
[da2001@fedora ~]$ nslookup voip ns
|
||
Server: ns
|
||
Address: 192.168.13.2#53
|
||
|
||
Name: voip.dav.lan
|
||
Address: 192.168.13.4
|
||
|
||
```
|
||
|
||
### Проверка зоны обратного просмотра
|
||
|
||
С клиента в локальной сети запросим разрешение IPv4 адреса существующего хоста в локальной сети в его FQDN, также, с указанием коркретного DNS сервера
|
||
|
||
```bash
|
||
[da2001@fedora ~]$ nslookup 192.168.13.5 ns
|
||
5.13.168.192.in-addr.arpa name = qnap.dav.lan.
|
||
|
||
```
|