DNS сервер · 3 min read · Oct 02, 2025

Как установить быстрый и легковесный DNS-сервер MaraDNS на CentOS 7

MaraDNS — это маленький, бесплатный и легковесный сервер доменных имен. Это альтернативный открытый DNS-сервер, который действует как кэширующий, рекурсивный или авторитетный сервер имен. Его удивительно легко настроить, и он доступен для платформ Linux и Windows. Его можно скачать отсюда. Вы можете прочитать больше о DNS, рекурсивном DNS, авторитетном DNS здесь.

Ниже приведены некоторые интересные характеристики MarDNS:

  • Легкость установки
  • Низкое использование памяти (использует примерно 5 МБ ОЗУ)
  • Может действовать как авторитетный сервер имен и рекурсивный сервер имен.
  • Не забудьте, что документация на сайте MaraDNS очень проста для понимания.

Теперь давайте начнем с MaraDNS на CentOS 7. Ниже приведены шаги, которые помогут вам установить и настроить MaraDNS:

Установка MaraDNS

На данный момент RPM-пакеты MaraDNS для CentOS 7 недоступны, поэтому мы будем устанавливать и компилировать его из исходников.

Установите gcc:

sudo yum install gcc

Скачайте последний архив исходников отсюда. Вы можете сделать это так:

wget http://maradns.samiam.org/download/2.0/2.0.11/maradns-2.0.11.tar.bz2

Извлеките содержимое архива:

tar -xjf maradns-2.0.11.tar.bz2

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

cd maradns-2.0.11
sudo make
sudo make install

MaraDNS теперь установлен. Сервис MaraDNS установлен в /etc/init.d/maradns. Вы можете просто запустить сервис с помощью:

sudo /etc/init.d/maradns start

Чтобы запустить рекурсивный демон, выполните:

sudo /etc/init.d/maradns.deadwood start

По умолчанию авторитетный сервер имен слушает на порту 127.0.0.1, а рекурсивный — на порту 127.0.0.2.

Давайте убедимся, что MaraDNS запускается при загрузке:

chkconfig maradns on

Скрипт инициализации рекурсивного DNS-сервера должен быть совместим с chkconfig, прежде чем вы сможете запустить его при старте. Добавьте следующее содержимое в верхнюю часть файла /etc/init.d/maradns.deadwood:

# chkconfig: - 55 45  
# description: MaraDNS — это безопасный сервер доменных имен (DNS)  
# probe: true

Установите его для запуска при загрузке:

chkconfig maradns.deadwood on

Настройка MaraDNS как авторитетного сервера имен

Авторитетные DNS-серверы “знают” соответствие URL к IP для любого данного домена. Они являются источником информации, которую рекурсивные DNS-серверы отправляют веб-клиентам, таким как браузеры (Chrome, Firefox). Вы можете настроить MaraDNS как авторитетный сервер имен следующим образом:

Отредактируйте файл конфигурации MaraDNS, т.е. /etc/mararc:

ipv4_bind_addresses = "127.0.0.1"
chroot_dir = "/etc/maradns"  
csv2 = {}
csv2["example.net."] = "db.example.net"
    

Первая строка указывает MaraDNS слушать на IP-адресе 127.0.0.1. Вы можете добавить больше IP-адресов, разделяя их запятыми. Например: 127.0.0.1, x.x.x.x

Вторая строка chroot_dir указывает каталог, где будут храниться все файлы зон.

Третья строка инициализирует хеш csv2 с помощью команды csv2 = {}.

Четвертая строка указывает файл зоны с именем db.example.net для доменного имени example.net.

Вот файл зоны с именем db.example.net для доменного имени example.net, который говорит сам за себя:

example.net.      +14400    soa    ns1.example.net. [email protected]. 2012010117 14400 3600 604800 14400 ~ 
example.net.      +14400    ns     ns1.example.net. ~ 
example.net.      +14400    ns     ns2.example.net. ~ 
ns1.example.net.  +14400    a      127.0.0.1 ~ 
ns2.example.net.  +14400    a      127.0.0.1 ~ 
example.net.      +14400    a      127.0.0.1 ~ 
www.example.net.  +14400    a      127.0.0.1 ~ 
example.net.      +14400    mx     10 mail.example.net. ~
mail.example.net. +14400    a      127.0.0.1 ~

Вы начинаете с строки Start Of Authority (SOA). Затем вы указываете авторитетные серверы имен и другие записи. Запись состоит из доменного имени, TTL (время жизни), типа записи и значения записи. Две вещи, которые следует отметить: все доменные имена заканчиваются точкой, т.е. они должны быть полностью квалифицированными доменными именами, и все записи заканчиваются символом тильда (~). Чтобы узнать больше, ознакомьтесь с документацией по формату файлов зон.

Чтобы упростить, давайте просто укажем example.net на 127.0.0.1. Вот как это сделать:

example.net.    127.0.0.1 ~

Перезапустите сервис:

sudo /etc/init.d/maradns restart

Настройка MaraDNS как рекурсивного сервера имен

Когда ваш веб-браузер отправляет DNS-запрос — предполагая, что браузер еще не имеет соответствия в своем кэше — он отправляется на рекурсивный DNS-сервер. Это также называется пересылкой DNS. По умолчанию он слушает на порту 127.0.0.2, и вы можете добавить больше IP-адресов, разделяя их запятыми. Например: 127.0.0.2, x.x.x.x. Вы можете настроить MaraDNS как рекурсивный сервер имен, добавив следующие строки в файл /etc/dwood3rc:

upstream_servers = {}  
upstream_servers["."] = "8.8.8.8, 8.8.4.4" # Пересылка запросов на DNS-серверы Google

Перезапустите сервис:

sudo /etc/init.d/maradns.deadwood restart

Вы завершили настройку сервера MaraDNS! :)

Совет: Если вы хотите, чтобы ваш сервер MaraDNS отвечал на внешние DNS-запросы, вам нужно:

Добавить публичный IP-адрес вашей машины в оба файла конфигурации (/etc/mararc и /etc/dwood3rc) и изменить их следующим образом:

/etc/mararc:

ipv4_bind_addresses = "127.0.0.1, x.x.x.x" # Замените x.x.x.x на публичный адрес вашей машины.

/etc/dwood3rc:

bind_address="127.0.0.2, x.x.x.x" # Замените x.x.x.x на публичный адрес вашей машины.

recursive_acl = “0.0.0.0/0” # Чтобы разрешить подключения откуда угодно.

Вы можете скачать эти образцы файлов отсюда. Не забудьте перезапустить сервисы еще раз.

Вот и все!

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.