diff --git a/bind9/dav.lan.rzone b/bind9/dav.lan.rzone new file mode 100644 index 0000000..11769fe --- /dev/null +++ b/bind9/dav.lan.rzone @@ -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. diff --git a/bind9/dav.lan.zone b/bind9/dav.lan.zone new file mode 100644 index 0000000..28effca --- /dev/null +++ b/bind9/dav.lan.zone @@ -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 diff --git a/bind9/named.conf b/bind9/named.conf new file mode 100644 index 0000000..7be52aa --- /dev/null +++ b/bind9/named.conf @@ -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"; diff --git a/bind9/named.conf.dav.lan b/bind9/named.conf.dav.lan new file mode 100644 index 0000000..2a95acb --- /dev/null +++ b/bind9/named.conf.dav.lan @@ -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"; + }; diff --git a/bind9/named.conf.options b/bind9/named.conf.options new file mode 100644 index 0000000..bffb3fc --- /dev/null +++ b/bind9/named.conf.options @@ -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; + +}; diff --git a/bind9/readme.md b/bind9/readme.md new file mode 100644 index 0000000..eb72daa --- /dev/null +++ b/bind9/readme.md @@ -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`
+Cent OS - `/etc` + +Основным файлом настройки является - `named.conf`
+Для проверки корректности конфигурации служит утилита - `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 можно использовать комментарии различных стилей:
+стиль C: `/* */`
+стиль C++: `// до конца строки`
+стиль Unix: `# до конца строки`
+ +## 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 в локальной сети
+Если всё настроено верно, в ответ получим + +```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 + +``` + +где,
+`$TTL 604800` - время жизни записи в кэше
+`dav.lan.` - название зоны, `root.dav.lan.` - эл.адрес администратора, но вместо @ указана точка. Точки в конце названия зоны и адреса администраторы ОБЯЗАТЕЛЬНЫ
+`Serial` - указан номер версии конфигурации, может быть задан произвольно, обычно в нём указывают дату изменения и порядковый номер изменения
+`@ IN NS ns` - указание на DNS сервер
+`@ IN A 192.168.13.2` - сопоставление имени и IPv4 адреса DNS сервера
+`@ IN AAAA ::1` - сопоставление имени и IPv6 локального адреса DNS сервера
+ +Далее можно добавлять записи сопоставления адресов других хостов в сети. + +После внесения всех изменений в конфигурацию, стоит проверить корректность описания файла зоны утилитой `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.
+ +**Формат PTR записи**
+`3 IN PTR zidoo.dav.lan.`
+`3` - последний октет IPv4 адреса
+`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. + +```