Меню Рубрики

Установка bind из исходников

Сборка установка и настройка BIND 9.16.0 из исходников в LXC контейнере Debian 10

Здравствуйте, уважаемые читатели!

Данная статья написана по большей части, как заметка по сборке DNS сервиса BIND9.16.0
Появилась она в связи с моими исследованиями работоспособности такой фишки, как RPZ (Response Policy Zone).
Он позволяет переопределять ответы DNS для доменных имен т.е. блокировать тот или иной ресурс на уровне DNS. Я планировал использовать его для блокировки различной рекламы и баннеров.
В версиях BIND9.10 и BIND9.11 он почему-то не работал корректно. А вот в BIND9.16 работает!
Но в этой статье речь пойдет не о блокировке, а о сборке последней стабильной версии BIND9.

Мне также не нравилось, что в репозитории для Debian 9 доступен только BIND9.10, а для Debian 10 доступен только BIND9.11
Я решил изучить вопрос сборки и запуска из исходных кодов. Если кому-то это будет полезно, то прошу к изучению.

Сборка и установка

Скачивание

Скачиваем исходники BIND9

Устанавливаем необходимые зависимости

Переходим в распакованную папку

Конфигурирование

В рабочей системе на Debian 10 у установленного BIND выводятся вот такие параметры сборки. Частью из них я и воспользуюсь!

Производим конфигурирование. Через –help вы можете ознакомиться с опциями настройки

После завершения конфигурирования получим итоговый вывод:

  • –sysconfdir=/etc/bind: Этот параметр заставляет BIND искать файлы конфигурации в /etc/bind вместо /usr/etc
  • –with-libtool: Этот параметр вызывает динамическое создание библиотек и связывает установленные двоичные файлы с этими библиотеками
  • –enable-fetchlimit: Используйте эту опцию, если вы хотите иметь возможность ограничить частоту рекурсивных клиентских запросов. Это может быть полезно на серверах, которые получают большое количество запросов
  • –disable-static: Этот ключ предотвращает установку статических версий библиотек.

Сборка

Проверяем все ли установилось.
named

Обновляем разрешения библиотек

Настройка

Предварительная настройка

Добавляем группу bind

Добавляем пользователя bind

Создаем папки для сервиса
Папка /etc/bind/ уже должна быть создана.

Добавляем файл bind9 в папку базовых настроек /etc/default/

Создаем systemd сервис для управления BIND9

Создание конфигурации

Создаем ключ rndc.key

Переместим его в папку keys

Создаем файл rndc.conf для управления

Создадим минимальный файл конфигурации для запуска BIND9

Добавляем базовые файлы зон

Обновляем права для файла /etc/bind/keys/rndc.key

Запуск сервиса

Активируем сервис BIND9 и запускаем его

Итоговый статус работы BIND9.16.0

Дополнительно процесс запуска можно просмотреть в лог файле /var/log/syslog и /var/log/bind/bind.log

Заключение

По большей части процесс сборки никакой сложности не представляет, главное это корректно установленные права пользователя на папки и файлы.
Если что-то не запускается, то тут уже помогут стандартные логи в которых достаточно информации, чтобы понять, что не так.

Благодарю за ваше время!
Всего хорошего на просторах Интернета 😉

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Мир интересен, если вы достаточно любопытны.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Уважаемый автор, т.е. сейчас последняя версия BIND получила функциональность pi-hole и стало возможно организовать вырезание рекламы её использованием и правильной настройкой?

RPZ (Response Policy Zones) – эта функция появилась только в BIND9.10, вернее в BIND9.8 в виде базовых элементов, но полноценная реализация после итераций и обновлений появилась в BIND9.10
https://www.zytrax.com/books/dns/ch7/rpz.html
От части можно этот функционал сравнить с pi-hole, но pi-hole по идее сделан для более легкого внедрения фильтрации на уровне “раз, два, чтобы работало”
С BIND чуть сложнее т.к. списки необходимо обрабатывать самому.
Из примера после загрузки 13 списков, приходится вводить whitelist т.к. эти списки проверять достаточно проблематично, по итогу в файле получается порядка 334000 доменных имен и переставала открываться почта mail.ru из-за наличия домена r.mail.ru в этом списке. Ну и так далее…
Я пока тестирую этот функционал и пишу bash сборщик доменов из таких файлов (вернее уже написал, внедряю дополнительные пользовательские blacklist и whitelist)

