DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства).
Не буду расписывать назначение DNS, его преимущества и т.п. Задача стоит простая — развернуть кэширующий сервер DNS на локальной сети предприятия (за NAT провайдера) с возможностью выхода в интернет.
Здесь мы все приверженцы Ubuntu и разговор пойдет о нем.
Итак:
- Внутренняя сетка — 192.168.1.0/24
- Сервер DNS — 192.168.1.100
Для начала, как всегда перед установкой чего нибудь из репозитория:
sudo apt-get update
Установим DNS сервер Bind9:
sudo apt-get install bind9
После установки необходимо отредактировать его конфигурационный файл:
sudo nano /etc/bind/named.conf.options
Находим секцию, она находится в самом начале конфигурационного файла, кроме нее там больше ничего нет…
options { directory "/var/cache/bind"; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
Секция forwarders, отвечает за то, куда будет передаваться DNS запрос на разрешение имени, в случае если его нет в собственной базе, то-есть на внешние DNS сервера.
Из опыта работа этих серверов у провайдеров заказчиков оставляет желать лучшего и я пока прописываю адреса гугловского сервера и SkyDNS. Список открытых DNS серверов
Приводим секцию к следующему виду:
forwarders { 8.8.8.8; 193.58.251.251; //Российская служба DNS -SkyDNS };
Сохраняем изменения и выходим
Перезапускаем сервер
sudo service bind9 restart
и проверяем в командной строке
nslookup mail.ru
Должно выдать что-то типа:
Non-authoritative answer: Name: mail.ru Addresses: 94.100.191.202
Это говорит о том, что сервер не является главным в обслуживании зоны mail.ru, но запросы добавил в кеш.
Теперь создаем DNS зону для внутренней сети предприятия. Зону я обычно называю name.loc, где name — название организации.
Редактируем конфигурационный файл локальных зон — named.conf.local
sudo nano /etc/bind/named.conf.local
и добавим в него следующее:
zone "name.loc" { type master; file "/etc/bind/name.loc.local"; };
Сохраняем изменения и выходим. Создаем файл настройки настройки зоны
sudo nano /etc/bind/name.loc.local
Очень внимательно к синтаксису конфигурационного файла, даже точки имеют значение!
$TTL 604800 @ IN SOA server.name.loc. root.name.loc ( 20131218 4h ; время обновления -4 часа 1h ; повтор каждый час 1w ; как долго хранить информацию -1 неделю 1d ) ; TTL (время жизни ) записи - 1 день name.loc. IN NS ns.name.loc. @ IN MX 10 mail.name.loc. ns IN A 192.168.1.100 printer IN A 192.168.1.150 ; Можно создать ДНС запись сетевого принтера который находится по адресу 192.168.1.150 comp1 IN A 192.168.1.10 vm01 IN A 192.168.1.242 mail IN A 192.168.1.164
При добавлении нового сетевого имени необходимо зарезервировать IP адрес на DHCP сервере, если он запущен.
Теперь необходимо отредактировать файл resolv.conf (в последних версиях Ubuntu этого делать не надо. Бесполезно, так как этот файл стал генериться автоматически)
sudo nano /etc/resolv.conf
и вписать туда:
nameserver 127.0.0.1 (или 192.168.1.100) domain name.loc
Во всех клиентских машинах в качестве адреса DNS сервера указать новый, в нашем случае 192.168.1.100
Перегружаем сервис networking
sudo service networking restart sudo service bind9 restart
и проверяем работоспособность:
ping mail.name.loc nslookup mail.ru
Все должно работать. При желании аналогично можно настроить и обратную зону.