evgen@spb: ~/2020/10/kontroller-domena-na-samba/

Контроллер домена на Samba — CentOS 7

Samba давно умеет быть контроллером домена на предприятии — стабильно и нетребовательно. Да, по функциональности это уровень 2012R2, но далеко не везде нужны серьёзные леса доменов с Exchange и прочими дорогостоящими хотелками. Авторизовать пользователей, хранить о них информацию, играть групповыми политиками и раздавать адресную книгу по LDAP — всё это Samba делает без проблем.

Подготовка

Для начала стоит проработать вопрос с IP и DHCP — сервер в начало сети и так далее, тут уже на вкус и цвет.

На свежей машине прописываем корректное имя хоста:

vim /etc/sysconfig/network
HOSTNAME=dc

Если с SELinux не знакомы близко — пока можно отключить:

vim /etc/sysconfig/selinux
SELINUX=disabled

Так же поступаем с firewall, его можно настроить позже:

systemctl disable firewalld
systemctl stop firewalld

Ставим пакеты, нужные для сборки:

yum -y install gcc make wget python-devel gnutls-devel openssl-devel \
  libacl-devel krb5-server krb5-libs krb5-workstation openldap-devel pam pam-devel

Сборка Samba

cd /tmp/
wget https://ftp.samba.org/pub/samba/samba-4.6.5.tar.gz
tar -xzvf samba-4.6.5.tar.gz
cd ./samba-4.6.5
./configure --enable-selftest --with-systemd

Смотрим, сколько ядер, и собираем с флагом -j (количество ядер + 1). У меня их 8, поэтому -j9:

make -j9
make -j9 install

Настройка Samba как контроллера домена

Копируем нужный конфиг Kerberos, сохранив старый:

mv /etc/krb5.conf /etc/krb5.conf_alt
cp /usr/local/samba/share/setup/krb5.conf /etc/krb5.conf

Готовим контроллер домена в интерактивном режиме:

/usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive

Служба для systemd

cat > /etc/systemd/system/samba4.service <<'EOF'
[Unit]
Description=Samba 4 Active Directory
After=syslog.target
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/samba/var/run/samba.pid
ExecStart=/usr/local/samba/sbin/samba

[Install]
WantedBy=multi-user.target
EOF

Включаем в автозапуск:

systemctl enable samba4
systemctl restart samba4

Проверяем аутентификацию NT:

/usr/local/samba/bin/smbclient -L localhost -U%

Настройка DNS

Правим resolv.conf:

vim /etc/resolv.conf
nameserver 127.0.0.1

Тестируем DNS:

host -t SRV _ldap._tcp.domain.local
host -t SRV _kerberos._udp.domain.local
host -t A dc.domain.local

Правим smb.conf

vim /usr/local/samba/etc/smb.conf
# Global parameters
[global]
    workgroup = DOMAIN
    realm = domain.local
    netbios name = DC
    server role = active directory domain controller
    dns forwarder = 8.8.8.8
    allow dns updates = nonsecure
    nsupdate command = /usr/bin/nsupdate -g

[netlogon]
    path = /usr/local/samba/var/locks/sysvol/domain.local/scripts
    read only = No
    write ok = Yes

[sysvol]
    path = /usr/local/samba/var/locks/sysvol
    read only = No
    write ok = Yes

Kerberos

Делаем симлинк на конфиг Kerberos:

ln -sf /usr/local/samba/private/krb5.conf /etc/krb5.conf

И правим его:

nano /etc/krb5.conf
[libdefaults]
    default_realm = DOMAIN.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = true

Проверяем получение билета:

kinit administrator@DOMAIN.LOCAL

Убираем ограничение на срок жизни пароля:

/usr/local/samba/bin/samba-tool domain passwordsettings set \
  --complexity=off --min-pwd-length=6 --max-pwd-age=0

Проверяем билет:

klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@DOMAIN.LOCAL

Обратные зоны DNS

/usr/local/samba/bin/samba-tool dns zonecreate dc.domain.local 0.168.192.in-addr.arpa
/usr/local/samba/bin/samba-tool dns add dc.domain.local 0.168.192.in-addr.arpa zzz PTR dc.domain.local

Готово.

evgen@spb: ~/contacts
evgen@spbping -c1 evgen.info
64 bytes from evgen.info: отвечу в течение рабочего дня
evgen@spbcat contacts.txt
mail      ya@evgen.info
telegram  @EvgenOne
github    github.com/onegin
blog      evgen.info/blog
evgen@spbecho $ЗАЧЕМ_ПИСАТЬ
интересная инфраструктурная задача · вопрос по Proxmox или Icinga ·
желание обсудить, почему memtest молчал, а память была битая
evgen@spb
© 2026 Евгений Подолинский · Санкт-Петербург
синий здесь – не тот, о котором вы подумали.