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.
|
|||
|
|
|||
|
```
|