Простая установка и настройка dns (bind9)

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

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

Содержание
  1. Подготовка
  2. прописываем IP и имя нашего зарегистрированного домена в файлике /etc/hosts
  3. Удачи!

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


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

  • имя компьютера: ub
  • имя домена: domain.tld

Подготовка

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

bash
 ifconfig -a  

# мой ip 192.168.1.1

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

bash
 sudo nano /etc/hosts     

192.168.1.1 ub.domain.tld ub\

Настроим сетевой интерфейс

nano /etc/network/interfaces

auto eth0
iface eth0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 192.168.1.1

Установка bind9

bash
 sudo apt-get install bind9

# каталог установки /etc/bind.

Следующим шагом, генерируем ключ для обновления DNS записей\

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

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

bash
cat Kdhcp_updater.*.private|grep Key

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

Key: lqrfes/uv041jCmoqDu3BA==

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

bash
sudo nano /etc/bind/named.conf.options

Добавим следующий код:

forwarders{

85.112.23.15
85.112.23.18 #DNS нашего провайдера
8.8.8.8;
8.8.4.4;
};

listen-on {
                  127.0.0.1;
                  192.168.1.1;
};

forwaders – вышестоящий dns сервер (сервер гугла), используется если url запроса не найден в нашей базе.

listen-on – адреса через которые будет обслуживаться наш DNS сервер.

Сохраняем (Ctrl+O) и закрываем (Ctrl+X) файл.

bash
 nano /etc/resolvconf/resolv.conf.d
domain domain.tld
search domain.tld
nameserver 127.0.0.1     #(192.168.1.1)

# Переходим в каталог

bash
 cd /etc/bind

Прописываем зоны для нашей сети

sudo nano named.conf.local

key DHCP_UPDATER {
algorithm HMAC-MD5.SIG-ALG.REG.INT;
secret «lqrfes/uv041jCmoqDu3BA==»;
};
zone «domain.tld» { //прямая зона
type master;
file «/var/lib/bind/db.domain.tld»;
allow-update { key DHCP_UPDATER; };
};
 zone «1.168.192.in-addr.arpa» { // обратная зона PTR
type master;
file «/var/lib/bind/db.rev_domain.tld»;
allow-update { key DHCP_UPDATER; };
};
bash
cd /var/lib/bind/
sudo cp /etc/bind/db.local /var/lib/bind/db.domain.tld

# Настраиваем прямую зону

bash
sudo nano db.domain.tld
;
; BIND data file for domain.tld ;
$TTL 604800
@ IN SOA domain.tld. root.domain.tld.(
                                                      2 ; Serial
                                                     604800 ; Refresh
                                                     86400 ;Retry
                                                     2419200 ; Expire
                                                     604800 ) ; Negative Cache TTL

IN A 192.168.1.1
;
@ IN NS ub.domain.tld.
@ IN A 192.168.1.1
ub IN A 192.168.1.1

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

bash
 sudo cp/etc/bind/db.127 /var/lib/bind/db.rev_domain.tld
bash
 sudo nano db.rev_domain.tld
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ub.domain.tld. domain.tld. (
                                                              1 ; Serial
                                                   64800 ; Refresh
                                                   86400 ; Retry
                                               2419200 ; Expire
                                              604800 ) ; Negative Cache TTL
;
@ IN  NS    ub.
 1  IN  PTR ub.domain.tld.

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

bash
  named-checkzone domain.tld /var/lib/bind/db.domain.tld
zone ub.ru/IN: loaded serial 2
OK
bash
 named-checkzone 1.168.192.in-addr.arpa /var/lib/bind/db.rev_domain.tld
zone 1.168.192.in-addr.arpa/IN: loaded serial 2
OK

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

bash
sudo rndc reload

sudo service bind9 restart 

# Теперь проверим наш DNS сервер

bash
 nslookup domain.tld 

Server 192.168.1.1

Server 192.168.1.1#53

Name: domain.tld

Address: 192.168.1.1

bash
 nslookup 192.168.1.2

Server 192.168.1.1

Server 192.168.1.1#53

1.1.168.192.in-addr.arpa name=ub.domain.tld.

В последующем как настроим DHCP сервер, нужно, чтобы он автоматически создавал А запись, для этого нужно дать права на запись в /etc/default/bind9

bash
nano /etc/default/bind9

Пропишем

# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes

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

Кстати можно прописать свой глобальный серевер DNS, только нужно прописать вместо локального IP, Ваш глобальный («белый») IP и второе нужен другой NS сервер хотя бы один иначе DNS не заработает.

Теперь можем настроить DHCP.

Удачи!

Статья помогла?

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

Комментарии

Комментариев пока нет.

Код можно выделять `обратными кавычками`. Комментарии проверяются перед публикацией.