- Введение
- Настройка обновления с клиентских машин (SSSD)
- Настройка централизованного обновления через сервер DHCP
- Создание ключей
- Настройка сервера DNS FreeIPA
- Настройка сервера DHCP
- Установка клиентов с включением автоматического обновления
- Проверка успешности настройки
- Цели
- Исходные данные
- Установка сервера
- Будем запускать сервер в изолированном окружении:
- Настройка опций сервера
- Безопасность
- Включение в конфигурацию новой доменной зоны
- Прямая доменная зона
- Обратная зона
- Запуск сервера и проверка работоспособности
- Клиенты
- Работа в ненулевых мандатных режимах
Введение
В больших сетях очевидна необходимость использования сервера DHCP для автоматического назначения IP-адресов компьютерам, при этом возникает необходимость поддержания соответствия имён компьютеров и назначенных им адресов. При этом:
- устанавливаемая на клиентских машинах служба SSSD умеет сообщать контроллеру домена о своём IP-адресе;
- входящий в дистрибутив Astra Linux сервер DHCP isc-dhcp-server имеет возможность автоматически сообщать доменному серверу DNS (DNS-сервер BIND9) о назначаемых клиентам адресах.
Таким образом обновление адресов можно выполнять либо по инициативе клиентских машин, либо централизованно с помощью DHCP-сервера.
Настройка обновления с клиентских машин (SSSD)
Для включения обновления в файл конфигурации службы 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
Авторизация по ключам Kerberos для такого обновления настраивается автоматически при установке сервера и клиентов FreeIPA.
При установке клиента можно использовать ключ —enable-dns-updates, автоматически задающий нужные настройки:
однако при этом будет добавлена только опция dyndns_update = true (однократное обновление A/AAAA записей при запуске системы при условии обнаружения изменений). Обновление PTR записей выполняться не будет.
Настройка централизованного обновления через сервер DHCP
Создание ключей
Создать ключ для сервера DHCP. Ключ будет автоматически сохранен в файле /etc/bind/rndc.key:
Настройка сервера DNS FreeIPA
Запустить WEB-интерфейс управления сервера FreeIPA и в свойствах необходимой ПРЯМОЙ зоны в разделе «Политика обновления BIND» добавить запись:
grant rndc-key wildcard * ANY;
В свойствах соответствующей ОБРАТНОЙ зоны в том же разделе «Политика обновления BIND» добавить запись:
grant rndc-key wildcard * PTR;
Сохранить изменения и перезапустить службы FreeIPA:
Настройка сервера DHCP
Установить DHCP-сервер в соответствии с инструкциями.
В файле настроек /etc/default/isc-dhcp-server указать интерфейс, через который должна работать служба:
Отредактировать файл конфигурации /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»;
>
>
В отладочных целях можно задать заведомо маленький диапазон адресов:
и для гарантированного изменения адреса клиента заменять его на непересекающийся диапазон:
На клиентах обновить и проверить адрес можно командами:
После внесения изменений в конфигурационные файлы необходимо перезапускать сервис DHCP:
Если после неудачного запуска причина неудачного запуска устранена, а сервер всё равно не может стартовать, сообщая, что он уже запущен, следует удалить вручную файл /var/run/dhcpd.pid.
Установка клиентов с включением автоматического обновления
DHCP-сервер передавая записи об адресах клиентов DNS-серверу подписывает переданные записи своим ключём. Это исключает возможность изменения «чужих» записей. Поэтому, чтобы динамическое обновление работало, нужно создать запись с помощью DHCP-сервера. Для этого нужно обновить адрес от имени полного доменного имени компьютера (FQDN). Это можно сделать следующими командами, выполняемыми до выполнения команды ввода клиента в домен:
- client — имя клиентского компьютера;
- somedom.example.com — имя домена;
- client.somedom.example.com — полное доменное имя компьютера.
Эти команды должны быть выполнены до ввода компьютера в домен.
Проверка успешности настройки
Проверить работу динамического обновления можно запустив отдельный компьютер, настроенный на получение сетевого адреса по DHCP.
После включения такого компьютера и получения им адреса этот компьютер станет доступен по имени.
Например, для компьютера с именем client можно попробовать для проверки следующие команды:
Цели
Как обычно, если не указано иное, команды выполняются от имени пользователя root .
Исходные данные
Доменная зона | home.net |
Подсеть | 192.168.0/24 |
Имя основного сервера | dc.home.net |
IP-адрес сервера имен | 192.168.0.1 |
Имя первого хоста | arm01.home.net |
IP-адрес первого хоста | 192.168.0.101 |
Имя N-го хоста | armN.home.net |
IP-адрес N-го хоста | 192.168.0.(100+N) |
Установка сервера
Сервер установлен, но установка сделана не безопасным способом. Нужно выполнить несколько дополнительных действий, описанных подробнее в Debian Wiki — Bind.
Будем запускать сервер в изолированном окружении:
mkdir -p /var/bind9/chroot/ mknod /var/bind9/chroot/dev/null c 1 3 mknod /var/bind9/chroot/dev/random c 1 8 chmod 660 /var/bind9/chroot/dev/ mv /etc/bind /var/bind9/chroot/etc ln -s /var/bind9/chroot/etc/bind /etc/bind chown bind:bind /var/bind9/chroot/etc/bind/rndc.key chmod 775 /var/bind9/chroot/var/ chgrp bind /var/bind9/chroot/var/
Теперь нужно изменить расположение PIDFILE. Для этого в файле /etc/init.d/bind9 нужно переопределить переменную PIDFILE .
PIDFILE=/var/bind9/chroot/var/run/named/named.pid
Чтобы сервер понимал, что его запускают в изолированном окружении, нужно изменить параметры его запуска, внеся небольшие коррективы в файл /etc/default/bind9
OPTIONS="-u bind -t /var/bind9/chroot"
Перенастроим логирование rsyslog
echo "\$AddUnixListenSocket /var/bind9/chroot/dev/log" > /etc/rsyslog.d/bind-chroot.conf
Настройка опций сервера
Безопасность
Основные настройки сервера хранятся в файле /etc/bind/named.conf.options (на самом деле сейчас это всего лишь символическая ссылка, но на суть дела это не влияет). Добавим пару параметров для пущей безопасности в разделе options :
Включение в конфигурацию новой доменной зоны
В файле /etc/bind/named.conf.default-zones добавим указание на файлы прямой и обратной зоны, чтобы сервер мог обслуживать локальную сеть:
. zone "home.net" in < // Локальная сеть type master; file "/etc/bind/db.home.net"; // В этом файле будут адреса прямой зоны >; zone "0.168.192.in-addr.arpa" < // Так описывается обратная зона, т. е. первые три октета // записываются в обратном порядке и добавляется .in-addr.arpa type master; file "/etc/bind/db.0.168.192"; // В этом файле будут адреса обратной зоны >;
Прямая доменная зона
Ниже просто приведу содержимое файла /etc/bind/db.home.net .
$TTL 3h @ IN SOA dc.home.net. administrator.home.net. ( ; Вместо @ будет подставлено автоматически имя зоны из файла /etc/bind/named.conf.default-zones 2017092701 ; Это число нужно менять каждый раз при изменении этого файла ; Очень удобно взять текущее число и добавить ещё пару цифр для указания ревизии 3h ; 1h ; 1w ; 1h ) IN NS dc.home.net. ; Указываем имя основного DNS-сервера, обслуживающего зону ; Наличие пробела или табуляции в начале строки и точки ; после .net обязательно dc IN A 192.168.0.1 ; IP-адрес сервера имен imap IN CNAME dc ; Указываем, что наш DNS-сервер так же отзывается на imap.home.net smtp IN CNAME dc ; и smtp.home.net arm01 IN A 192.168.0.101 arm02 IN A 192.168.0.102 arm03 IN A 192.168.0.103 arm04 IN A 192.168.0.104 arm05 IN A 192.168.0.105 arm06 IN A 192.168.0.106 arm07 IN A 192.168.0.107 arm08 IN A 192.168.0.108 arm09 IN A 192.168.0.109 arm10 IN A 192.168.0.110
Обратная зона
Создадим файл, на который ссылается обратная зона, и заполним его по образцу:
$TTL 3h @ IN SOA dc.home.net. administrator.home.net. ( 2017092701 ; Это число тоже нужно менять 3h ; 1h ; 1w ; 1h ) IN NS dc.home.net. 1 IN PTR dc.home.net. ; Наш сервер 101 IN PTR arm01.home.net. 102 IN PTR arm02.home.net. 103 IN PTR arm03.home.net. 104 IN PTR arm04.home.net. 105 IN PTR arm05.home.net. 106 IN PTR arm06.home.net. 107 IN PTR arm07.home.net. 108 IN PTR arm08.home.net. 109 IN PTR arm09.home.net. 110 IN PTR arm10.home.net.
Запуск сервера и проверка работоспособности
Если всё сделано правильно, точки расставлены и IP-адреса указаны верно, можно попробовать запустить наш сервер:
Если вместо кучи ошибок сервер просто написал, что всё хорошо, можно проверить разрешение имен:
host arm01.home.net host 192.168.0.9
В обоих случаях сервер должен вернуть информацию о том, на что указывает доменное имя или IP-адрес. Если вместо этого он выдает сообщение об ошибке, самое время проверить корректность конфигурационных файлов. Это делается вызовом следующих несложных команд:
named-checkconf /etc/bind/named.conf named-checkzone home.net /etc/bind/db.home.net named-checkzone 192.168.0 /etc/bind/db.0.168.192
Данные утилиты из состава пакета bind9utils укажут на ошибки в конфигурационных файлах.
Клиенты
Существует несколько способов настроить обращение к DNS-серверу на клиентских машинах. По скольку речь идет об операционной системе для социальной группы ‘siloviki’, выбор инструментальных средств невелик — wicd , /etc/network/interfaces и /etc/resolv.conf .
Первый способ отметаем сразу же, поскольку с wicd довольно много проблем. Не буду останавливаться на них подробно, но обычно первое, что приходится делать на свежеустановленной системе — убрать его из автозагрузки:
service wicd stop chkconfig wicd off
Можно указать DNS-сервер в настройках сетевых интерфейсов, однако, в этом случае их нужно прописывать для каждого сетевого интерфейса, а я не люблю повторяться. В связи с этим просто откорректируем файл /etc/resolv.conf на клиентских машинах:
domain home.net search home.net nameserver 192.168.0.1
Работа в ненулевых мандатных режимах
В данном дистрибутиве реализована мандатная модель разграничения доступа, в том числе к сетевым сервисам. Чтобы обеспечить корректную работу демона named в режимах с мандатной меткой, отличной от нулевой, нужно добавить всего одну строчку в файл /etc/parsec/privsock.conf :