Но функционал работает. Всякие окна и баннеры перестают появляться. Также в rpz можно настроить ответы, которые получает браузер: NODATA, NXDOMAIN и т.д.

источник

Компиляция и установка программ из исходников

Содержание

Не редко необходимые пакеты можно найти только в виде исходных текстов, в данной статье описывается метод установки пакета из исходных текстов.

Распаковка

Программы обычно распространяются в упакованных архивах, это файлы с расширениями

Нужно понимать отличие между архиватором и упаковщиком.

Для архивации директорий и файлов используется программа tar; результатом её работы является файл с расширением .tar. Грубо говоря, это копия файловой системы — директорий и файлов с их атрибутами и правами доступа, помещённая в один файл.

Данный файл по размеру будет чуть больше, чем суммарный размер файлов, которые были архивированы. Поэтому (а может и по другой причине) используют упаковщики — программы, которые позволяют уменьшить размер файла без потери данных.

Программа tar умеет распаковывать, поэтому не нужно вызывать gunzip, а можно просто указать программе tar, что файл нужно cначала распаковать. Например, команда

сразу распакует и разархивирует. Отличие файлов с расширениями

Читайте также:  Установка заземления от газа

лишь в том, что использовались разные упаковщики, программа tar определяет метод сжатия автоматически и дополнительных опций в данном случае не требуется.

После распаковки необходимо перейти в полученный каталог, все описываемые ниже команды выполняются в каталоге с исходными текстами пакета.

Сборка пакета

Для сборки программ в GNU/Linux используется (в основном) программа make, которая запускает инструкции из Makefile, но поскольку дистрибутивов GNU/Linux много, и они все разные, то для того чтобы собрать программу, нужно для каждого дистрибутива отдельно прописывать пути,где какие лежат библиотеки и заголовочные файлы. Программисты не могут изучать каждый дистрибутив и для каждого отдельно создавать Makefile. Поэтому придумали конфигураторы, которые «изучают» систему, и в соответствии с полученными знаниями создают Makefile. Но на конфигураторе они не остановились и придумали конфигураторы конфигураторов …на этом они остановились

Для сборки нам нужны компиляторы: они прописаны в зависимостях пакета build-essential, так что достаточно установить его со всеми зависимостями. Ещё нужны autoconf и automake.

Итак, чтобы собрать что-то из исходников, нужно сначала собрать конфигуратор; как собрать конфигуратор, описано в файле configure.in. Для сборки конфигуратора необходимо выполнить

Если таких скриптов в архиве не оказалось, то можно выполнить последовательно следующие команды:

Все эти команды используют файл configure.in. После выполнения этих команд создастся файл configure. После этого необходимо запустить конфигуратор для проверки наличия всех зависимостей, а также установки дополнительных опций сборки (если возможно) и просмотра результата установки (опционально- может не быть)

Конфигуратор построит Makefile основываясь на полученных знаниях и файле makefile.am. Можно передать конфигуратору опции, предусмотренные в исходниках программы, которые позволяют включать/отключать те или иные возможности программы, обычно узнать о них можно командой

Также есть набор стандартных опций, вроде

, которая указывает, какой каталог использовать для установки. Для Ubuntu обычно

БЕЗ слеша в конце! Теперь можно запустить процесс сборки самой программы командой

Для сборки достаточно привелегий обычного пользователя. Окончанием сборки можно считать момент, когда команды в консоли перестанут «беспорядочно» выполняться и не будет слова error. Теперь всё скомпилировано и готово для установки.

Установка

Усилия потраченные на Правильную установку в последствии с лихвой окупятся в случае удаления или обновления устанавливаемого программного обеспечения.

Правильная установка(Вариант №1)

Установка при помощи утилиты checkinstall. Для установки выполните

Для создания и установки deb-пакета необходимо выполнить

Правильная установка(Вариант №2)

Быстрое создание deb-пакета «вручную».

Установка (вариант №3)

Процедура создания deb-пакета подробно описана в данной статье.

Неправильная установка

Для установки необходимо выполнить

Для удаления пакета, установленного данным способом необходимо выполнить в корневой директории исходников программы (там где вы запускали make install).

Ошибки

Часто на этапе конфигурации конфигуратор сообщает, что нехватает той или иной библиотеки. Название библиотеки, которое он сообщает, не всегда соответствует названию пакета в Ubuntu. Из собственного опыта могу посоветовать поискать в Синаптике нужный пакет, исключив префикс lib, если нашлось несколько пакетов различающихся приставкой -dev в названии, то вам нужно установить именно -dev пакет (обычно он тянет за собой и не -dev пакет). Можно ещё поискать с помощью http://packages.ubuntu.com/, введя имя библиотеки в поиск по содержимому пакетов, аналогично, если найдётся dev и не dev, нужны оба . Ну или просто поискать в Google.

