Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
  • Astra Linux Special Edition РУСБ.10015-17
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
  • Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
  • Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
  • Astra Linux Special Edition РУСБ.10015-16 исп. 1 и  исп. 2
  • Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
  • Astra Linux Common Edition 2.12


Введение

В больших сетях очевидна необходимость использования централизованной службы автоматического назначения компьютерам IP-адресов (службы DHCP). При использовании DHCP возникает необходимость поддержания разрешения имен, то есть установления соответствия имен компьютеров и динамически назначенных им адресов. При этом:

  • устанавливаемая на клиентских машинах служба SSSD умеет сообщать контроллеру домена о своём IP-адресе;
  • входящая в дистрибутив Astra Linux служба DHCP isc-dhcp-server имеет возможность автоматически сообщать доменному серверу DNS (DNS-сервер BIND9) о назначаемых клиентам  адресах.

Таким образом, обновление адресов можно выполнять либо по инициативе клиентских машин, либо централизованно с помощью DHCP-сервера.

Настройка обновления с клиентских машин (SSSD)

Для включения обновления IP-адресов службой sssd в файл конфигурации этой службы /etc/sssd/sssd.conf в секцию с параметрами домена FreeIPA следует добавить опции:

[domain/...]
.....
# Включить обновление прямых записей (A/AAAA записей)
dyndns_update = true
# Включить обновление обратных записей (PTR записей)
dyndns_update_ptr = true
# Интервал обновления в секундах. По умолчанию - 0, и обновление выполняется только один раз при запуске службы SSSD.
# Если интервал менее 60 секунд, то обновление выполняется раз в 60 секунд.
# Если адрес после предыдущего обновления не изменялся - обновление не выполняется.
dyndns_refresh_interval = 60
CODE

Авторизация по ключам Kerberos для такого обновления настраивается автоматически при установке сервера и клиентов FreeIPA.

При установке клиента можно использовать ключ --enable-dns-updates, автоматически задающий нужные настройки:

sudo astra-freeipa-client -d somedom.example.com --par --enable-dns-updates
однако при этом будет добавлена только опция dyndns_update = true (однократное обновление A/AAAA записей при запуске системы при условии обнаружения изменений). Обновление PTR записей выполняться не будет.

Настройка централизованного обновления через службу isc-dhcp-server

Данный раздел неприменим для доменов Samba AD, использующих DLZ_BIND backend.

Создание ключей

Создать ключ для сервера DHCP. Ключ будет автоматически сохранен в файле /etc/bind/rndc.key:

  • В Astra Linux Special Edition 1.8:

    sudo rndc-confgen -a -b 256

  • В более ранних обновлениях:

    sudo rndc-confgen -a -r /dev/random -b 256

В файл конфигурации сервера DNS /etc/bind/named.conf после раздела "options" добавить строчку:

include "/etc/bind/rndc.key";

Настройка сервера DNS FreeIPA

Запустить WEB-интерфейс управления сервера FreeIPA и в свойствах необходимой ПРЯМОЙ зоны в разделе "Политика обновления BIND" добавить запись:

grant rndc-key wildcard * ANY;

В свойствах соответствующей ОБРАТНОЙ зоны в том же разделе "Политика обновления BIND" добавить запись:

grant rndc-key wildcard * PTR;

Сохранить изменения и перезапустить службы FreeIPA:

sudo ipactl restart

Настройка isc-dhcp-server

Установить DHCP-сервер в соответствии с инструкциями

В файле настроек /etc/default/isc-dhcp-server указать интерфейс, через который должна работать служба:

INTERFACESv4="eth0"

Отредактировать файл конфигурации /etc/dhcp/dhcpd.conf (в примере подразумевается домен samdom.example.com и сеть 10.0.2.0/24 с адресом сервера FreeIPA/DNS 10.0.2.102):

ddns-updates on;
ddns-update-style standard;
include "/etc/bind/rndc.key";
ddns-domainname "";
update-static-leases on;

option domain-name "samdom.example.com";
option domain-search "samdom.example.com";

option domain-name-servers 10.0.2.102;
option dhcp-server-identifier 10.0.2.102;
#Следующая строка нужна только если используется Samba с WINS
#option netbios-name-servers 10.0.2.102;

default-lease-time 129600;
max-lease-time 1296000;
authoritative;

server-name "ipa.samdom.example.com";
server-identifier 10.0.2.102;

#Эта подсеть должна соответствовать подсети вашей локальной сети, обращенной к устройству Ethernet.
Subnet 10.0.2.0 netmask 255.255.255.0 {
    option broadcast-address 10.0.2.255;
    option subnet-mask 255.255.255.0;
    option routers 10.0.2.1;
    pool {
      range 10.0.2.10 10.0.2.100;
      allow known-clients;
      allow unknown-clients;
      max-lease-time 86400;
      default-lease-time 43200;
    }
    zone samdom.example.com. {
        primary 127.0.0.1;
        key "rndc-key";
    }
    zone 2.0.10.in-addr.arpa. {
        primary 127.0.0.1;
        key "rndc-key";
    }
}

В отладочных целях можно задать заведомо маленький диапазон адресов:

range 10.0.2.10 10.0.2.20;
CODE

и для гарантированного изменения адреса клиента заменять его на непересекающийся диапазон:

range 10.0.2.30 10.0.2.40;
CODE

На клиентах обновить и проверить адрес можно командами:

sudo dhclient -r
sudo dhclient
ip a

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

sudo systemctl restart isc-dhcp-server

Если после неудачного запуска причина неудачного запуска устранена, а сервер всё равно не может стартовать, сообщая, что он уже запущен, следует удалить вручную файл /var/run/dhcpd.pid.

Установка клиентов с включением автоматического обновления

DHCP-сервер передавая записи об адресах клиентов DNS-серверу подписывает переданные записи своим ключём. Это исключает возможность изменения "чужих" записей. Поэтому, чтобы динамическое обновление работало, нужно создать запись с помощью DHCP-сервера. Для этого нужно обновить адрес от имени полного доменного имени компьютера (FQDN). Это можно сделать следующими командами, выполняемыми до выполнения команды ввода клиента в домен:

sudo hostnamectl set-hostname client.somedom.example.com
sudo dhclient -r
sudo dhclient
где:

  • client - имя клиентского компьютера;
  • somedom.example.com - имя домена;
  • client.somedom.example.com - полное доменное имя компьютера.

Эти команды должны быть выполнены до ввода компьютера в домен.

Проверка успешности настройки

Проверить работу динамического обновления можно запустив отдельный компьютер, настроенный на получение сетевого адреса по DHCP.
После включения такого компьютера и получения им адреса этот компьютер станет доступен по имени.
Например, для компьютера с именем client можно попробовать для проверки следующие команды:

ping client.samdom.examle.com
dig client.samdom.examle.com