Задача:
запустить DNS-сервер (bind9) на Ubuntu 12.04 LTS для
использования в локальной сети
использования в локальной сети
Источники:
Выполнение:
I.
Сначала поставим и настроим самый простой DNS-сервер.
1. Устанавливаем bind9:
sudo apt-get install bind9
2.
Предположим, что наша зона DNS будет
называться jc.com , наш DNS-сервер имеет IP-адрес 192.168.5.1
называться jc.com , наш DNS-сервер имеет IP-адрес 192.168.5.1
Редактируем
файл /etc/bind/named.conf.local :
sudo gedit /etc/bind/named.conf.local
Пишем:
zone "jс.com" {
type master;
file "/etc/bind/jс.com";};
zone "5.168.192.in-addr.arpa." {
type master;
file "/etc/bind/192.168.5.rev";};
Это
две записи зоны (zone) для зоны прямого просмотра (jс.com) и обратного (5.168.192.in-addr.arpa.). Первая зона служит для
разрешения IP-адреса по имени,
а вторая - наоборот. type master означает, что наш DNS сервер будет первичным для зоны jc.com. Запись file "/etc/bind/jс.com" указывает на расположение файла зоны.
а вторая - наоборот. type master означает, что наш DNS сервер будет первичным для зоны jc.com. Запись file "/etc/bind/jс.com" указывает на расположение файла зоны.
3.
Редактируем файл зоны прямого просмотра /etc/bind/jс.com:
sudo gedit /etc/bind/jс.com
Пишем:
$TTL 3h
@ IN SOA ubuntu.jc.com. root.jc.com
201207291 1d 12h 1w 3h
IN NS ubuntu.jc.com.
ubuntu IN A 192.168.5.1
www IN A 192.168.5.10
Во
второй строке ubuntu.jc.com - имя корневого мастер-сервера
зоны jc.com ,
root.jc.com
- e-mail администратора зоны jc.com (e-mail пишется без @)
201207291
- серийный номер файла зоны
1d
- период обновления
12h
- повтор каждые 12 ч.
1w
- период, в течение которого хранится информация
3h
- время жизни (TTL) записи
IN NS
ubuntu.jc.com. - задаем имя DNS-сервера, отвечающего за зону
jc.com
ubuntu IN A
192.168.5.1 - задаем IP-адрес DNS-сервера,
отвечающего за зону jc.com (это и есть наш сервер)
www IN A 192.168.5.10 - задаем IP-адрес
хоста www.jc.com , который, к примеру, находится в локальной сети, и на нем
запущен Apache.
4. Редактируем файл зоны обратного просмотра /etc/bind/192.168.5.rev:
sudo gedit /etc/bind/192.168.5.rev
Пишем:
$TTL 3h
@ IN SOA ubuntu.jc.com. root.jc.com 201207291 1d 12h 1w 3h
@ IN NS ubuntu.jc.com.
1 PTR ubuntu.jc.com.
10 PTR www.jc.com.
Запись
1 PTR ubuntu.jc.com. означает,
что хост с именем ubuntu.jc.com имеет
IP-адрес 192.168.5.1 , а www.jc.com – 192.168.5.10
IP-адрес 192.168.5.1 , а www.jc.com – 192.168.5.10
5. Перезапускаем bind9 :
sudo service bind9 restart
5.1 Скорее всего в /etc/resolv.conf сейчас прописан IP-адрес
DNS-сервера вашего провайдера. Для того, чтобы проверить работу нашего
DNS-сервера, закомментируем в данном файле все строки и добавим nameserver
127.0.0.1
6. Проверяем работу bind9, а именно зону прямого просмотра :
nslookup ubuntu.jc.com
Если все работает, результат должен быть таким:
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: ubuntu.jc.com
Address: 192.168.5.1
7.
Проверяем работу bind9, а именно зону обратного
просмотра :
nslookup 192.168.5.10
Если
все работает, результат должен быть таким:
Server: 127.0.0.1
Address: 127.0.0.1#53
10.5.168.192.in-addr.arpa name = www.jc.com
8. Если появляются ошибки, то смотрим /var/log/syslog:
cat /var/log/syslog | grep jc.com |
tail
II.
Теперь можно сделать дополнительные настройки DNS-серверу.
9.
Например, можно указать, на каких сетевых интерфейсах bind будет слушать свой
53 порт:
sudo gedit /etc/bind/named.conf.options
в
разделе options дописываем строку
listen-on { 192.168.5.1; 127.0.0.1;};
и перезапустим bind9:
sudo service bind9 restart
Таким
образом, bind будет принимать запросы от самого сервера и из локальной сети.
10. -
11. Настроим логирование. Пусть логи будут лежать в
/var/log/named/
Создаем
этот каталог:
sudo mkdir /var/log/named/
sudo chown bind:bind /var/log/named/
Теперь
правим /etc/bind/named.conf.options , а именно дописываем в конец файла
следующий текст:
logging {
channel "xfer" {
file
"/var/log/named/xfer.log" versions 3 size 10m;
print-time yes;
print-severity yes;
severity info;
};
channel "lame" {
file
"/var/log/named/lamers.log" versions 2 size 10m;
print-time yes;
print-severity yes;
severity
info;
};
channel "config" {
file
"/var/log/named/conf.log" versions 3 size 10m;
print-time yes;
print-severity yes;
severity info;
};
channel "security" {
file
"/var/log/named/security.log" versions 3 size 10m;
print-time yes;
print-severity
yes;
severity info;
};
channel "queries" {
file
"/var/log/named/queries.log" versions 3 size 10m;
print-time yes;
print-severity yes;
severity
info;
};
//События связанные с получением зон
category "xfer-in" {
"xfer"; };
//События связанные с передачей зон
category "xfer-out" {
"xfer"; };
//События связанные с изменениями в зонах
category "notify" {
"xfer"; };
//События связанные с некорректным
делегированием
category "lame-servers" {
"lame"; };
//События связанные с обработкой файла
конфигурации
category "config" {
"config"; };
//События связанные с
запрещением/разрешением запросов
category "security" {
"security"; };
//Запросы к серверу
category "queries" {
"queries"; };
//Если для события канал не определен
category "default" {
"default_syslog"; "default_debug";};
};
создаем
означенные выше файлы логов и сразу меняем их владельца на bind:
cd /var/log/named
sudo touch xfer.log lamers.log conf.log
security.log
sudo chown bind:bind xfer.log lamers.log
conf.log security.log
Теперь перезапускаем bind:
sudo service bind restart
12. Сделаем еще несколько настроек. Снова правим /etc/bind/named.conf.options , а именно раздел options. В него добавляем:
version "DNS Server";
//если не планируется использование IPv6,
погда строку listen-on-v6 { any; }; заменяем на
listen-on-v6 { none; };
//максимальное число параллельно
обслуживаемых клиентов
recursive-clients 100
//указание DNS-серверов, к которым будет
обращаться ваш DNS за разрешением имен
forwarders {первый dns-сервер провайдера;
второй dns-сервер провайдера;};
forward only;
Конец.
Если есть предложения по улучшению инструкции, пишите.
Не пашет. Пишет что ни один из созданных файлов для прямои и обратной зоны не содержит NS запись. И отказывается их загружать типа из-за ошибки
ОтветитьУдалитьПонял в чем дело. У вас написано:
Удалить$TTL 3h
@ IN SOA ubuntu.jc.com. root.jc.com. 201207291 1d 12h 1w 3h
IN NS ubuntu.jc.com.
1 PTR ubuntu.jc.com.
10 PTR www.jc.com.
А надо писать так:
$TTL 3h
@ IN SOA ubuntu.jc.com. root.jc.com. 201207291 1d 12h 1w 3h
@ IN NS ubuntu.jc.com. (в этой строчке не было сабаки)
1 PTR ubuntu.jc.com.
10 PTR www.jc.com.
Большое спасибо Вам. Исправил.
УдалитьДобрый день.Тоже не сразу заработало.Вот на эту запись
ОтветитьУдалить@ IN SOA ubuntu.jc.com. root.jc.com. 201207291 1d 12h 1w 3h
Ругалось так
named[3712]: zone 100.168.192.in-addr.arpa/IN: loading from master file /etc/bind/192.168.100.rev failed: no owner
Убрал точку после root.jc.com и дело пошло!
В целом материал отличный!Благодарю за статью!Хороший ресурс в принципе!
Исправил.
УдалитьНе сразу заработало. PTR настроил по этой статье: http://joyit.ru/administrirovanie/11-ptr-dns-bind-ubuntu-10-10.html
ОтветитьУдалитьзона обратного просмотра непашет
ОтветитьУдалить