Вторичный DC AD Samba4 на базе Ununtu

. (Part.1) (Part.2) (Part.3)

В предыдущем посте я уже описывал процедуру поднятия контроллера доменов с помощью Samba4 на базе UBUNTU-Server. Теперь попытаемся создать ему пару, точнее зарезервировать основной контроллер. А то мало ли…

Я наивно предполагал, что по аналогии с майкрософт-сервером создать резервный DC будет проще чем основной, однако будущее показало, как я ошибался… Для начала, как и в первом случае, в рунете практически отсутствует стопроцентно готовое решение, точнее решения вроде как есть, но если сравнить все варианты, а потом попытаться реализовать один из них, то почему-то это не хочет работать… А на забугорных сайтах больше информации о том как создавать именно основной сервер DC. Поэтому грабим берем что есть у других коллег на сайтах, читаем мануалы Самбы, собираем все в кучу тестируем на своей шкуре… За основу берем предыдущую статью, тупо копипастим часть информации и местами ее модифицируем ))

И так, как и в прошлый раз, у нас все будет базироваться на Ubuntu-Server 16.04.4

Данные для будущего сервера:

  • IP адрес сервера: 192.168.55.12/24
  • Шлюз в сети: 192.168.55.1
  • DNS: 192.168.55.11, 192.168.55.1
  • Доменное имя: DOMAIN.NAME
  • Имя сервера: ad2

Настроим сетевую карту, но сперва узнаем, как она обзывается в системе командой ifconfig -a:

ifconfig -a
ens160    Link encap:Ethernet  HWaddr 00:0b:29:02:21:ac  
          inet addr:192.168.55.12  Bcast:192.168.55.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe02:22ac/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:523579 errors:0 dropped:808 overruns:0 frame:0
          TX packets:31913 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:47263740 (47.2 MB)  TX bytes:8491826 (8.4 MB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:6852 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6852 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:699385 (699.3 KB)  TX bytes:699385 (699.3 KB)

в нашем случае это ens160, далее правим файл настроек sudo nano /etc/network/interfaces , нужно чтоб выглядело вот так:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

iface ens160 inet static
address 192.168.55.12
gateway 192.168.55.1
netmask 255.255.255.0
dns-nameservers 192.168.55.11 192.168.55.1
dns-search domain.name
auto ens160

Следом нужно просмотреть файл fstab командой: sudo nano /etc/fstab , для проверки активации ACL. Если такое отсутствует, то нужно дописать acl:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=0a0e8c94-72a4-4325-ad63-126f871bef62 /               ext4    errors=remount-ro,acl 0       1
# /home was on /dev/sda2 during installation
UUID=6bd8b8d0-5650-4422-a414-c8d5a3bcd44f /home           ext4    defaults,acl        0       2
# swap was on /dev/sda3 during installation
UUID=18fc300a-8a86-11e8-a4a1-000c290222ac none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0

И перезагружаем наш сервер: sudo reboot

Подготовительные работы закончены, переходим к основным действиям:

Обновляем все что можно:

  • sudo apt-get update && sudo apt-get upgrade
  • sudo apt-get dist-upgrade

Задаем имя нашего сервера в будущем домене:

sudo hostnamectl set-hostname ad2

Можно проверить или скорректировать, открыв файл /etc/hostname:

 GNU nano 2.5.3                     File: /etc/hostname                                                  

ad2

Устанавливаем необходимые нам пакеты, в отличии от первого случая, на понадобится еще одно приложение:

sudo apt-get install samba krb5-user krb5-config winbind libpam-winbind libnss-winbind bind9

В процессе установки Kerberos, система задаст несколько вопросов чтоб настроить контроллер домена :

  1. Default Kerberos version 5 realm : DOMAIN.NAME   (!!большими буквами)
  2. Kerberos servers for your realm: domain.name
  3. Administrative server for your Kerberos realm: domain.name

После окончания установки удаляем стандартный конфигурационный файл Samba, т.к. в процессе предоставления домена, Самба создаст новый conf-файл и если не удалить, то выкинет с ошибкой. Хотя, лучше не удалять, а просто переименовать:

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.back

Сразу подготовим службу синхронизации времени, все как и в прошлый раз, но без одного пункта:

Устанавливаем  sudo apt-get install ntp ntpdate

Далее  правим config-файл службы: sudo nano /etc/ntp.conf

  • Следующий момент — тут по желанию, однако я поменял в блоке серверов NTP серверы точного времени с дефолтных на родные, российские
# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board
# on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for
# more information.
# pool 0.ubuntu.pool.ntp.org iburst
# pool 1.ubuntu.pool.ntp.org iburst
# pool 2.ubuntu.pool.ntp.org iburst
# pool 3.ubuntu.pool.ntp.org iburst

pool ntp1.stratum2.ru iburst
pool ntp2.stratum2.ru iburst
pool ntp3.stratum2.ru iburst
pool ntp4.stratum2.ru iburst
pool ntp5.stratum2.ru iburst

# Use Ubuntu's ntp server as a fallback.
pool ntp1.stratum1.ru
  • И после строк:
  • # Needed for adding pool entries
    restrict source notrap nomodify noquery

добавляем строку

restrict default kod nomodify notrap nopeer mssntp

Закрываем, сохраняем…

Перезапускаем службу:

sudo systemctl restart ntp

Тестируем работу NTP:

sudo ntpdate -du ad1.domain.name

Убеждаемся, что наша служба синхронизации времени работает как положено.

Вводим сервер в наш домен:

sudo samba-tool domain join domain.name DC --realm=domain.name --dns-backend=BIND9_DLZ -UAdministrator

В процессе система попросит ввести пароль администратора домена, который мы задавали в прошлый раз…  Пишем его и снова жмем Enter.

После ввода сервера в домен, открываем conf-файл Самбы: sudo nano /etc/samba/smb.conf и в блоке [global] приписываем строчку: idmap_ldb:use rfc2307 = yes

# Global parameters
[global]
        workgroup = DOMAIN
        realm = domain.name
        netbios name = AD2
        server role = active directory domain controller
        server services = s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsu$
        idmap_ldb:use rfc2307 = yes

[netlogon]
        path = /var/lib/samba/sysvol/ids.group/scripts
        read only = No

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

Командой named -v определяем версию службы bind9, в моем случае:  BIND 9.10.3-P4-Ubuntu <id:edf74b0>

Редактируем файл sudo nano  /var/lib/samba/private/named.conf и в нем открываем строку с нужной нам версией… если открыта другая, соответственно закрываем ее:

# This DNS configuration is for BIND 9.8.0 or later with dlz_dlopen support.
#
# This file should be included in your main BIND configuration file
#
# For example with
# include "/var/lib/samba/private/named.conf";

#
# This configures dynamically loadable zones (DLZ) from AD schema
# Uncomment only single database line, depending on your BIND version
#
dlz "AD DNS Zone" {
    # For BIND 9.8.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9.so";

    # For BIND 9.9.x
    # database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_9.so";

    # For BIND 9.10.x
    database "dlopen /usr/lib/x86_64-linux-gnu/samba/bind9/dlz_bind9_10.so";
};

Настраиваем bind дальше: sudo nano /etc/bind/named.conf  и в самом конце пишем строку include "/var/lib/samba/private/named.conf";

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/var/lib/samba/private/named.conf";

sudo nano /etc/bind/named.conf.options после символа }; дописываем tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";

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

tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab";

Честно говоря, вот все эти манипуляции с bind мне не совсем понятны… По большому счету, оно и не особо нам нужно, тем более, что я не стал использовать его на основном сервере, но «раз пацаны ставят…»… скажем так, на будущее, на вырост..

Возвращаемся к основной теме — вроде все на этом готово, резервный контроллер AD готов, но как всегда есть «но»… Но, в отличии от «винды глюкавой», здесь при добавлении второго контроллера, Samba не создает записи о нем в DNS, поэтому ручками, батенька, ручками… А иначе никто о нем не узнает и нафига он такой вообще будет нужен…

Возвращаемся к нашему первому основному серверу, ad1 и следующие манипуляции выполняем на нем…

Для начала установим программу ldb-tools, она на пригодится позже: sudo apt-get install ldb-tools

Теперь будем добавлять запись о втором сервере в зону А:

sudo samba-tool dns add 192.168.55.11 domain.name ad2 A 192.168.55.12 -UAdministrator

С помощью установленного выше пакета, узнаем objectGUID сервера ad2:

sudo ldbsearch -H /var/lib/samba/private/sam.ldb '(invocationid=*)' --cross-ncs objectguid

В ответ получаем:

# record 1
dn: CN=NTDS Settings,CN=AD1,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=name
objectGUID: 409ee42b-f852-4a2f-b025-802f7fd863e3

# record 2
dn: CN=NTDS Settings,CN=AD2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=domain,DC=name
objectGUID: bcdb5c30-a0ee-4fb7-ba0e-5c46d7e61baf

# returned 2 records
# 2 entries
# 0 referrals

Где bcdb5c30-a0ee-4fb7-ba0e-5c46d7e61baf  наши искомые данные

Добавляем CNAME запись:

sudo samba-tool dns add 192.168.55.11 _msdcs.domain.name bcdb5c30-a0ee-4fb7-ba0e-5c46d7e61baf CNAME ad2.domain.name -UAdministrator

Проверяем все через sudo nslookup

sudo nslookup
> ad2
Server:     127.0.0.1
Address:    127.0.0.1#53

Name:   ad2.domain.name
Address: 192.168.55.12
>
>
> bcdb5c30-a0ee-4fb7-ba0e-5c46d7e61baf._msdcs.domain.name
Server:     127.0.0.1
Address:    127.0.0.1#53

bcdb5c30-a0ee-4fb7-ba0e-5c46d7e61baf._msdcs.domain.name canonical name = ad2.domain.name.
Name:   ad2.domain.name
Address: 192.168.55.12

Перезапускаем сервер, а лучше оба… оно никогда лишним не будет.. На этом создание вторичного контроллера AD закончено.

Но это же линукс и на этом история не может закончится так просто… В конце нашей трилогии мы узнаем, какие еще сюрпризы могут быть…

One thought on “Вторичный DC AD Samba4 на базе Ununtu”

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

семнадцать + девять =

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)