Настройка DNS в FreeBSD

обновлено 4 мин

Статья написана в 2018 году. Команды и версии программ могли устареть — проверяйте по документации.

DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства), получения информации о маршрутизации почты, обслуживающих узлах для протоколов в домене (SRV-запись).

Установка и настройка кеширующего DNS

Смотрим какие есть пакеты

bash
pkg search bind9

Вывод:

bind9-devel-9.12 
bind910-9.10.6 
bind911-9.11.2 
bind99-9.9.11

устанавливаем

bash
pkg install bind911-9.11.2

Рабочий каталог /usr/local/etc/namedb. Приводим named к следующему виду. Оставляем все как есть, только добавляем два параметра и раскомментируем строку forwarders

bash
nano /usr/local/etc/namedb/named.conf
listen-on { 127.0.0.1; 192.168.9.1; };   где 192.168.9.1 адрес нашего локального шлюза

allow-recursion { 127.0.0.1; 192.168.9.0/24; };

forwarders {
192.168.1.1;  DNS адресa шлюза провайдера
};

Все остальное оставляем без изменений. Редактируем rc.conf и добавляем

bash
nano /etc/rc.conf

named_enable="YES"

Запускаем службу

bash
service named start

Этот способ подходит для организации своего интернет шлюза.

Второй способ похож на первый, только мы добавим свои Зоны. Этот способ подходит для организации локального или глобального DNS сервера

Исходные данные

  • Имя компьютера: ub
  • IP: 192.168.1.1 внешний (пример)
  • IP: 192.168.9.1 внутренний
  • Имя домена: mydom.loc

Подготовка

Проверяем какой IP адрес получил компьютер

bash
ifconfig -a 
мой ip 192.168.9.1 прописываем IP и имя нашего зарегистрированного домена в файлике /etc/hosts

sudo nano /etc/hosts
192.168.9.1 gate.mydom.loc gate

Далее настраиваем named.conf (Как и в первой части, только добавим ключи и 2 зоны: прямую и обратную)

Генерируем ключ для обновления DNS записей

dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER

выводим его на экран

bash
cat Kdhcp_updater.*.private|grep Key

на экране вы должны увидеть ключ, что то подобно этому:

Key: vDo6/PVJ7sRm9bOJsBk9Zg==

Открываем файл конфигурации и добавляем

nano /usr/local/etc/namedb/named.conf

key "mydomlockey" {
algorithm hmac-md5;
secret "vDo6/PVJ7sRm9bOJsBk9Zg==";
};
zone "mydom.loc" {
type master;
allow-update {
key "mydomlockey";
};
file "/usr/local/etc/namedb/master/mydom.loc";
};

zone "9.168.192.in-addr.arpa" {
type master;
allow-update {
key "mydomlockey";
};
file "/usr/local/etc/namedb/master/9.168.192.in-addr.arpa.db";

};

Создаем прямую зону

nano /usr/local/etc/namedb/master/mydom.loc

$TTL 604800 ; 1 week
@ IN SOA mydom.loc. root.mydom.loc. (
                        1 ; serial
                        604800 ; refresh (1 week)
                        86400 ; retry (1 day)
                        2419200 ; expire (4 weeks)
                        604800 ) ; minimum (1 week)

IN           A          192.168.9.1
;
@            IN            NS         gate.mydom.loc.
@            IN            A          192.168.9.1
gate         IN            A          192.168.9.1

Настроим обратную зону

! Обратная зона нужна только для локального dns сервера, если Вы создаете публичный DNS сервер, то обратная запись прописывает у Вашего провайдера интернета.

nano /usr/local/etc/namedb/master/9.168.192.in-addr.arpa.db

$TTL 604800 ; 1 week
@ IN SOA gate.mydom.loc. mydom.loc. (
                              1 ; serial
                              604800 ; refresh (1 week)
                              86400 ; retry (1 day)
                              2419200 ; expire (4 weeks)
                              604800 ) ; minimum (1 week)

;

@       IN        NS         gate.
1       IN        PTR        gate.mydom.loc.

Теперь проверим наши конфиги

named-checkzone mydom.loc /usr/local/etc/namedb/master/mydom.loc

zone ub.ru/IN: loaded serial 1
OK
named-checkzone 9.168.192.in-addr.arpa /usr/local/etc/namedb/master/9.168.192.in-addr.arpa.db

zone 1.168.192.in-addr.arpa/IN: loaded serial 1
OK

Проверим права на папке /usr/localetc/namedb/master. Принадлежать папка должна bind. Вот так

drwxr-xr-x  2 bind  bind     512  6 окт.  23:08 master

Если не стоят ставим (Иначе dhcp не сможет записать данные в прямую и обратную наши зоны клиентов)

bash
chown -R bind:bind /usr/local/etc/namedb/master

Применяем изменения

bash
rndc reload

Меняем в кон фале resolv.conf данные

nano /etc/resolv.conf

search mydom.loc
nameserver 192.168.9.1

Пропишем в rc.conf

bash
echo 'named_enable="YES"' >> /etc/rc.conf

Логирование

nano /etc/syslog.conf

!named
*.* /var/log/named.log

Создаем файл

bash
touch /var/log/named.log

Установим права

bash
chown bind:bind /var/log/named.log

Перезапустим

bash
service syslogd reload

Запустим службу

bash
service named start

Если служба не запустилась, смотрите логи!

Таким же способ мы можем создать публичный DNS server, только вместо локального IP прописывает адреса полученные у интернет провайдера.

nslookup mydom.loc

Server 192.168.91
Server 192.168.9.1#53

Name: mydom.loc
Address: 192.168.9.1
nslookup 192.168.9.1

Server 192.168.9.1
Server 192.168.9.1#53

1.9.168.192.in-addr.arpa name=gate.mydom.loc.
Статья помогла?

Нашли ошибку или устаревшую команду? Выделите текст и нажмите Ctrl+Enter.