Настройка Bind9 на Ubuntu

Добрый день, сегодня расскажу как настроить DNS на сервере Ubuntu 14.04 LTS. Для начало теория: DNS это служба сервера, которая преобразует доменное имя в IP-адрес. Например www.example.com будет преобразовано в 93.184.216.34. Записи в DNS имеют несколько типов (Основные: A-address record, AAAA-IPv6 address record, CNAME-canonical name record, MX-mail exchange, NS-name server, PTR-pointer, SOA-Start of Authority).

И так приступим к самой настройке DNS. Прежде всего, я полагаю что у Вас установлен сервер Ubuntu 14.04 LTS, выполнено его обновление. Для обновления, выполните в командной строке две команды:

apt-get update

и

sudo apt-get upgrade

После выполнения обновления выполним установку службы Bind9.

sudo apt-get install bind9

Bind9 установлен, но не настроен. Произведем его настройку. Остановим службу:

sudo service bind9 stop

Укажем адреса, на которых Bind9 будет слушать запросы и куда перенаправлять в случае если он не отвечает за эту зону. Для этого открываем файл /etc/bind/named.conf.options

sudo nano /etc/bind/named.conf.options

в графу forwarders указываем сервера для пересылки запросов, а в графу listen-on указываем на каких адресах он должен отвечать. Должно получится что-то вроде этого:

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;
        // };

        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };

forwarders {
        8.8.8.8;
		8.8.4.4;
     };

    listen-on {
      127.0.0.1;
      192.168.0.1;
    };

};

Обратите внимание на строку listen-on-v6 { any; }; если у Вас включен IPv6, то Bind9 будет слушать на всех адресах IPv6. Если необходимо этого избежать, то за комментируйте эту строку или укажите конкретный адрес. Не рекомендуется слушать на всех адресах, особенно которые на прямую смотрят в интернет, так как существует масса атак на DNS сервера.

Теперь настроим зоны, которыми будет управлять наш Bind9. Для этого открываем файл /etc/bind/named.conf.local

sudo nano /etc/bind/named.conf.local

Прописываем согласно примера:

zone "example.com" { //Домен которой будем управлять
        type master; //Тип. Bind9 главный он и будет управлять
        file "/etc/bind/db.example.com"; //Файл с содержанием домена
};
 
zone "0.168.192.in-addr.arpa" { //Обратная запись для домена
        type master; //Тип. Bind9 главный он и будет управлять
        file "/etc/bind/db.0.168.192"; //Файл с обратными записями домена
};

Теперь создадим файл зон:

sudo touch /etc/bind/db.example.com

и

sudo touch /etc/bind/db.0.168.192

В файл /etc/bind/db.example.com мы должны прописать зоны прямого просмотра и указать NS сервера, по сколько мы будем являться для данного домена NS сервером, то необходимо указать имя нашего хоста. У меня имя хоста сервера, заданное при установке, srv-bind9. Заполняем по примеру:

; BIND data file for local loopback interface
;
$TTL    604800
@       	IN      SOA     srv-bind9.example.com. root.srv-bind9.example.com. ( 
				//обратите внимание в конце стоит точка
							20150120        ; Serial
							 604800         ; Refresh
							  86400         ; Retry
							2419200         ; Expire
							 604800 )       ; Negative Cache TTL
;
@       	IN      NS      srv-bind9.example.com.
@       	IN      A       192.168.0.1 //указываем адрес нашего сервера
@       	IN      AAAA    ::1	    //указываем IPv6 адрес нашего сервера, если есть.
srv-bind9       IN      A       192.168.0.1 //указываем адрес нашего сервера

Прямую зону настроили, теперь настроим обратную. Открываем файл: /etc/bind/db.0.168.192 и настраиваем по примеру:

; BIND reverse data file for local loopback interface
;
$TTL    604800
@       IN      SOA     srv-bind9.example.com. root.srv-bind9.example.com. ( 
			//обратите внимание в конце стоит точка
                        20141126        ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      srv-bind9.             //обратите внимание в конце стоит точка
1       IN      PTR     srv-bind9.example.com. //В первой колонке указывается последняя цифра IP-адреса. 
					       //Обратите внимание в конце стоит точка

Осталось проверить правильность настроек выполнив команду:

named-checkconf

Если она ничего не сообщила, то всё сделано правильно. И можно запускать Bind9:

sudo service bind9 start

Вот мы и закончили установку и настройку Bind9