. (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, система задаст несколько вопросов чтоб настроить контроллер домена :
- Default Kerberos version 5 realm : DOMAIN.NAME (!!большими буквами)
- Kerberos servers for your realm: domain.name
- 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 закончено.
Но это же линукс и на этом история не может закончится так просто… В конце нашей трилогии мы узнаем, какие еще сюрпризы могут быть…
где же третья часть ?