Необходимое программное обеспечение

Пакеты с буквами mm в конце описания — это пакеты для C++ программ. Список для bmpx, но подойдёт почти для любой GTK2/Gnome программы. Так что если не получается собрать, то посмотрите на этот список и сверьте с тем что у вас установлено.

источник

BIND 9

Содержание

Установка

Установить BIND 9 можно перейдя по ссылке слева или введя в терминале следующую команду:

Помещение BIND 9 в «песочницу»

Из соображений безопасности лучше запускать BIND в chroot среде, для этого проделайте несколько простых операций.

Отредактируйте файл /etc/init.d/bind9, в него надо добавить строку в среде chroot которая будет находится в /var/lib/named. Измените строку OPTIONS=«-u bind» на OPTIONS=«-u bind -t /var/lib/named»

Здесь важно то, что изменять надо файл в папке init.d, а не в папке default! Если не найдете в скрипте init.d, добавьте эти строки.

Создайте необходимые для работы BIND 9 директории.

Переместите директорию с конфигурацией BIND 9 из /etc в /var/lib/named/etc:

Создайте символическую ссылку на новую директорию с файлами конфигурации BIND на случай если в дальнейшем вы соберётесь обновить пакет, это поможет избежать проблем.

Создайте необходимые устройства и установите права на каталоги

Настройка логгирования

Для того чтобы логирование событий работало из песочницы необходимо изменить стартовый скрипт демона sysklogd для того, чтобы сообщения BIND 9 попадали в syslog. Отредактируйте файл /etc/default/sysklogd, измените там строку SYSLOGD=«» на SYSLOGD=«-u syslog -a /var/lib/named/dev/log» . Опять же очень многие пытаются найти сточку SYSLOGD=«» в файле /etc/init.d/sysklogd а её там нет и быть не должно – смотреть надо в директории /etc/default/sysklogd. Иногда sysklogd ругается на опцию «-u», тогда укажите SYSLOGD=«-a /var/lib/named/dev/log».

Читайте также:  Установка прицела на маузер 98к

После изменения настроек syslog перезапустите демон:

Для того, чтобы BIND 9 помещенный в chroot сумел найти системный лог добавьте в созданный файл /etc/rsyslog.d/bind-chroot.conf только одну строчку:

Также необходимо создать папку /var/lib/named/var/log для последующего хранения файла с логами:

Настройка BIND 9

1. I этап — настройка зон – создаем отдельный файл конфигураций для наших зон ( в данном случае у нас будет одна зона описывающая несуществующий домен .ex):

2. Теперь отредактируем файл конфигурации нашей зоны .ex (имя вашего домена) /var/lib/named/etc/bind/myzones.conf добавив следующее (.ex — имя вашего домена)

В данном случаем мы специально создаем «несуществующую зону», так как настраиваем BIND для локальной сети – основная задача настроить кэширующий ДНС с возможностью обработки локальных имен/адресов (посредством создания зоны .ex и прямой и обратной зоны для локальной сети 192.168.1.0/24)

3. Теперь создадим файл зоны (прямой) для локальной сети

и заполните файл как показано ниже

4. Теперь создадим файл обратной зоны для локальной сети local.rev

5.Редактируем файл /var/lib/named/etc/bind/named.conf.options

и впишите туда несколько опций усложняющих жизнь хакерам и отключим поддержку IPv6:

6. Напоследок отредактируем файл /var/lib/named/etc/named.conf

во первых включим в конце в конец файла наш файл зон

В начале файла, до включения файла с опциями (named.conf.options), создадим список acl для указания, что будет обслуживать наш сервер BIND, указав нашу подсеть, обратную петлю и оба ДНС провайдера

Для возможности работы передачи зоны с подписью TSIG включаем rndc.key и указываем кто сможет управлять нашим сервером и по какому порту controls

И в конце файла добавляем настройку обратной зоны для локальной сети

и подключаем файл с нашей зоной myzones.conf

Для того, чтобы логи собирались в отдельный файл named.log, и не «сорили» в системные файлы – создадим в нашей «песочнице» (в папке, созданной ранее /var/lib/named/var/log), файл для логов и сделаем символическую ссылку в обычную папку log:

