Вторичный (резервный) DC AD Samba4 на базе Ununtu
Создадим резервный контроллер AD на базе Ubuntu Linux.
За основу берем предыдущую статью, тупо копипастим часть информации и местами ее модифицируем ))
И так, как и в прошлый раз, у нас все будет базироваться на 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
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
Можно проверить или скорректировать, открыв файл
$ sudo nano /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, система задаст несколько вопросов, отвечаем также как и в случае, когда мы создавали основной сервер ActiveDirecotry на Samba4:
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
Редактируем файл:
$ 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
> 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 закончено.
- RusLan