Персональные инструменты
Вы здесь: Главная / Статьи / Переводные маны по настройке Самбы в AD / BIND как DNS компонент сборки Samba 4

BIND как DNS компонент сборки Samba 4

перевод оригинальной статьи

(Оригинал)

Содержание

 

1 Введение

Эта инструкция описывает как скомпилировать и настроить базовую установку Bind, которая сможет быть использована как DNS компонент Самба DC.

Bind как DNS компонент рекомендуется если Вы планируете сложнейшую установку DNS чем возможно с встроенным DNS Самба 4.

 

2 Выполнение базовой установки BIND

Пропустите эту часть если у Вас уже есть установленный Bind, который можно использовать как компонент Самба AD.

 

2.1 Установка BIND

Bind как компонент для Вашего контроллера домена Самба Active Directory на данный момент может использоваться только в версиях 9.8 и 9.9. Пользователям Bind 9.7 всячески рекомендуется сделать модернизацию! Если это не возможно, читайте часть динамическое обновление DNS через Kerberos для Bind 9.7 для получения инструкций по настройке Bind 9.7.

Если Вы устанавливаете Bind из репозиториев Вашего дистрибутива можно пропустить следующих два шага.  Следующих два шага. Но убедитесь что Ваш производитель скомпилировал Bind с опциями '–with-gssapi' и '–with-dlopen' (смотри ниже) прежде чем использовать его как DNS компонент Самбы. В нашем случае (Ubuntu 14.04 LTS DVD) можно переходить сразу к параграфу 2.2 .

 

2.1.1 Загрузка

Загрузите выбранную Вами и совместимую с Самба 4 версию с https://www.isc.org/software/bind.

 

2.1.2 Компиляция Bind

Для использования Bind 9.8.1 или новее как компонента Самба AD, как минимум требуется настройка двух следующих опций:

# ./configure –with-gssapi=/usr/include/gssapi –with-dlopen=yes

Проверьте пожалуйста не требуются ли другие опции в Вашем окружении. Для сборки Bind 9.8.0 используйте '–with-dlz-dlopen=yes' вместо '–with-dlopen=yes'.

Сборка и установка:

# make
# make install

 

2.2 Настройка

 

2.2.1 Создание базового named.conf

В следующем примере показан базовый ‘named.conf’ из чистой минимальной установки Bind без каких-либо частей Самба AD. Добавим требуемые Самба параметры позднее.

# Global options
options {

       auth-nxdomain yes;

       directory "/var/named";

       forwarders { 8.8.8.8; 8.8.4.4; };

       allow-transfer { none; };
       notify no;

       empty-zones-enable no;

       allow-query {
               192.168.0.0/24;
               ...other networks you want to allow to query your DNS...;
       };

       allow-recursion {
               192.168.0.0/24;
               ...other networks you want to allow to do recursive queries...;
       };

};


# Root servers (required zone for recursive queries)
zone "." {
       type hint;
       file "named.root";
};


# Required localhost forward-/reverse zones
 zone "localhost" {
       type master;
       file "master/localhost.zone";
};

zone "0.0.127.in-addr.arpa" {
       type master;
       file "master/0.0.127.zone";
};

Мы указываем ‘/var/named’ как директорию в ‘named.conf’ для размещения там наших фалов зон и т.д. Если Вы захотите расположить их в другом месте, пожалуйста учтите все дополнительные инструкции.

Больше деталей о параметрах использованных в шаблоне ‘named.conf’ смотри в ‘man 5 named.conf’.

 

2.2.2 Добавление пользователей и группы для BIND

Если Вы не хотите запускать bind от рута (и, уверен, Вы не хотите этого!), мы добавим учетку и группу (приспособим UID/GID если потребуется):

# groupadd –g 25 named
# useradd –g named –u 25 –d /var/named –M –s /sbin/nologin named

 

2.2.3 Получение списка корневых серверов имен

Загрузите список корневых серверов имен с InterNIC:

# wget –q –O /var/named/named.root http://www.internic.net/zones/named.root
# chown named:named /var/named/named.root

Чтобы обеспечить актуальность файлу можно добавить задание крону для автоматической загрузки.

 

2.2.4 Создание файла зоны localhost

Создайте файл зоны пересылки (‘/var/named/master/localhost.zone’) для Вашей ‘localhost’ зоны:

$TTL 3D

$ORIGIN localhost.

@       1D      IN     SOA     @       root (
                       2013050101      ; serial
                       8H              ; refresh
                       2H              ; retry
                       4W              ; expiry
                       1D              ; minimum
                       )

@       IN      NS      @
        IN      A       127.0.0.1

 

2.2.5 Создание файла зоны 0.0.127.in-addr.arpa

Создайте файл обратной зоны (‘/var/named/master/0.0.127.zone’) для Вашей ‘0.0.127.in-addr.arpa’ зоны:

