master
Долгий Артём 2022-07-01 10:09:37 +03:00
parent fb89a4e5ca
commit 33e3a49d1f
6 changed files with 417 additions and 0 deletions

20
bind9/dav.lan.rzone Normal file
View File

@ -0,0 +1,20 @@
$TTL 604800
@ IN SOA dav.lan. root.dav.lan. (
2 ; 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.
5 IN PTR qnap.dav.lan.
6 IN PTR printserver.dav.lan.
7 IN PTR docker.dav.lan.
8 IN PTR dnas.dav.lan.
9 IN PTR pve.dav.lan.
10 IN PTR bastion.dav.lan.
12 IN PTR smarthome.dav.lan.
15 IN PTR syno.dav.lan.

22
bind9/dav.lan.zone Normal file
View File

@ -0,0 +1,22 @@
$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
qnap IN A 192.168.13.5
printserver IN A 192.168.13.6
docker IN A 192.168.13.7
dnas IN A 192.168.13.8
pve IN A 192.168.13.9
bastion IN A 192.168.13.10
smarthome IN A 192.168.13.12
syno IN A 192.168.13.16

13
bind9/named.conf Normal file
View File

@ -0,0 +1,13 @@
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/named.conf.dav.lan";

9
bind9/named.conf.dav.lan Normal file
View File

@ -0,0 +1,9 @@
zone "dav.lan" {
type master;
file "/etc/bind/dav.lan.zone";
};
zone "13.168.192.in-addr.arpa" {
type master;
file "/etc/bind/dav.lan.rzone";
};

27
bind9/named.conf.options Normal file
View File

@ -0,0 +1,27 @@
options {
directory "/var/cache/bind";
// интерфейсы, на которых принимаются DNS запросы
listen-on port 53 {
127.0.0.1;
192.168.13.2;
};
listen-on-v6 port 53 {
any;
};
// кто может обращаться за DNS запросами к этому серверу. { any; } значит любой
allow-query {
any;
};
// вышестоящие DNS-сервера, на которые будет переадресован запрос при отсутствии ответа
forwarders {
77.88.8.8;
77.88.8.1;
};
dnssec-validation auto;
};

326
bind9/readme.md Normal file
View File

@ -0,0 +1,326 @@
# Настройка сервера разрешения имён 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.
```