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Все должно работать. При желании аналогично можно настроить и обратную зону.