пятница, 17 мая 2013 г.

Кэширующий DNS-сервер BIND9

BIND (Berkeley Internet Name Domain, до этого: Berkeley Internet Name Daemon) — открытая и наиболее распространённая реализацияDNS-сервера, обеспечивающая выполнение преобразования DNS-имени в IP-адрес и наоборот. BIND поддерживается организациейInternet Systems Consortium. 10 из 13 корневых серверов DNS работают на BIND, оставшиеся 3 работают на NSD.

В основном этот сервер используют для трех целей:
  • первичного DNS-сервера;
  • вторичного DNS-сервера, имеющего независимое подключение к Интернет;
  • кэширующего DNS-сервера на шлюзе, других серверах и Linux-системах в локальной сети.
Тут я опишу настройку именно кэширующего сервера. Исправления и дополнения приветствуются.
Исходные данные:
VirtualBox: Ubuntu 12.04
Сеть: NAT + сетевой мост.
IP-адрес (eth0): 10.0.2.15.

Мне в виртуалке работать не удобно, потому что я привык к своему любимому терминалу (guake), поэтому буду использовать подключение по ssh.

Но подключиться по ssh я не могу, нужно выделить интерфейс eth1, с локальным ip-адресом, например:
# ifconfig eth1 192.168.1.200

Проверяем:
# ping ya.ru
Пингуется.

Пробуем подключиться по ssh:
$ ssh [email protected]
$ sudo -i

Вроде работает.

Все это дело только до следующей перезагрузки.
Нужно подправить важный файлик (дописать в него):
# vim /etc/network/interfaces
   # интерфейс
   auto eth1
   # статический
   iface eth1 inet static
   # ip-адрес
   address 192.168.1.200
   # маска
   netmask 255.255.255.0
   # начало сети
   network 192.168.1.0
   # конец сети
   broadcast 192.168.255.255
   # шлюз
   gateway 192.168.1.1


Перезагрузить демон сети:
# /etc/init.d/networking stop
# /etc/init.d/networking start


Перезагрузиться:
# reboot

Проверяем:
$ ssh [email protected]
Работает.

Получаем админку и устанавливаем BIND9:
$ sudo -i
# aptitude install bind9


Будем иметь дело с тремя файлами:
/etc/bind/named.conf - основной конфигурационный файл;
/etc/bind/db.localhost - файлы которые мы;
/etc/bind/0.0.127.in-addr.arpa - потом создадим.

Конфигурирование основного файла:
# vim /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
# хосты, которые могут обращаться к серверу
acl "trusted" {
   localhost;
};

options {
   # рабочий каталог
   directory "/etc/bind"
   # запрещен перенос файлов с любых хостов
   allow-transfer { none; };
   # максимальное количество tcp-клиентов
   tcp-clients 32;
   # скрываем версию сервера, пишем что-нибудь свое
   version "My DNS server, only for local network."
};

# преобразуем 127.0.0.1 --> localhost
zone "localhost" {
   type master;
   file "db.localhost";
   notify no;
};

# преобразуем localhost --> 127.0.0.1
zone "0.0.127.in-addr.arpa" {
   type master;
   file "0.0.127.in-addr.arpa";
   notify no;
};


Назначаем права и владельца файлу:
# chmod 600 /etc/bind/named.conf
# useradd named
# chown named.named /etc/bind/named.conf


Дальше создаем второй файл, который нам пригодится:
# vim /etc/bind/db.localhost
$TTL 86400
@ IN SOA localhost. root.localhost. (
         00
         10800
         3600
         604800
         86400 )
  IN NS  localhost.
         localhost IN A 127.0.0.1


Права:
# chmod 644 /etc/bind/db.localhost
# chown named.named /etc/bind/db.localhost


И третий файл, он аналогичен второму и отличается только одной строчкой, поэтому можно сделать так:
# cat /etc/bind/db.localhost > /etc/bind/0.0.127.in-addr.arpa
# echo 1 IN PTR localhost. >> /etc/bind/0.0.127.in-addr.arpa


# chmod 644 /etc/bind/0.0.127.in-addr.arpa
# chown named.named /etc/bind/0.0.127.in-addr.arpa


Теперь проверяем:
# /etc/init.d/bind9 restart
# nslookup -sil localhost
Server: 10.0.X.X
Address: 10.0.2.X#XX

Name: localhost
Address: 127.0.0.1

1 комментарий:

Антон Уваров комментирует...

Что то тут не чисто. Откуда ваш ДНС берёт изначальные данные?