Установка Bind9 из исходников а так же на одной машине.

Модератор: padonki

Ответить
Аватара пользователя
The ustas
Сообщения: 58
Зарегистрирован: 15 ноя 2006, 19:41
Откуда: msk
Контактная информация:

Установка Bind9 из исходников а так же на одной машине.

Сообщение The ustas »

Настраиваем master сервер.

Качаем последний релиз Bind9 с сайта http://www.isc.org/software/bind

1. Распоковываем.

Код: Выделить всё

tar -xzf bind-9.7.1b1.tar.gz 
2. Переходим в папку с bind/

Код: Выделить всё

 cd bind-9.7.1b1
3. Устанавливаем.

Код: Выделить всё

./configure --prefix=/opt/namedb --sysconfdir=/etc/namedb --enable-threads --with-libtool --disable-ipv6 --with-openssl --disable-openssl-version-check --localstatedir=/var 
4. Если всё прошло успешно делаем.

Код: Выделить всё

 make 
потом 
make install 
5. Настраиваем.
Переходим в папку /etc/namedb

Код: Выделить всё

 cd /etc/namedb
6. Если фала конфигурации named.conf нет, то создаём его.

Код: Выделить всё

 touch named.conf 
7. Выглядит он примерно так.

Код: Выделить всё

options {

        directory "/opt/namedb"; # Рабочая директория куда мы установили bind

      dnssec-enable yes;
      dnssec-validation yes;

      also-notify { 192.168.0.1; };
      allow-transfer { 192.168.0.2; }; # имеют права скачивать зону
      allow-recursion {192.168.0.2; 127.0.0.1;  192.168.0.1; }; 


        forwarders {
                10.2.2.3; # Если наш bind не сможет обработать запрос то он передаёт запрос другому серверу (обычно указывается DNS провайдера).
                10.2.2.4;
};

        listen-on {
                192.168.0.1; # На каком адресе слушается bind
};

         auth-nxdomain no;    # conform to RFC1035
};

key "rndc-key" { # Создаётся ключ управления командой ./rndc-confgen в папке /opt/namedb/sbin
       algorithm hmac-md5;
       secret "Sm0IQcYBAx4eMLfsBko4Jg==";
};

controls { 
                inet 192.168.0.1 port 956 # Адрес и порт на котором будет осуществятся управление.
                allow { 192.168.0.2; 127.0.0.1;  192.168.0.1; } keys { "rndc-key"; }; # Разрешить управление с данных IP.
};

zone "domain.local" { # Название зоны. Находится обычно в /opt/namedb/zone
        type master; # Тип сервера мастер он же primary.
        file "zone/domain.local"; # Файл самой зоны.
        allow-transfer { 192.168.0.2; }; # Разрешить slave серверу забирать зону(ы).
        allow-recursion {192.168.0.2; 127.0.0.1;  192.168.0.1; }; # Не помню.
        notify yes; # Не помню.
};

zone "0.168.192.in-addr.arpa" { # Обратная зона.
        type master; # Тип сервера.
        file "zone/re_domain.local"; # Файл самой зоны.
        notify yes; # Не помню.
};

zone "XN--P1AI" { # Поддержка доменов .РФ
        type forward; # Тип передача.
        forward only; # Только передача.
        forwarders { 89.111.167.17; }; # Куда будут передавать запросы.
};
8. Переходим в папку /opt/namedb и создаём папку где будут хранятся зоны.

Код: Выделить всё

 mkdir zone 
9. Переходим в папку zone.
Создаём файл зоны.

Код: Выделить всё

 touch domain.local 
10. Файл domain.local выглядит так.

Код: Выделить всё

 
$TTL 3600
@                       SOA    ns1.domain.local.    postmaster.domain.local.    (
                                2010061715      ; Serial
                                10800           ; Refresh
                                3600            ; Retry
                                604800          ; Expire
                                86400    )      ; Minimum TTL
@       IN              NS ns1.domain.local.
@       IN              NS ns2.domain.local.

ns1     IN      A       192.168.0.1 # A запись первого DNS сервера (master)
ns2     IN      A       192.168.0.2 # A запись второго DNS сервера (slave)

2010061715 ; Serial # Серийный номер. Каждый раз при изменении каких-либо данных его нужно обязательно менять. Когда меняется серийный номер, зона обновляется на всех серверах. Используйте следующий формат: ГГГГММДДнн (год, месяц, день, нн — порядковый номер изменения за день). Если вы уже второй раз за день вносите измения в файл зоны, укажите "нн" равным 01, если третий — 02, и т.д.

10800 ; Refresh # Интервал, через который slave сервера должны обращаться к primary серверу и проверять обновление зоны.

3600 ; Retry # Если slave серверу не удалось обратится к primary серверу, через это время он должен повторить свой запрос.

604800 ; Expire # Если в течении этого времени slave сервер так и не смог обновить зону с primary сервера, то slave должен прекратить обслуживать эту зону.

86400 ; Minimum TTL # Время кеширования отрицательных ответов (ответ "домен невозможно разрешить в IP адрес")

11. Обратная зона.
В папке zone создаём файл re_domain.local
Выглядит так.

Код: Выделить всё

@ 10800 IN SOA ns1.domain.local. postmaster.domain.local. 2010061715 (
                                10800           ; Refresh
                                3600            ; Retry
                                604800          ; Expire
                                86400    )      ; Minimum TTL

@                   NS ns1.domain.local.

1       IN      PTR     ns1.domain.local. # PTR запись указывается IP адрес с зади.
2       IN      PTR     ns2.domain.local.
Настройка master сервера закончена.


Настраиваем slave сервер.

12. На втором физическом сервере в папке /etc/namedb создаём файл named.conf