$TTL 3D

@       IN      SOA     localhost. root.localhost. (
                        2013050101      ; Serial
                        8H              ; Refresh
                        2H              ; Retry
                        4W              ; Expire
                        1D              ; Minimum TTL
                        )

       IN      NS      localhost.

1      IN      PTR     localhost.

 

2.3 Запуск BIND

# named –u named

Если конфигурация приемлема, Вы не увидите ошибок ни в консоли ни в системном логфайле.

Чтобы Bind запускался автоматически при старте системы, что рекомендуется, создайте init.d скрипт или стартуйте его system.

 

2.4 Проверка Вашей зоны

Теперь мы попробуем просмотреть записи нашей зоны. Мы скажем команде ‘host’ использовать DNS с 127.0.0.1, так наш запрос не уйдет на сторонний DNS сервер, это можно настроить также в ‘/etc/resolv.conf’.

Сначала проверьте прямой просмотр для ‘localhost’:

# host localhost. 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases: 

localhost has address 127.0.0.1

И затем обратный просмотр для ‘127.0.0.1’:

# host 127.0.0.1 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases: 

1.0.0.127.in-addr.arpa domain name pointer localhost.

 

3 Настройка BIND как компонента среды Самба Active Directory

  • Примечание: BIND должен быть инсталлирован на одной машине с Контроллером домена Самба AD. Чтобы BIND DLZ модуль имел доступ к базе данных AD непосредственно, BIND для зон AD должен быть на той же машине.

 

3.1 Bind 9.8 / 9.9

В процессе развертывания, модернизации создается файл (‘/usr/local/samba/private/named.conf’), который должен быть включен в Ваш Bind named.conf:

include "/usr/local/samba/private/named.conf";

Если вы развернулись со встроенным DNS, сначала требуются следующие несколько шагов для переключения на BIND.

В зависимости от запускаемой Вами версии Bind, нужно отредактировать ‘/usr/local/samba/private/named.conf’ и активизировать нужную версию модуля DLZ.

Перепустите Bind чтобы задействовать включенный файл. Проверьте логи на ошибки и проблемы. Если возможно можно ‘run named-checkconf’ для помощи в устранении проблем с настройками Вашего Bind.

 

3.2 Bind 9.7

Пользователям Bind 9.7 всячески советуем модернизацию! Если это не возможно, ознакомьтесь с частью Динамическое обновление DNS через Kerberos для Bind 9.7 для получения инструкций по настройке Bind 9.7.

 

3.3 Динамическое обновление DNS через Kerberos (опционально, но рекомендуется)

Самба имеет возможность автоматического обновления зон Bind через Kerberos.

Для установки динамического обновления DNS Вам нужно установить современную версию Bind. Поэтому рекомендуется запускать как минимум версию 9.8.0 в которую включены заплатки от Команды Самба делающие динамическое обновление DNS более устойчивым и простым в конфигурировании. Используйте пожалуйста 9.8 или 9.9 если возможно!

Чтобы определить какая версия Bind у Вас запущена используйте:

# named -V

Если в Вашей операционной системе нет Bind 9.8 или 9.9, пожалуйста обдумайте получение их из пакета предоставляемого 3-ими поставщиками (например, в Ubuntu доступен ppa с обновленной версией Bind) или компилируйте его самостоятельно.

 

3.3.1 Bind 9.8 / 9.9

DNS keytab файл автоматически генерируется в процессе развертывания/модернизации. Добавьте следующую ‘tkey-gssapi-keytab’ опцию в секцию ‘option’ Вашего named.conf (только скорректируйте путь в соответствии с реалиями Вашего дистрибутива - в Ubuntu 14.04 путь будет /var/lib/samba/private/):

options {
     [...]
     tkey-gssapi-keytab "/usr/local/samba/private/dns.keytab";
     [...]
};

 

3.3.2 Bind 9.7

Если у Вас Bind 9.7.х (а именно 9.7.2 или более поздний), то возможно Вы сможете перейти на 9.8 или 9.9. Этим Вы сильно убавите свои проблемы! Иначе, следуйте этой инструкции:

Развертывание Самбы создаст пользовательский файл настроек ‘/usr/local/samba/private/named.conf.update’ (в нашем случае /var/lib/samba/private/named.conf.update). Вам нужно включить этот файл в ‘named.conf’ для задействования обновления Самба/Kerberos DNS в автоматическом режиме.

include "/usr/local/samba/private/named.conf.update";

Учтите что если Вы включите этот файл в версии Bind которая не поддерживает этого, Bind не удастся запустить!

Вам необходимо установить дополнительные переменные среды для использования 9.7 (как обычно, корректируем путь в Ubuntu 14.04 на /var/lib/samba/private/ ) :

