Где хранится кэш bind9
>Доброго времени суток!
>Может ли BIND 9.4.1-P1 - хранитm кэш на диске, как pdnsd?
>Спасибо.посмотреть кеш можно так:
rndc dumpdb
cat /var/named/var/dump/named_dump.db
для конфига есть директива cache-file, но это для девелоперов только, для отладки софта. А так кеш в памяти хранится.
А зачем тебе оно?
>[оверквотинг удален]
>посмотреть кеш можно так:
>
>rndc dumpdb
>
>cat /var/named/var/dump/named_dump.db
>
>для конфига есть директива cache-file, но это для девелоперов только, для отладки
>софта. А так кеш в памяти хранится.
>
>А зачем тебе оно?Для того, чтобы при отсутствии подключения к инету сервер продолжал резольвить имена из кеша так как клиенты могут пользоваться другим резервным каналом, то есть обращаться к другому VPN серверу. Естественно я за это время разберусь с основным каналом.
Может я что то не так понимаю, поясните пожалуйста.
>Может я что то не так понимаю, поясните пожалуйста.Стандартно dns сервер выдает запись до тех пор, пока ее время жизни не кончится, после чего она из кеша удаляется.
В вашем случае лучше не придумывать как обмануть стандарты, а дать серверу то-же резервное подключение, что и пользователям. И вообще, с какой целю ДНС нужен? если для корпоративных зон каких-то, то проще на нем слейва поднять, тогда он будет всегда для нужных зон выдавать записи.
>[оверквотинг удален]
>>
>>Хранение кеша на диске имеет смысл на момент частой перезагрузки сервера или
>>сервиса. Приличный сервер все равно удаляет из кеша записи, время жизни
>>которых истекло, без разницы где он их хранит. И какой смысл
>>в работе днс для ресолва внешних имен если доступа нет к
>>серверам, а если у клиентов еть доступ, то дай такой-же доступ
>>и серверу.
>
>Согласен! Если можно оставьте номер вашей аськи, будем общаться, если вы не
>против по *nix вопросам.ушло на мыло
DNS (Domain Name System) – важный и довольно сложный в настройке компонент, необходимый для работы веб-сайтов и серверов. Многие пользователи обращаются к DNS-серверам, которые предоставляет их хостинг-провайдер, однако собственные DNS-серверы имеют некоторые преимущества.
В данном мануале вы узнаете, как установить Bind9 и настроить его как кэширующий или перенаправляющий DNS-сервер на сервере Ubuntu 14.04.
Зачем запускать собственный локальный DNS-сервер?
Обычно ваш компьютер или маршрутизатор использует DNS-сервер поставщика услуг интернета для запроса DNS-имен. Запуск собственного локального DNS-сервера может ускорить поиск DNS-имен:
- Локальный DNS-сервер слушает только ваши DNS-запросы и не отвечает на другие, поэтому у вас есть гораздо более высокий шанс получить ответы DNS непосредственно из вашего кэша .
- Сетевая задержка между вашим компьютером и DNS-сервером почти нулевая, поэтому DNS-запросы могут быть отправлены на корневые DNS-сервера быстрее.
Если вы запускаете свой собственный почтовый сервер или VPN-сервер на VPS хостинге, то вам также рекомендуется установить собственный DNS-сервер на том же VPS.
Вы также можете запустить свой собственный DNS-сервер, если вам не нравится, что ваша история серфинга Интернета хранится на сторонних серверах.
Если вы владеете веб-сайтом и хотите, чтобы ваш собственный DNS-сервер обрабатывал запросы для вашего доменного имени вместо использования DNS-сервера вашего регистратора, то вам также нужен собственный DNS.
Генерируем ключ для зоны (ZSK):
Смена прав и владельца для сгенерированных файлов.
На CentOS / Red Hat:
На Ubuntu / Debian:
Формирование ключей
Создаём каталог, в котором будем хранить ключи и сразу переходим в него.
На CentOS / Red Hat:
На Ubuntu / Debian:
Resolver DNS в Ubuntu 20.04 LTS
Какой у вас в системе установлен резолвер можно посмотреть вот такой командой:
Чтобы установить ваш DNS в качестве резолвера по умолчанию, откройте файл конфигурации systemd-resolved.
И пропишите в файле в секции [Resolver] ваш DNS-сервер
Закрываем файл и перезагружаем systemd-resolver
Если теперь посмотреть статус то DNS должен измениться на IP вашего сервера.
Также теперь проверьте содержание /etc/resolv.conf .
Если привязки не произошло, то можно установить утилиту resolvconf
Запускаем сервис named-resolvconf
На этом Настройка локального DNS-сервера BIND9 на Ubuntu 20.04 LTS окончена.
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Ситуация следующего плана: я создал кеширующий DNS-сервер, который форвардит DNS-запросы на сервер провайдера.вот файл named.conf :
options {
pid-file "/var/run/named/named.pid";
directory "/var/named";
forwarders {
// DNS провайдера
192.168.0.55;
};
forward first;
};zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
};в resolv.conf указал
nameserver 127.0.0.1вроде работает но возникают следующие вопросы:
1) где хранятся закешированные адреса?
2) можно как-то сделать чтобы кеш не сбрасывался при перезапуске named ?
3) что указать в named.ca (корневые DNS) если я все форваржу DNSу провайдера?PS: ОС Linux RedHat 7.3, bind родной из rpm'ки
>Ситуация следующего плана: я создал кеширующий DNS-сервер, который форвардит DNS-запросы на сервер
>провайдера.
>
>вот файл named.conf :
>options {
> pid-file "/var/run/named/named.pid";
> directory "/var/named";
> forwarders {
> // DNS провайдера
> 192.168.0.55;
> };
> forward first;
>};
>
>
>zone "." {
> type hint;
> file "named.ca";
>};
> zone "0.0.127.in-addr.arpa" {
> type master;
> file "named.local";
>};
>
>в resolv.conf указал
>nameserver 127.0.0.1
>
>вроде работает но возникают следующие вопросы:
>1) где хранятся закешированные адреса?
>2) можно как-то сделать чтобы кеш не сбрасывался при перезапуске named ?
>
>3) что указать в named.ca (корневые DNS) если я все форваржу DNSу
>провайдера?
>
>PS: ОС Linux RedHat 7.3, bind родной из rpm'киПо моему BIND хранит свой кеш в памяти и при перезапуске службы кеш очищается, а зачем тебе сохранять кеш? Мне кажется, нет ничего страшного, что он очищается.
>>Ситуация следующего плана: я создал кеширующий DNS-сервер, который форвардит DNS-запросы на сервер
>>провайдера.
>>
>>вот файл named.conf :
>>options {
>> pid-file "/var/run/named/named.pid";
>> directory "/var/named";
>> forwarders {
>> // DNS провайдера
>> 192.168.0.55;
>> };
>> forward first;
>>};
>>
>>
>>zone "." {
>> type hint;
>> file "named.ca";
>>};
>> zone "0.0.127.in-addr.arpa" {
>> type master;
>> file "named.local";
>>};
>>
>>в resolv.conf указал
>>nameserver 127.0.0.1
>>
>>вроде работает но возникают следующие вопросы:
>>1) где хранятся закешированные адреса?
>>2) можно как-то сделать чтобы кеш не сбрасывался при перезапуске named ?
>>
>>3) что указать в named.ca (корневые DNS) если я все форваржу DNSу
>>провайдера?
>>
>>PS: ОС Linux RedHat 7.3, bind родной из rpm'ки
>
>По моему BIND хранит свой кеш в памяти и при перезапуске службы
>кеш очищается, а зачем тебе сохранять кеш? Мне кажется, нет ничего
>страшного, что он очищается.
>
ну в принципе да, но просто у провайдера днс часто валится так что приходится все по максимуму кешировать пока он живой :)
Да, и еще, где-то можно задаввать размер кеша, время жизни и т.д. ?
>ну в принципе да, но просто у провайдера днс часто валится так
>что приходится все по максимуму кешировать пока он живой :)
>Да, и еще, где-то можно задаввать размер кеша, время жизни и т.д.
>?А зачем тебе вообще его кешировать? Твой ДНС вполне может обойтись без Время жизни задается в файле зоны. Я могу тебе скинуть примерные настройки моего ДНС, он общественный, так что пользователей много, но только завтра :) У нас ночь уже.
Технология DNS в нынешнем виде была разработана более 20 лет назад, когда о защите информации мало кто задумывался. Поэтому в сегодняшним состоянии система DNS имеет несколько ключевых уязвимостей.
DNSSEC — технология, позволяющая однозначно удостовериться в подлинности DNS информации при помощи криптографической подписи.
В этой статье разберём как можно внедрить данную технологию на наш сервер с операционной системой Ubuntu.
Ручное подписывание зоны
Переходим в каталог, где хранится наша зона.
CentOS / Red Hat:
Ubuntu / Debian:
*Пути могут отличаться (зависит от ваших настроек)
Система должна вернуть, примерно, следующее:
Редактируем конфигурационный файл bind.
На CentOS / Red Hat:
На Ubuntu / Debian:
В настройке зоны меняем путь к файлу:
На CentOS / Red Hat:
На Ubuntu / Debian:
Требования
- Понимание базовых типов DNS-серверов. Ознакомиться с подробностями можно в этой статье.
- Две машины, из которых хотя бы одна работает на Ubuntu 14.04. Первая машина будет настроена как клиент (IP-адрес 192.0.2.100), а вторая – как DNS-сервер (192.0.2.1).
Вы научитесь настраивать клиентскую машину для отправки запросов через DNS-сервер.
3: Настройка перенаправляющего DNS-сервера
Если вашей инфраструктуре больше подходит перенаправляющий DNS-сервер, вы можете немного откорректировать настройку.
На данный момент файл named.conf.options выглядит так:
Можно использовать тот же список ACL, чтобы ограничивать DNS-сервер конкретным списком клиентов. Однако при этом необходимо немного изменить конфигурацию, чтобы сервер больше не пытался выполнять рекурсивные запросы.
Не меняйте значение recursion на no. Перенаправляющий сервер все-таки поддерживает рекурсивные сервисы. Чтобы настроить перенаправляющий сервер, нужно создать список кэширующих серверов, на которые он будет перенаправлять запросы.
Это делается в блоке options <>. Сначала нужно создать в нем новый блок forwarders, где будут храниться IP-адреса рекурсивных серверов имен, на которые нужно перенаправлять запросы. В данном случае это будут DNS-серверы Google (8.8.8.8 и 8.8.4.4):
Далее нужно в директиве forward установить значение only, поскольку сервер должен только перенаправлять все запросы и не пытаться разрешить их самостоятельно.
В результате конфигурация выглядит так:
Чтобы избежать их, нужно изменить значение параметра dnssec-validation на yes и явно разрешить dnssec.
Сохраните и закройте файл. Настройка перенаправляющего DNS-сервера завершена.
Сохранение настроек клиента DNS
Параметры файла /etc/resolv.conf сбрасываются после перезапуска. Чтобы эти настройки использовались на постоянной основе, нужно отредактировать файлы, которые обращаются к этому файлу.
Откройте этот файл:
sudo nano /etc/network/interfaces
Найдите параметр dns-nameservers. Удалите текущую запись и замените ее данными о вашем DNS-сервере или просто добавьте новый DNS-сервер в качестве одного из значений.
. . .
iface eth0 inet static
address 111.111.111.111
netmask 255.255.255.0
gateway 111.111.0.1
dns-nameservers 192.0.2.1
. . .
Сохраните и закройте файл.
В системах CentOS и Fedora для этого нужно открыть файл /etc/sysconfig/network/network-scripts/ifcfg-eth0:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
В нем найдите строки, которые начинаются с DNS. Среди них будет строка DNS1, в ней нужно указать ваш DNS-сервер. Если вы не хотите пользоваться другими DNS-серверами, удалите остальные записи.
Сохраните и закройте файл.
Генерируем мастер ключ для зоны (KSK):
Кэширующий DNS-сервер
Серверы этого типа также называются определителями, поскольку они обрабатывают рекурсивные запросы и, как правило, могут выполнить поиск данных DNS не других серверах.
Почти все DNS-серверы в вашей сетевой конфигурации будут кэширующими. Кэширующий DNS-сервер – хороший выбор для многих ситуаций. Если вы не хотите полагаться на DNS-серверы вашего хостинг-провайдера или другие общедоступные DNS-серверы, настройте собственный кэширующий DNS-сервер. Чем меньше расстояние от DNS-сервера к клиентским машинам, тем меньше время обслуживания запросов DNS.
Подписываем зоны
1: Установка Bind на DNS-сервер
Пакет Bind можно найти в официальном репозитории Ubuntu. Обновите индекс пакетов и установите Bind с помощью менеджера apt. Также нужно установить пару зависимостей.
sudo apt-get update
sudo apt-get install bind9 bind9utils bind9-doc
После этого можно начать настройку сервера. Конфигурацию кэширующего сервера можно использовать в качестве шаблона для настройки перенаправляющего сервера, поэтому сначала нужно настроить кэширующий DNS-сервер.
Заключение
Теперь вы умеете настраивать кэширующий и перенаправляющий DNS-сервер. Это поможет вам ускорить обработку DNS-запросов.
Сегодня в статье рассмотрим пример настройки локального DNS-сервера BIND9 на Ubuntu 20.04 LTS. Всё нижеописанное применимо и для других Debian дистрибутивов, с небольшими поправками на названия файлов и их путей.
Ключи ГОСТ
Формируются при помощи ключа -a ECCGOST .
2: Настройка кэширующего DNS-сервера
Сначала нужно настроить Bind в качестве кэширующего DNS-сервера. Такая конфигурация заставит сервер рекурсивно искать ответы на клиентские запросы на других DNS-серверах. Он будет последовательно опрашивать все соответствующие DNS-сервера, пока не найдет ответ.
Конфигурационные файлы Bind хранятся в каталоге /etc/bind.
Большую часть файлов редактировать не нужно. Главный конфигурационный файл называется named.conf (named и bind – два названия одного приложения). Этот файл ссылается на файлы named.conf.options, named.conf.local и named.conf.default-zones.
Для настройки кэширующего DNS-сервера нужно отредактировать только named.conf.options.
sudo nano named.conf.options
Этот файл выглядит так (комментарии опущены для простоты):
Чтобы настроить кэширующий сервер, нужно создать список контроля доступа, или ACL.
Нужно защитить DNS-сервер, обрабатывающий рекурсивные запросы, от злоумышленников. Атаки DNS-усиления особенно опасны, поскольку могут вовлечь сервер в распределенные атаки на отказ в обслуживании.
Атаки DNS-усиления – это один из способов прекращения работы серверов и сайтов. Для этого злоумышленники пытаются найти общедоступные DNS-серверы, которые обрабатывают рекурсивные запросы. Они подделывают IP-адрес жертвы и отправляют запрос, который вернет DNS-серверу очень объемный ответ. При этом DNS-сервер возвращает на сервер жертвы слишком много данных в ответ на небольшой запрос, увеличивая доступную пропускную способность злоумышленника.
Для размещения общедоступного рекурсивного DNS-сервера требуется тщательная настройка и администрирование. Чтобы предотвратить возможность взлома сервера, настройте список IP-адресов или диапазонов сети, которым сервер сможет доверять.
Перед блоком options добавьте блок acl. Создайте метку для группы ACL (в данном мануале группа называется goodclients).
В этом блоке перечислите IP-адреса или сети, у которых будет доступ к этому DNS-серверу. Поскольку сервер и клиент работают в подсети /24, можно ограничить доступ по этой подсети. Также нужно разблокировать localhost и localnets, которые подключаются автоматически.
acl goodclients 192.0.2.0/24;
localhost;
localnets;
>;
options . . .
Теперь у вас есть ACL безопасных клиентов. Можно приступать к настройке разрешения запросов в блоке options. Добавьте в него такие строки:
options directory "/var/cache/bind";
recursion yes;
allow-query < goodclients; >;
. . .
Блок options явно включает рекурсию, а затем настраивает параметр allow-query для использования списка ACL. Для ссылки на группу ACL можно также использовать другой параметр, например allow-recursion. При включенной рекурсии allow-recursion определит список клиентов, которые могут использовать рекурсивные сервисы.
Однако если параметр allow-recursion не установлен, Bind возвращается к списку allow-query-cache, затем к списку allow-query и, наконец, к спискам по умолчанию localnets и localhost. Поскольку мы настраиваем только кэширующий сервер (он не имеет собственных зон и не пересылает запросы), список allow-query всегда будет применяться только к рекурсии. Это самый общий способ определения ACL.
Сохраните и закройте файл.
Это все настройки, которые нужно добавить в конфигурационный файл кэширующего DNS-сервера.
Примечание: Если вы хотите использовать только этот тип DNS, переходите к проверке конфигураций, перезапустите сервис и настройте свой клиент.
5: Настройка клиента
Войдите на клиентскую машину. Убедитесь, что клиент был указан в группе ACL настроенного DNS-сервера. В противном случае DNS-сервер откажется обслуживать запросы этого клиента.
Изменения, внесенные здесь, будут сохраняться только до перезагрузки, что отлично подходит для тестирования. Если результаты тестовой настройки вас удовлетворят, вы сможете сделать эти настройки постоянными.
Откройте файл с помощью sudo в текстовом редакторе:
sudo nano /etc/resolv.conf
В файле нужно перечислить DNS-серверы, которые будут использоваться для разрешения запросов. Для этого используйте директиву nameserver. Закомментируйте все текущие записи и добавьте строку nameserver, указывающую на ваш DNS-сервер:
Сохраните и закройте файл.
Для этого можно использовать ping:
Более подробную информацию предоставит инструмент dig. Попробуйте подключиться к другому домену:
Как видите, обработка запроса заняла 36 миллисекунд. Повторите запрос. Сервер должен извлечь данные из кэша, что укорит обработку запроса:
Теперь запрос обрабатывается гораздо быстрее.
Также можно протестировать обратное преобразование. Для этого используйте найденный IP (в данном случае 140.211.169.4) и dig с флагом –x:
Как видите, обратное преобразование выполнено успешно.
Вернитесь на DNS-сервер. Если во время настройки клиента возникли какие-либо ошибки, вы увидите их. К примеру, часто случается такая ошибка:
Это значит, что сервер пытается разрешить данные IPv6, но он не настроен для поддержки IPv6. Чтобы устранить ошибку, нужно настроить Bind для обслуживания только IPv4.
sudo nano /etc/default/bind9
Найдите параметр OPTIONS и добавьте в него флаг -4, чтобы настроить поддержку только IPv4.
Сохраните и закройте файл.
sudo service bind9 restart
После этого в логах не должно быть ошибок.
Автоматическое подписывание зоны
Каждый раз после редактирования зоны не очень удобно ее постоянно подписывать командой dnssec-signzone.
Для автоматизации процесса в конфигурационном файле bind добавим следующие опции:
- key-directory — каталог для хранения сгенерированных ключей, необходимо прописать тот, в котором мы формировали последние командой dnssec-keygen;
- sig-validity-interval — период действия ключей: дней / период обновления.
Для зоны редактируем:
- inline-signing — включение или отключение прозрачного формирования подписей (без необходимости менять файл зоны);
- auto-dnssec — уровень автоматической настройки DNSSEC для зоны.
Также обращаем внимание, что мы убрали расширение .signed .
Проверяем, что у пользователя named/bind есть права на запись в каталог хранения зоны. При необходимости, меняем владельца:
Также права на файлы *.private должны быть выставлены в 400
Удаляем старый файл подписанной зоны:
На CentOS / Red Hat:
На Ubuntu / Debian:
В каталоге зоны должны появиться дополнительные 3 файла:
Так как DNSSEC основан на обеспечении цепочки доверия, чтобы процесс верификации заработал, требуется чтобы регистратор заверил созданный KSK-ключ,подтвердив своё доверие. Для этого создадим на основе KSK-ключа DSKEY-ключ (Delegation Signature Key)
Команда выдаст примерно следующее
Копируем две сгенерированные строки в интерфейсе ввода DSKEY на сайте регистратора домена.
Верификация заработает после того как регистратор обновит параметры первичной зоны.
Установка локального DNS-сервера BIND9 на Ubuntu 20.04
Выполните следующую команду, чтобы установить BIND9 на Ubuntu 20.04 LTS, из репозитория по умолчанию:
После установки можно проверить версию следующей командой:
По умолчанию после установки BIND9 запускается автоматически. Вы можете проверить его статус с помощью команды:
Примечание: В Ubuntu 20.04 LTS BIND9 запускается как служба, а не как сервис. Поэтому команда service bind9 start|stop|restart|status в данном дистрибутиве не действует.
Также если автоматически служба не запустилась, то выполните следующие команды:
Сервер DNS в вашей системе будет работать от имени bind пользователя, который создается во время установки, и прослушивает TCP и UDP порт 53. Для проверки выполните следующую команду:
Есть еще один важный пакет: rndc , контроллер демона BIND9, который был установлен с пакетом bind9utils . rndc используется для перезагрузки / остановки и управления другими аспектами демона BIND. Связь осуществляется через TCP-порт 953.
Вы также можете проверить его статус командой:
Перенаправляющий DNS-сервер
С точки зрения клиента перенаправляющий DNS-сервер будет выглядеть почти идентично кэширующему серверу, но механизмы и рабочая нагрузка у них совершенно разные.
Перенаправляющий DNS-сервер имеет те же преимущества, что и кэширующий сервер. Однако на самом деле он не выполняет ни одного рекурсивного запроса. Вместо этого он перенаправляет все запросы на внешний разрешающий сервер, а затем кэширует результаты для последующих запросов.
Настройка локального DNS-сервера BIND9 на Ubuntu 20.04 LTS
Для настройки пакеты BIND9 перейдем в его каталог:
В нем нас будут интересовать следующие файлы:
Подсказка: Пакет bind9 на Ubuntu 20.04 теперь не поставляется с db.root файлом корневых серверов, теперь он использует файл /usr/share/dns/root.hints .
Давайте сперва откроем файл named.conf.options :
И внесем в него следующие изменения:
Сохраните и закройте файл. Затем проверьте синтаксис файла конфигурации.
Если ничего не выдал, то все в порядке. Можно перезапустить службу:
Также если у вас закрыты порты то их необходимо открыть.
Для UFW
Для iptables
где, 10.5.5.1 — IP адрес нашего сервера в локальной сети
Теперь проверьте журнал запросов с помощью следующей командой:
Из вывода видно что запросы поступают на наш DNS сервер, а он в свою очередь на них успешно отвечает.
В файле named.conf.local настраиваются зона прямого и обратного просмотра. В данном материале уже описано как это сделать
Начальная конфигурация
Генерируем ключ для зоны (ZSK):
Проверка DNS сервера на DNSSEC записи
Чтобы проверить, отдает ли наш сервер bind ответы с цифровыми подписями, вводим команду:
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Требования
- Понимание базовых типов DNS-серверов. Ознакомиться с подробностями можно в этой статье.
- Две машины, из которых хотя бы одна работает на Ubuntu 14.04. Первая машина будет настроена как клиент (IP-адрес 192.0.2.100), а вторая – как DNS-сервер (192.0.2.1).
Вы научитесь настраивать клиентскую машину для отправки запросов через DNS-сервер.
4: Проверка настроек и перезапуск Bind
Теперь нужно убедиться, что настройки работают должным образом.
Чтобы проверить синтаксис конфигурационных файлов, введите:
Если в файлах нет ошибок, командная строка не отобразит никакого вывода.
После этого можно перезапустить демон Bind, чтобы обновить настройки.
sudo service bind9 restart
После нужно проверить логи сервера. Запустите на сервер команду:
sudo tail -f /var/log/syslog
Теперь откройте новый терминал и приступайте к настройке клиентской машины.
Генерируем мастер ключ для зоны (KSK):
подробное описание ключей можно посмотреть командой man dnssec-keygen .
Читайте также: