Цель работы:
Изучить принципы работы службы доменных имен DNS, освоить настройку DNS-сервера на базе BIND9 в ОС ALT Linux, а также получить практические навыки создания прямой и обратной зон в виртуальной среде Proxmox VE.
DNS (Domain Name System) — это система доменных имен, предназначенная для преобразования символьных имен узлов (например, server1.lab.local) в IP-адреса (192.168.100.10) и обратно.
DNS-сервер позволяет:
В данной работе будет настроен:
В рамках работы используется одна внутренняя сеть в PVE.
vmbr1192.168.100.0/24VM1 — DNS-сервер
192.168.100.10ns1.lab.localVM2 — клиент
192.168.100.20client1.lab.localПри необходимости можно добавить третью машину для дополнительной проверки, но для базовой лабораторной достаточно двух.
vmbr1Это создаст изолированную внутреннюю сеть.
Создайте две виртуальные машины:
Подключите сетевые адаптеры обеих ВМ к мосту vmbr1.
Установите на обе виртуальные машины ALT Linux.
После установки ALT Linux необходимо настроить статический IP-адрес.
Проверьте имя сетевого интерфейса:
ip a
Предположим, интерфейс называется eth0 (на вашей виртуальной машине интерфейс будет называться иначе).
Создайте или отредактируйте файл:
vim /etc/net/ifaces/`eth0`/ipv4address #укажите ваш интерфейс
Содержимое:
192.168.100.10/24
При необходимости задайте имя хоста:
hostnamectl set-hostname ns1.lab.local
Файл маршрута по умолчанию для этой лабораторной не обязателен, если интернет не нужен.
Если нужен доступ в интернет через внешний шлюз, укажите его отдельно.
На этапе первичной настройки можно временно указать внешний DNS:
vim /etc/net/ifaces/eth0/resolv.conf
nameserver 8.8.8.8
Примените настройки:
systemctl restart network
Проверьте:
ip a
ping -c 3 127.0.0.1
На клиентской машине аналогично задайте статический адрес.
vim /etc/net/ifaces/eth0/ipv4address
192.168.100.20/24
hostnamectl set-hostname client1.lab.local
На клиенте в качестве DNS укажем IP-адрес будущего DNS-сервера:
vim /etc/net/ifaces/eth0/resolv.conf
nameserver 192.168.100.10
Примените настройки:
systemctl restart network
Проверьте связь с DNS-сервером:
ping -c 3 192.168.100.10
На машине VM1 (DNS-сервер) установите BIND:
apt-get update
apt-get install bind bind-utils
В некоторых сборках ALT Linux названия пакетов могут незначительно отличаться. Если пакет
bind-utilsотсутствует, можно установить доступные утилиты через поиск:
apt-cache search bind
После установки включите и запустите службу:
systemctl enable --now bind
Проверьте статус:
systemctl status bind
Основной конфигурационный файл BIND обычно находится здесь:
/etc/bind/options.conf
или используются дополнительные файлы в каталоге:
/etc/bind/
Перед редактированием желательно сделать резервную копию:
cp -r /etc/bind /etc/bind.bak
Откройте файл конфигурации локальных зон. В ALT Linux он может быть организован через включаемые файлы. Удобно создать отдельный файл, например:
vim /etc/bind/local.conf
Добавьте в него описание двух зон:
zone "lab.local" {
type master;
file "/etc/bind/zones/db.lab.local";
};
zone "100.168.192.in-addr.arpa" {
type master;
file "/etc/bind/zones/db.192.168.100";
};
Теперь убедитесь, что этот файл подключается в общей конфигурации BIND.
Если нет, добавьте строку include в основной конфиг, например в /etc/bind/options.conf или другой главный файл конфигурации:
include "/etc/bind/local.conf";
Конкретный главный конфигурационный файл может зависеть от версии ALT Linux. Если нужно, можно проверить:
named-checkconf -p
Создайте каталог для зон:
mkdir -p /etc/bind/zones
Создайте файл:
vim /etc/bind/zones/db.lab.local
Содержимое:
$TTL 86400
@ IN SOA ns1.lab.local. admin.lab.local. (
2026041501 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
@ IN NS ns1.lab.local.
ns1 IN A 192.168.100.10
client1 IN A 192.168.100.20
www IN A 192.168.100.20
SOA — основная запись зоны;NS — запись сервера имен;A — соответствие имени IP-адресу.Создайте файл:
vim /etc/bind/zones/db.192.168.100
Содержимое:
$TTL 86400
@ IN SOA ns1.lab.local. admin.lab.local. (
2026041501 ; Serial
3600
1800
604800
86400 )
@ IN NS ns1.lab.local.
10 IN PTR ns1.lab.local.
20 IN PTR client1.lab.local.
PTR используется для обратного разрешения адреса в имя.Перед перезапуском службы необходимо проверить конфигурацию.
named-checkconf
Если ошибок нет, команда ничего не выводит.
named-checkzone lab.local /etc/bind/zones/db.lab.local
named-checkzone 100.168.192.in-addr.arpa /etc/bind/zones/db.192.168.100
Если всё правильно, вы увидите сообщение вида:
OK
После проверки перезапустите службу:
systemctl restart bind
Проверьте статус:
systemctl status bind
Если служба не запускается, посмотрите журнал:
journalctl -xeu bind
На DNS-сервере выполните:
dig @127.0.0.1 ns1.lab.local
Проверка клиента:
dig @127.0.0.1 client1.lab.local
Проверка обратной зоны:
dig @127.0.0.1 -x 192.168.100.20
Также можно использовать nslookup:
nslookup client1.lab.local 127.0.0.1
nslookup 192.168.100.20 127.0.0.1
На клиентской машине проверьте содержимое файла DNS:
cat /etc/net/ifaces/eth0/resolv.conf
Должно быть:
nameserver 192.168.100.10
Теперь проверьте разрешение имени:
nslookup ns1.lab.local
nslookup client1.lab.local
nslookup www.lab.local
Проверка обратного разрешения:
nslookup 192.168.100.10
nslookup 192.168.100.20
Если всё настроено правильно, клиент должен получать ответы от DNS-сервера.
После успешной проверки можно указать DNS-серверу использовать самого себя.
На VM1 отредактируйте:
vim /etc/net/ifaces/eth0/resolv.conf
Содержимое:
nameserver 127.0.0.1
Примените:
systemctl restart network
Проверьте:
nslookup client1.lab.local
В результате выполнения практической работы должен быть получен работающий DNS-сервер, который:
ns1.lab.local в 192.168.100.10;client1.lab.local в 192.168.100.20;www.lab.local в 192.168.100.20;192.168.100.10 → ns1.lab.local192.168.100.20 → client1.lab.localНеправильно указано имя зоны в конфигурации или в команде проверки.
Пример правильной обратной зоны:
100.168.192.in-addr.arpa
В DNS-записях полные доменные имена следует завершать точкой:
Правильно:
ns1.lab.local.
Неправильно:
ns1.lab.local
Без точки BIND может добавить имя зоны повторно.
После изменения файла зоны необходимо увеличивать номер Serial в записи SOA.
Например:
2026041501
При следующем изменении:
2026041502
В обратной зоне указывается только последний октет IP-адреса.
Правильно:
20 IN PTR client1.lab.local.
Нужно проверить файл:
/etc/net/ifaces/eth0/resolv.conf
A, NS, SOA и PTR?Serial в записи SOA?Serial?resolv.conf?