KEYTAB_FILE="/usr/local/samba/private/dns.keytab"
KRB5_KTNAME="/usr/local/samba/private/dns.keytab"
export KEYTAB_FILE
export KRB5_KTNAME

Это нужно поместить в файл настроек Вашего Bind. На Debian-системах (включая Ubuntu) это в ‘/etc/default/bind9’. На RedHat и SuSE производных системах он в ‘/etc/sysconfig/named’. Пожалуйста уточните корректное место расположение установко переменных окружения в документации по Вашему дистрибутиву. Строго говоря, нужна только одна из двух KEYTAB_FILE или KRB5_KTNAME, но какая именно зависит от Вашего дистрибутива, поэтому проще просто установить обе.

‘dns.keytab’ должен быть доступен на чтение процессам сервера Bind (в Ubuntu путь заменим на /var/lib/samba/private/ ) :

# chown named:named /usr/local/samba/private/dns.keytab

В норме, развертывание/модернизация должно установить права для Вас автоматически.

В заключении, нужно добавить следующую секцию опций в Ваш named.conf:

options {
     [...]
     tkey-gssapi-credential "DNS/smbsrv01.domain.lan";
     tkey-domain "DOMAIN.LAN";
     [...]
};

Последняя часть credential в первой строке должна соответствовать DNS имени сервера который Вы устанавливаете.

 

3.3.3 Проверка/отладка динамического обновления DNS

Способом добиться автоматического обновления DNS в работе Самбы является, создаваемый при развертывании, файл ‘/usr/local/samba/private/dns_update_list’, содержащий список DNS записей которые Самба пытается динамически обновить при запуске и каждые 10 минут сообразно использованию утилиты ‘samba_dnsupdate’. Обновления будут успешными только если DNS записи еще не существуют. Помните что Вам нужна утилита ‘nsupdate’ из дистрибутива Bind чтобы все это заработало.

Если Вы хотите проверить, или отладить этот процесс, пожалуйста запустите от рута (корректируйте путь под себя)  :

# /usr/local/samba/sbin/samba_dnsupdate --verbose --all-names

Указанные опции командной строки будут принудительно обновлять все записи в ‘dns_update_list’, а также выводить детальную информацию о ходе выполнения.

 

4 Интеграция с AppArmor или SELinux

Если Вы получаете ошибки от samba_dnsupdate и nsupdate ‘return dns_tkey_negotiategss: TKEY is unacceptable’ попробуйте следующее:

Если используется AppArmor или SElinux, Вам нужно обеспечить возможность для процессов Bind доступ на чтение к следующим файлам (скорректируйте пути - в Ubuntu 14.04 - /var/lib/samba/private/ ) :

/usr/local/samba/private/dns.keytab
/usr/local/samba/private/named.conf

А также доступ на чтение-запись к

/usr/local/samba/private/dns/

директории и расположенным в ней файлам зон.

Развертка Самбы пытается установить корректные права для этих файлов, но Вам может понадобиться внести изменения в настройки AppArmor или SELinux если один из них запущен. Если используется AppArmor, то команда ‘aa-logprof’ может помочь Вам добавить потерянные разрешения которые нужно добавить после первого запуска Самбы и Bind после их настройки.

Разрешения, SELinux Маркировка и Политики

Эти инструкции предполагают RHEL6, но могут использоваться как руководство для других дистрибутивов/версий.

Остается выполнить больше работы в отношении создания Самба 4 заточенной SELinux политики, но теперь необходимо обеспечить работоспособность всех компонентов без отключения SELinux.

Для всех команд ниже убедитесь, что установлена следующая переменная окружения:

MYREALM="domain.lan"

Установите разрешения (SELinux) (откорректируйте пути под себя):

chown named:named /usr/local/samba/private/dns
chgrp named /usr/local/samba/private/dns.keytab
chmod g+r /usr/local/samba/private/dns.keytab
chmod 775 /usr/local/samba/private/dns

Файлы Меток (SELinux):

chcon -t named_conf_t /usr/local/samba/private/dns.keytab
chcon -t named_conf_t /usr/local/samba/private/named.conf.update
chcon -t named_var_run_t /usr/local/samba/private/dns
chcon -t named_var_run_t /usr/local/samba/private/dns/${MYREALM}.zone

Установка Стойкости Метки (SELinux):

semanage fcontext -a -t named_conf_t /usr/local/samba/private/dns.keytab
semanage fcontext -a -t named_conf_t /usr/local/samba/private/named.conf
semanage fcontext -a -t named_conf_t /usr/local/samba/private/named.conf.update
semanage fcontext -a -t named_var_run_t /usr/local/samba/private/dns
semanage fcontext -a -t named_var_run_t /usr/local/samba/private/dns/${MYREALM}.zone
semanage fcontext -a -t named_var_run_t /usr/local/samba/private/dns/${MYREALM}.zone.jnl