И добавим в файл конфигурации в самый конец детальную настройку работы логов:

7. В итоге, если убрать комментарии и свести все воедино файл named.conf приобретет такой вид:

8.Изменим файл /etc/resolv.conf, вписав туда свой домен первой строкой, в нашем случае это

9. Перезапускаем bind9 и перечитываем файлы зон

У меня оказалось, что утилита nslookup и dig не установлена – пришлось поставить пакеты hosts и dnsutils командой

источник

Блог начинающего сисадмина

Здесь уже не будет ничего нового интересного, лучше загляните сюда: https://medium.com/@Amet13

четверг, 23 мая 2013 г.

Установка программы из исходных кодов

Как правило, самая свежая версия ПО находится на официальном сайте разработчика в виде исходных кодов, запакованных в архиве .tar.gz , .tar.xz , .tar.bz2 и других.

Удобнее устанавливать, конечно, из репозиториев, например:
# yum install bind9

yum (Yellow dog Updater Manager) или apt (Advanced Package Tool) сам решит для вас все зависимости и установит программу быстро и без особых усилий.
Второй вариант (редко), скачать уже бинарный пакет, и командой:
# dpkg -i имя_пакета
или:
# rpm -i имя_пакета
установить его, в этом случае вам придется самому решать зависимости пакетов.

Например для установки bind9 нужна библиотека libssl-dev , ее тоже нужно скачать и установить перед bind’ом.
В случае с установкой из исходников мало чем отличается от вышеупомянутой установки с помощью dpkg/rpm .
Тоже нужно скачивать пакет (не с репозитория), тоже нужно решать зависимости, отличие лишь в распаковке и командах установки.
Стандартный алгоритм установки программы из «сорцов» выглядит примерно так:
1. Скачиваем нужный пакет
2. Распаковываем в каталог /usr/local/src
3. Заходим в каталог в распакованными файлами
4. Читаем файл README , очень полезно
5. Выполняем команду ./configure с необходимыми параметрами (если нужно)
5.1. Если есть неразрешенные зависимости, то разрешаем их
6. Выполняем команду make
7. Выполняем команду make install

Алгоритм установки программы с помощью программы checkinstall:1. Пункты 1-6 такие же как и в предыдущем
7. Выполняем команду checkinstall

Плюс этого способа в том, что перед установкой формируется dpkg/rpm пакет, соответственно, его можно будет легко удалить командами:

# dpkg -r имя_пакета
или:
# rpm -r имя_пакета

Я рекомендую использовать именно этот способ.

Пример с установкой BIND9 из исходных кодов.
1. Идем на официальный сайт isc.org/software/bind и скачиваем нужную версию bind’а.
Я например скачал самую свежую версию bind-9.9.2-P2.tar.gz на данный момент.
Это можно сделать с помощью wget , lynx , и т.д. если же у вас есть графическая оболочка, то в любом браузере, или через ftp’шник, вариантов много.

2. Создаем каталог /usr/local/src и переходим в него:
# mkdir /usr/local/src
# cd /usr/local/src

3. Копируем скачанный архив в этот каталог:
# cp /путь/к/каталогу/с/архивом /usr/local/src

4. Распаковываем архив:
# tar -xf bind-9.9.2-P2.tar.gz
Альтернативный вариант распаковки, с помощью mc .

5. Переходим в каталог с распакованными файлами:
# cd ./bind-9.9.2-P2

6. Выполняем:
# ./configure
Ждем выполнения команды.

А вот и первые подводные камни, если до этого не было установлена библиотека libssl-dev , то bind просит нас ее установить.

Читайте также:  Установка антабок на крикет

источник

Установка и настройка DNS-сервера BIND в Linux

BIND – наиболее распространенное open-source приложение, в котором реализованы протоколы DNS, предоставляющие возможность преобразования доменных имен в IP-адреса и наоборот.

Данная статья представляет собой руководство по быстрой настройке DNS-сервера в Linux при помощи BIND. Мы не будем подробно разбирать, что такое система DNS и как она работает, а сосредоточимся на примере настройки своей зоны и файла конфигурации для домена/узла с поддержкой сервисов www и электронной почты.

В нашем примере мы будем использовать следующие параметры:
IP-адрес, на котором будет установлен сервер имен: 172.31.0.122
имя домена/узла: itproffi.ru
авторитативные сервера имен для зоны itproffi.ru: ns1.itproffi.ru (172.31.1.10) и ns2. itproffi.ru (172.31.1.11)
службы www и электронной почты для itproffi.ru будут использовать адрес 172.31.1.10