Код: Выделить всё

 touch name.conf 
13. Содержит он следующее.

Код: Выделить всё

 options {

        directory "/opt/namedb";

      dnssec-enable yes;
      dnssec-validation yes;

        forwarders {
                10.2.2.3;
                10.2.2.4;
               };

        listen-on {
                192.168.0.2;
};

         auth-nxdomain no;    # conform to RFC1035
};

key "rndc-key" {
       algorithm hmac-md5;
       secret "Sm0IQcYBAx4eMLfsBko4Jg==";
};

controls {
                inet 192.168.0.2 port 953
                allow { 127.0.0.1; 192.168.0.1; } keys { "rndc-key"; };
};

zone "domain.local" {
        type slave;
        file "zone/slave.domain.local";
        masters { 192.168.0.1; };
};

zone "XN--P1AI" {
        type forward;
        forward only;
        forwarders { 89.111.167.17; };
};
14. В папке /opt/namedb/ создаём папку zone/

Код: Выделить всё

 mkdir zone
Настройка слейв сервера закончена.

Запускаем сначала master сервер

Код: Выделить всё

 /opt/namedb/sbin/named 
Через некоторе время slave сервер.

Код: Выделить всё

  /opt/namedb/sbin/named 
Если всё прошло успешно то на slave сервере в папке zone появится файл с зоной master сервера тоесть файл slave.domain.local
Последний раз редактировалось The ustas 25 июн 2010, 11:28, всего редактировалось 9 раз.
Изображение
Изображение
Изображение
Изображение
Изображение
Аватара пользователя
The ustas
Сообщения: 58
Зарегистрирован: 15 ноя 2006, 19:41
Откуда: msk
Контактная информация:

Сообщение The ustas »

Если нужно поднять два сервера master и slave на одной машине с одним IP адресом и с одним интерефейсом.

Делаем так как указано выше но меняем след параметры.

1. Сначала создаём виртуальный интерфейс на Loopback

Код: Выделить всё

 ifconfig lo:0 192.168.0.2 netmask 255.255.255.0 up 
2. Перекидываем содержимое папки namedb расположеный в /opt/namedb в папку например /opt/namedb2
При этом удалив всё из папки zone

3. Так же перекидываем файлы конфигурации расположены в папке /etc/namedb например в /etc/namedb2
При этом файл конфигурации named.conf необходимо переправить так как показано выше в п. 12

4. Меняем на master сервере IP в графе

Код: Выделить всё

 
allow-transfer { 192.168.0.2; }; # на адрес мастер сервера, тоесть на 192.168.0.1 
5. Запускаем первый сервер.

Код: Выделить всё

 /opt/namedb/namedb 
6. Запускаем второй сервер

Код: Выделить всё

 /opt/namedb2/namedb -c /etc/namedb2/name.conf
Изображение
Изображение
Изображение
Изображение
Изображение
Аватара пользователя
The ustas
Сообщения: 58
Зарегистрирован: 15 ноя 2006, 19:41
Откуда: msk
Контактная информация:

Сообщение The ustas »

The ustas писал(a): Если нужно поднять два сервера master и slave на одной машине с одним IP адресом и с одним интерефейсом.

Делаем так как указано выше но меняем след параметры.

1. Сначала создаём виртуальный интерфейс на Loopback

Код: Выделить всё

 ifconfig lo:0 192.168.0.2 netmask 255.255.255.0 up 
2. Перекидываем содержимое папки namedb расположеный в /opt/namedb в папку например /opt/namedb2
При этом удалив всё из папки zone

3. Так же перекидываем файлы конфигурации расположены в папке /etc/namedb например в /etc/namedb2
При этом файл конфигурации named.conf необходимо переправить так как показано выше в п. 12

4. Меняем на master сервере IP в графе

Код: Выделить всё

 
allow-transfer { 192.168.0.2; }; # на адрес мастер сервера, тоесть на 192.168.0.1 
5. Запускаем первый сервер.

Код: Выделить всё

 /opt/namedb/namedb 
6. Запускаем второй сервер

Код: Выделить всё

 /opt/namedb2/namedb -c /etc/namedb2/name.conf
PS: Так же можно не менять IP адрес написанный в п.4 а сделать так.

Код: Выделить всё

        query-source address 192.168.0.2; # IP slave сервера.
        transfer-source 192.168.0.1; # IP master сервера.
На слейв сервере прописываем просто:

Код: Выделить всё

        transfer-source 192.168.0.1;
Изображение
Изображение
Изображение
Изображение
Изображение
Аватара пользователя
The ustas
Сообщения: 58
Зарегистрирован: 15 ноя 2006, 19:41
Откуда: msk
Контактная информация:

Сообщение The ustas »

Пишем скрипт для запуска, с функциями start|stop|status|restart

Код: Выделить всё

#!/bin/sh

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /opt/namedb/sbin/named ] || exit 0

[ -f /etc/namedb/named.conf ] || exit 0

RETVAL=0

# See how we were called.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting named: "
        daemon /opt/namedb/sbin/named -c /etc/namedb/named.conf
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/named
        echo
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down named: "
        killproc /opt/namedb/sbin/named
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named
        echo
        ;;
  status)
        /opt/namedb/sbin/rndc status
        exit $?
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  reload)
        /opt/namedb/sbin/rndc reload
        exit $?
        ;;
  probe)
        # named knows how to reload intelligently; we don't want linuxconf
        # to offer to restart every time
        /opt/namedb/sbin/rndc reload >/dev/null 2>&1 || echo start
        exit 0
        ;;

  *)
        echo "Usage: named {start|stop|status|restart}"
        exit 1
esac

exit $RETVAL
Изображение
Изображение
Изображение
Изображение
Изображение
Ответить