Настройка AppArmor:

Добавьте следующее в конец '/etc/apparmor.d/local/usr.sbin.named (создайте если его нет).

# Samba4 DLZ and Active Directory Zones (default source installation)
/usr/local/samba/lib/** rm,
/usr/local/samba/private/dns.keytab r,
/usr/local/samba/private/named.conf r,
/usr/local/samba/private/dns/** rwk,

5 Отладка BIND как компонента Самба AD

Для включения отладки в Bind DLZ модуле измените следующую строку в ‘/usr/local/samba/private/named.conf’ с

database "dlopen .../bin/modules/bind9/dlz_bind9.so";

на

database "dlopen .../bin/modules/bind9/dlz_bind9.so -d 3";

Если запускаете Bind 9.9 то добавьте ‘-d 3’ в соответствующую строку.

Остановите Bind и запустите сервис вручную с захватом логов:

# /usr/sbin/named -u named -f -g 2>&1 | tee named.log

 

6 Известные дыры и пути их устранения/обхода

 

6.1 Chroot Bind

Если используется Bind как компонент Вашего Самба AD не должен использоваться chroot, поскольку это предоставит доступ к открытым файлам и базам данных из Самбы.

Для отключения chroot для Bind смотрите документацию Вашего дистрибутива. В некоторых можно установить

NAMED_RUN_CHROOTED="no"

в ‘/etc/sysconfig/named’ и перепустить сервис.

 

6.2 Debian: Bind слушает на ошибочных IP адресах

На Debian системах автогенерация зоны AD может обнаружить и использовать ‘127.0.1.1’ как IP адрес контроллера домена. Это станет причиной проблем при попытках подключения с клиентских машин к серверу. Для устранения этого нужно подстроить ‘/usr/local/samba/private/named.conf’ изменением ‘127.0.1.1’ на актуальный IP адрес устанавливаемого сервера.

 

6.3 Debian Sid:  Named не стартует

На Debian Sid (Bind 9 пакет), отсутствует ‘/etc/bind/named.conf.options’ и это причина неудачи при запуске демона named. Лечится созданием пустого файла, или комментированием соответствующей строки в ‘/etc/bind/named.conf’. Больше информации смотри сообщения в syslog.

 

6.4 Вновь добавляемые DNS записи не разрешаются

Если Вы испытываете проблемы с разрешением вновь добавленных DNS записей используя Bind9 DLZ интерфейс, возможно захотите проверить следующее:

Файлы в ‘/usr/local/samba/private/dns/sam.ldb.d/’ это хардлинки (жесткие ссылки) на ‘/usr/local/samba/private/sam.ldb.d/’. Возможно Вы копировали/перемещали их помимо файловой системы и хардлинки потеряны, а вы теперь работаете с двумя разными копиями баз данных одновременно (Вы можете проверить это добавлением новой DNS записи, например из ‘samba-tool’. Если ее невозможно разрешить, проверьте различающиеся айноды (inodes)).

Если выполнить ‘ls –I’ на обеих директориях, Вы должны увидеть, что следующие файлы имеют одинаковые айноды (что индицирует, что они жестко связаны):

# ls -lai .../samba/private/sam.ldb.d/
17344368 -rw-rw---- 2 root named  4251648 11. Nov 18:27 DC%3DDOMAINDNSZONES,DC%3DSMBSRV01,DC%3DDOMAIN,DC%3DLAN.ldb
17344370 -rw-rw---- 2 root named  4251648 11. Nov 18:27 DC%3DFORESTDNSZONES,DC%3DSMBSRV01,DC%3DDOMAIN,DC%3DLAN.ldb
17344372 -rw-rw---- 2 root named   421888 11. Nov 17:53 metadata.tdb

# ls -lai .../samba/private/dns/sam.ldb.d/
17344368 -rw-rw---- 2 root named 4251648 11. Nov 18:27 DC%3DDOMAINDNSZONES,DC%3DSMBSRV01,DC%3DDOMAIN,DC%3DLAN.ldb
17344370 -rw-rw---- 2 root named 4251648 11. Nov 18:27 DC%3DFORESTDNSZONES,DC%3DSMBSRV01,DC%3DDOMAIN,DC%3DLAN.ldb
17344372 -rw-rw---- 2 root named  421888 11. Nov 17:53 metadata.tdb

Если файлы в обеих директориях имеют различные номера айнодов, значит они не хардлинки. Чтобы исправить запустите

# samba_upgradedns --dns-backend=BIND9_DLZ

Это создаст файлы DNS с корректными хардлинками и разрешениями.

Затем перепустите Bind.

 

6.5 DDNS обновления не работают

Проверьте, что Bind может читать файл ‘/etc/krb5.conf’.

 

Основная статья темы (вверх по иерархии) или другая статья.