DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста(компьютера или устройства), получения информации о маршрутизации почты, обслуживающих узлах для протоколов в домене (SRV-запись).
Исходные данные
- имя компьютера: ub
- имя домена: domain.tld
Подготовка
# Проверяем какой IP адрес получил компьютер
ifconfig -a
# мой ip 192.168.1.1
# прописываем IP и имя нашего зарегистрированного домена в файлике /etc/hosts
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
sudo apt-get install bind9
# каталог установки /etc/bind.
Следующим шагом, генерируем ключ для обновления DNS записей
dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER
выводим его на экран
cat Kdhcp_updater.*.private|grep Key
на экране вы должны увидеть ключ, что то подобно этому:
Key: lqrfes/uv041jCmoqDu3BA==
Открываем файл конфигурации
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) файл.
nano /etc/resolvconf/resolv.conf.d
domain domain.tld
search domain.tld
nameserver 127.0.0.1 #(192.168.1.1)
# Переходим в каталог
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; };
};
cd /var/lib/bind/
sudo cp /etc/bind/db.local /var/lib/bind/db.domain.tld
# Настраиваем прямую зону
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 TTLIN A 192.168.1.1
;
@ IN NS ub.domain.tld.
@ IN A 192.168.1.1
ub IN A 192.168.1.1
# Настраиваем обратную зону
sudo cp/etc/bind/db.127 /var/lib/bind/db.rev_domain.tld
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.
#Теперь проверим наши конфиги
named-checkzone domain.tld /var/lib/bind/db.domain.tld
zone ub.ru/IN: loaded serial 2 OK
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
Применяем изменения
sudo rndc reload
sudo service bind9 restart
# Теперь проверим наш DNS сервер
nslookup domain.tld
Server 192.168.1.1
Server 192.168.1.1#53
Name: domain.tld
Address: 192.168.1.1
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
nano /etc/default/bind9
Пропишем
# Set RESOLVCONF=no to not run resolvconf RESOLVCONF=yes
Прописывать обратную зону на своем сервер можно, если настраиваешь локальный DNS сервер, для глобального необходимо прописывать у Вашего хостера.
Кстати можно прописать свой глобальный серевер DNS, только нужно прописать вместо локального IP, Ваш глобальный («белый») IP и второе нужен другой NS сервер хотя бы один иначе DNS не заработает.
Теперь можем настроить DHCP.
Удачи!