В собственной локальной сети чаще всего возникает необходимость в своем DNS-сервере, который будет отвечать на запросы не только про хосты из внешнего мира, но и обслуживать внутреннюю сеть. Рассмотрим, как поднять такой сервер на базе Bind. Я буду описывать процесс во FreeBSD, но аналогичная конфигурация присутствует и в других операционных системах.
1. Устанавливаем необходимые пакеты
cd /usr/ports/dns/bind911
make install clean
Для корректной работы данной версии Bind нужно пересобрать ядро с опцией
options TCP_RFC7413
И добавить в /etc/sysctl.conf
net.inet.tcp.fastopen.enabled=1
Иначе будем получать ошибки со ниже указанным текстом, а сам DNS-сервер будет работать.
Jun 19 17:23:41 test_free named[476]: setsockopt(21, TCP_FASTOPEN) failed with Operation not permitted
Jun 19 17:23:41 test_free named[476]: socket.c:5694: unexpected error:
В предыдущих версиях такого не наблюдается, но все же я рекомендую включить данную опцию в ядра, так она может дать прирост производительности. Более подробно о ней можно почитать тут: https://en.wikipedia.org/wiki/TCP_Fast_Open
Как пересобрать ядро, описано в статье "Обновление ядра FreeBSD"
2. Настройка и запуск
Конфигурационного файла «из коробки» достаточно для запуска и работы, но отвечать на запросы сервер будет к 127.0.0.1. Для проверки можем выполнить
/usr/local/etc/rc.d/named onestart
Starting named.
# nslookup google.ru 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: google.ru
Address: 172.217.18.67
Name: google.ru
Address: 2a00:1450:400d:802::2003
Для полноценной работы его нужно настроить.
Исходные данные:
ИП-адрес нашего сервера 10.10.0.1
Будем обслуживать запросы из подсетей 10.10.0.0/24 и 10.10.1.0/24
Прямая зона example.org
Обратные зоны будут для наших подсетей
Редактируем конфигурационный файл /usr/local/etc/namedb/named.conf
В самое начало файла добавляем строку
acl ACCESS { 127.0.0.1; 10.10.0.0/24; 10.10.1.0/24};
Указываем перечень ИП-адресов и подсетей, на запросы с которых будет отвечать, остальные будут получать отказ. Я обычно предпочитаю произвести подобное ограничение при помощи фаервола
Редактируем секцию options
listen-on { 127.0.0.1; 10.10.0.1; }; //# указываем IP-адреса интерфейсов которые будет слушать сервер
allow-recursion { ACCESS; };
forwarders {8.8.8.8;} //# Если у Вашего провайдера есть свои ДНС-сервера, здесь можно указать их IP-адреса, тогда наш ДНС-сервер будет сразу обращаться к ним. В противном случае, закомментируйте данную строку.
Добавляем секции для наших зон
zone "example.org" {
type master;
file "/usr/local/etc/namedb/master/example.org";
};
zone "0.10.10.in-addr.arpa" {
type master;
file "/usr/local/etc/namedb/master/0.10.10.in-addr.arpa";
};
zone "1.10.10.in-addr.arpa" {
type master;
file "/usr/local/etc/namedb/master/1.10.10.in-addr.arpa";
};
Создаем файл зоны /usr/local/etc/namedb/master/example.org
$TTL 3600 ;# Время жизни (сколько будет находиться в кэше) в секундах
@ IN SOA ns.example.org. test.test.com ;( # Имя DNS-сервера и e-mail адрес администратора (вместо @ ставим «.»)
2017061901; Serial
3600; Refresh
900; Retry
360000; Expire
3600; Minimum
)
@ IN NS ns.example.org.
@ IN A 10.10.0.1
localhost IN A 127.0.0.1
example.org. IN A 10.10.0.1
ns IN A 10.10.0.1
home IN A 10.10.0.1 ; Мой домен 3-го уровня home.example.org
svn IN A 10.10.1.2 ; Мой домен 3-го уровня svn.example.org
Создаем файлы с описанием обратных зон /usr/local/etc/namedb/master/0.10.10.in-addr.arpa
$TTL 3600
@ IN SOA ns.example.org. test.test.com. (
2017061901 ;
3600 ;
600 ;
2419200 ;
86400 )
@ IN NS ns.example.org.
1 IN PTR home.example.org
/usr/local/etc/namedb/master/0.10.10.in-addr.arpa
$TTL 3600
@ IN SOA ns.example.org. test.test.com. (
2017061901 ;
3600 ;
600 ;
2419200 ;
86400 )
@ IN NS ns.example.org.
2 IN PTR svn.example.org
Добавляем в автозагрузку
echo 'named_enable="YES"' >> /etc/rc.conf
И запускаем
/usr/local/etc/rc.d/named restart
Если нигде не допустили ошибок, у нас заработал кэшируюший DNS-сервер с поддержкой внутренних зон.
Можем проверить работоспособность при помощи команды nslookup или dig
nslookup 10.10.0.1 127.0.0.1
1.0.10.10.in-addr.arpa name = home.example.org.
nslookup home.example.org 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: home.example.org
Address: 10.10.0.1
Использованные материалы:
https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/network-dns.html
https://www.lissyara.su/articles/freebsd/programms/named_9.7.0/
https://rtfm.co.ua/freebsd-ustanovka-i-nastrojka-servera-bind/
http://mediaunix.com/bind9-na-freebsd-v-kachestve-keshiruyushhego-dns-servera/
https://www.opennet.ru/base/net/dns_inst.txt.html
В следующей статье мне понравилось описание директив конфигурации:
Комментариев нет:
Отправить комментарий