В четвертой версии Samba появилась возможность использовать сервер с Linux в качестве контроллера домена. И, хотя это давно перестало быть новостью, я надеюсь, что многим пригодится информация из этой и следующих статей. Итак, сегодня я настрою контроллер домена на Ubuntu Server 16.04 в стандартной конфигурации, а заодно расскажу и покажу, как это сделать.
Установка пакетов.
Одной только Samba нам будет недостаточно. Для аутентификации пользователей понадобится Kerberos, о котором уже говорилось ранее, для синхронизации времени — NTP, для управления правами доступа — ACL (система, многим известная как «виндовые галочки»). Если в сети присутствуют принтеры, которыми нужно управлять удаленно, придется установить и настроить СUPS. Samba 4 содержит встроенный DNS с ограниченной функциональностью, поэтому я буду использовать именно его. Если требуется полноценный DNS-сервер, добавьте в список BIND.
Устанавливаем минимальный набор, необходимый для нашей задачи:
Пакет acl, вероятно, уже установлен у вас в системе, поскольку он входит в стандартный набор Ubuntu 16.04, 16.10 и 17.04. Весьма вероятно, что он никуда не денется и в следующих версиях.
Kerberos попросит указать область по умолчанию. Можно оставить поля пустыми, позже мы все равно получим сгенерированный автоматически конфиг Kerberos.
Настройка Samba и Kerberos.
Для формирования файла /etc/samba/smb.conf воспользуемся утилитой samba-tool. То же самое в случае необходимости можно сделать и вручную, просто вписав соответствующие строки.
Для начала переименуем стандартный smb.conf, чтобы позволить samba-tool создать для нас новый.
Базовый вариант команды для формирования конфига Samba в роли контроллера домена выглядит так:
Сюда могут быть добавлены дополнительные параметры, но о самом необходимом нас и без того спросят. Кроме того, в случае проблем вы можете сделать логи более подробными, добавив ключ -d и число от 0 до 10. Значение по умолчанию — 1.
Теперь вам нужно лишь вводить данные в ответ на соответствующие запросы. В квадратных скобках указывается значение по умолчанию, если оно подходит, достаточно просто нажать Enter.
Realm | полное_имя_домена |
Domain | короткое_имя_домена |
Server Role | оставляем по умолчанию (dc) |
DNS Backend | если не планируется отдельный DNS-сервер, оставьте SAMBA_INTERNAL |
DNS Forwarder IP Adress | 8.8.8.8 ( это DNS от Google), если только в вашей сети не настроен собственный сервер доменных имен. |
После этого нужно будет придумать и дважды ввести пароль администратора домена.
Обратите внимание! Минимальная длина пароля — 7 символов. Если это условие не будет соблюдено или найдутся другие ошибки, придется вводить последнюю команду и все параметры заново.
На скриншоте видно, что подходящий конфигурационный файл Kerberos сгенерировался автоматически.
Вот его содержимое:
Однако этот файл нужен нам в другом месте. Вместо того, чтобы перемещать его, создадим ссылку там, где необходимо. Перед этим переименуем старый файл, чтобы избежать конфликта и не потерять исходный вариант.
Параметр DNS Forwarder IP Adress — это адрес DNS-сервера, к которому будет выполнен запрос в том случае, если локальный, то есть, встроенный в Samba, сервер имен не найдет соответствия. Вы можете вписать сюда none, чтобы предотвратить разрешение доменных имен где-либо еще. При этом доступ к внешним сайтам по имени станет невозможным.
Настройка статического IP.
Динамически назначаемый IP-адрес — не лучшее решение для контроллера домена, он должен иметь статический IP. Для этого нужно знать имя сетевого интерфейса, а выяснить его можно так:
Затем открываем /etc/network/interfaces и приводим его примерно к следующему содержанию:
Перезагружаемся и смотрим, все ли у нас получилось:
Отлично, IP соответствует только что указанному в конфиге:
В качестве DNS я указал статический адрес, который был прописан для этого сервера. При разрешении имен запрос будет направлен к внутреннему DNS Samba, который мы уже настроили. И, если подходящий результат не будет найден, запрос перенаправится на 8.8.8.8, который мы указали в качестве дополнительного DNS.
Давайте проверим, все ли работает как надо:
Если google.com или любой другой сайт успешно пингуется, значит, доступ к сети вы не сломали и внешние имена благополучно разрешаются через удаленный DNS-сервер.
На этом пока все. Мы сделали немало, но впереди еще много интересного.