Установка сервера bind

Установка bind очень проста – нужно воспользоваться менеджером пакетов. В Debian и Ubuntu выполните следующую команду:

Пакет dnsutils необязателен для запуска сервера bind, но для тестирования конфигурации мы будем пользоваться командой dig из этого пакета.

Создание файла зоны DNS

Дальнейшие примеры будут для Ubuntu/Debian, но также подходят и для Centos/RedHat, только директория с настройками зон в CentOS будет находиться в /etc/named/ , а основной файл конфигурации /etc/named.conf . Для начала нам потребуется создать новый файл зоны для домена itproffi.ru. Перейдите в директорию /etc/bind/ . создайте в ней поддиректорию zones/master/ и перейдите в нее, выполнив следующую последовательность команд:

Директория /etc/bind/zones/master будет содержать файл зоны для домена itproffi.ru. При желании можно использовать другую директорию. Файл зоны db.itproffi.ru будет содержать запись DNS, которая поможет серверу имен установить соответствие полного доменного имени IP-адресу. Создайте этот файл со следующим содержимым:

Рассмотрим ключевые строки этого файла:

  • Запись SOA: авторитативный сервер имен для itproffi.ru – это ns1.itproffi.ru, адрес ответственного за зону DNS администратора – admin@itproffi.ru
  • Записи NS: два сервера имен для зоны itproffi.ru – ns[1,2].itproffi.ru
  • Запись MX: почтовый сервер для itproffi.ru. Число 10 означает уровень приоритета
  • Записи A: A означает «адрес» (address). Другими словами, ns1 в зоне itproffi.ru будет иметь адрес 172.31.1.10
  • Запись CNAME (Canonical Name – каноническое имя): привязывает одно доменное имя к другому (каноническому), например, устанавливает соответствие mail.itproffi.ru и itproffi.ru.

Настройка обратной зоны

На данном этапе DNS-сервер bind может выдать IP-адрес, связанный с узлом itproffi.ru. Теперь нам нужно научить наш сервер имен обратному процессу, то есть устанавливать соответствие имени IP-адресу. Для этого создадим еще один файл db.172.31.1 со следующим содержимым:

Запись PTR: DNS-запись, используемая для определения соответствия IP-адреса имени узла.

Настройка файла конфигурации bind

На данный момент у нас должно быть два файла:

Теперь требуется вставить имена обоих файлов зоны в файл конфигурации bind /etc/bind/named.conf.local . Для этого добавьте в файл следующие строки:

Последний момент перед проверкой конфигурации – внести в файл named.conf.options IP-адрес стабильного DNS-сервера. Он будет использоваться, если локальный DNS-сервер не будет знать ответ на запрос разрешения имени. Часто этот адрес предоставляется интернет-провайдером, но если вы поклонник Google, можно указать адрес 8.8.8.8 или 8.8.4.4.

Замените следующий блок текста в файле named.conf.options:

на блок текста с адресом стабильного DNS-сервера

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

А лучше, для безопасности вместо any пропишите ваши сети с которых разрешено подключение

Если этого не сделать, то при попытке обращения к серверу с другого компьютера вы получите ошибку

Проверка файлов зоны и конфигурации

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

Для проверки файлов конфигурации выполните следующую команду:

С этой командой работает простое правило: отсутствие результата – это хороший результат. Если команда ничего не возвращает, значит ошибок в ваших файлах конфигурации не обнаружено.

Для проверки файлов зоны DNS можно воспользоваться командой named-checkzone:

Проверка обратной зоны

Запуск и перезапуск сервера bind

Теперь мы можем запускать сервер bind:

Если сервер уже был запущен, его можно перезапустить командой restart:

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

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

Для тестирования новой конфигурации сервера имен bind нам пригодится команда dig из пакета dnsutils. Эту команду можно запустить на любом компьютере с сетевым доступом к вашему DNS-серверу, но лучше всего начать тестирование с локального узла. В рассматриваемом нами примере IP-адрес сервера имен 172.31.0.122. Сначала проверим прямое разрешение имени (получение IP-адреса по доменному имени):

dig @172.31.0.122 www.itproffi.ru

Теперь проверим обратную зону:

Если вы получили аналогичные результаты, то зона DNS настроена правильно. Вместо команды dig для тестирования можно также использовать команду nslookup.

nslookup 172.31.1.10 172.31.0.122

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

источник

Добавить комментарий

Adblock
detector