FreeIPA
FreeIPA (Free Identity, Policy and Audit) — открытый проект для создания централизованной системы для идентификации пользователей, задания политик доступа и аудита, cистема обеспечения безопасности в виртуализированных средах.
Развитие проекта осуществляется сообществом разработчиков при спонсорской поддержке Red Hat.
389 Directory Server (в прошлом — Fedora Directory Server) является составляющей проекта FreeIPA.
Примечания
- ↑FreeIPA Code Analysis на Ohloh.net
Ссылки
- Официальный сайт
- Презентация FreeIPA на саммите в Бостоне 18-29 июня 2008 года
- Документация Red Hat Enterprise IPA
- Сборка Red Hat Enterprise IPA для CentOS 5
| Red Hat | |
|---|---|
| Главные продукты | RHEL · Directory Server · Certification Program · Global File System · Cluster Suite · JBoss · Fedora · VMM · Anaconda · YUM · up2date · RPM · Satellite |
| Службы | RHN · Mugshot |
| Проекты | Проект Fedora · Dogtail · Spacewalk |
| Устаревшие | Red Hat Linux · Red Hat Database · Fedora Legacy |
| Важные люди | Джим Уайтхерст · Мэттью Шулик · Боб Янг · Марк Эвинг · Майкл Тименн |
| Слияния и поглощения | Слияния и поглощения · Akopia · C2Net · Cygnus Solutions · JBoss · MetaMatrix · Qumranet |
| Разное | Red Hat India · Дистрибутивы семейства RedHat · kickstart |
- Программное обеспечение по алфавиту
- Red Hat
- Свободное программное обеспечение, написанное на Python
- Свободное программное обеспечение, написанное на JavaScript
- Программное обеспечение с лицензией GNU GPL
- Информационная безопасность
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое «FreeIPA» в других словарях:
- FreeIPA — Aktuelle Version 2.1.0 (17. August 2011) Betriebssystem Unix, Linux Lizenz GPL (Freie Software) … Deutsch Wikipedia
- FreeIPA — Infobox Software name = FreeIPA caption = developer = Red Hat latest release version = 1.1 latest release date = 20 June 2008 latest preview version = latest preview date = operating system = Linux / Unix genre = Identity management license = GNU … Wikipedia
- Cygnus Solutions — Red Hat, Inc. Unternehmensform Incorporated Gründung 1993 Unter … Deutsch Wikipedia
- Fedora DS — Der Fedora Directory Server ist eine Weiterentwicklung des Netscape Directory Servers, eines LDAP Servers, den die Firma Red Hat 2004 von AOL kaufte. Davor gehörte die Software der Firma Netscape Communications Corporation. Im Laufe der Zeit… … Deutsch Wikipedia
- Fedora Directory Server — Der Fedora Directory Server ist eine Weiterentwicklung des Netscape Directory Servers, eines LDAP Servers, den die Firma Red Hat 2004 von AOL kaufte. Davor gehörte die Software der Firma Netscape Communications Corporation. Im Laufe der Zeit… … Deutsch Wikipedia
- RedHat — Red Hat, Inc. Unternehmensform Incorporated Gründung 1993 Unte … Deutsch Wikipedia
- Red Hat Directory Server — Der Fedora Directory Server ist eine Weiterentwicklung des Netscape Directory Servers, eines LDAP Servers, den die Firma Red Hat 2004 von AOL kaufte. Davor gehörte die Software der Firma Netscape Communications Corporation. Im Laufe der Zeit… … Deutsch Wikipedia
- Active Directory — (AD) is a directory service created by Microsoft for Windows domain networks. It is included in most Windows Server operating systems. Server computers on which Active Directory is running are called domain controllers. Active Directory serves as … Wikipedia
- Fedora Directory Server — Infobox Software name = Fedora Directory Server caption = developer = Red Hat latest preview version = latest preview date = operating system = Linux / Unix genre = Directory server license = GNU General Public License website =… … Wikipedia
- Commercial open source applications — Open source software is widely used for private and non commercial applications. In addition, many independent software vendors (ISVs), value added resellers (VARs), and hardware vendors (OEMs or ODMs) use open source frameworks, modules, and… … Wikipedia
- Обратная связь: Техподдержка, Реклама на сайте
- Путешествия
Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.
- Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
- Искать во всех словарях
- Искать в переводах
- Искать в ИнтернетеИскать в этой же категории
Linux, Unix, безопасность: open source-проект FreeIPA как Enterprise-решение
Привет, Хабр! Меня зовут Александр Копылов. Я руководитель направления аутентификации bigdata, участник профсообщества Сбера DWH/BigData.
Сегодня предлагаю обсудить интересное решение из сферы инфобеза для высоконагруженных проектов. Огромное их количество, помимо технических возможностей и разнообразных фич, требует правильного подхода к безопасности. Одно из оптимальных решений ― FreeIPA, о нём и поговорим под катом.

В чём вообще проблема?
На данный момент существует очень ограниченное количество полноценных решений для обеспечения полного комплекса задач безопасности, необходимого крупным компаниям. Сложность в том, что большинство таких решений выполняет только часть нужных функций, при этом у них множество ограничений. Ещё одна проблема ― неполная совместимость с различными разработками, актуальными для энтерпрайза. Кроме того, поддержка таких решений зачастую стоит неоправданно дорого.
Наиболее популярным является ряд проприетарных решений, содержащих множество различных компонентов. Их проблема в том, что они «заточены» под собственную экосистему продуктов компании-разработчика. Крайне редко какое-то из таких решений полностью совместимо с продуктами других вендоров.
Мировая практика показывает, что в сфере высоконагруженных сервисов основной операционной системой является Linux/Unix. Интеграция в подобные ОС имеет ряд сложностей из-за отличий архитектуры по сравнению с наиболее популярной проприетарной ОС. Некоторые вещи через неё невозможно настроить, например политики доступа SUDO и HBAC правила. Возможно, разработчик ОС просто не заинтересован в развитии этого направления из-за сложности разработки.
Перед командой Сбера относительно недавно была поставлена задача найти оптимальное решение среди существующих. Это решение должно было соответствовать таким критериям:
- Open-source как гарант отсутствия скрытых элементов.
- Возможность разработки собственного форка.
- Управление Linux ОС и полная интеграция с Linux.
- Компактный, отказоустойчивый и функциональный дистрибутив.
- Обилие различных компонентов безопасности.
- Поддержка всех возможных протоколов.
- Аналог проприетарного решения и поддержка RPC.
- Наличие как интерфейса управления, так и консольной реализации.
А вот и решение
По совокупности показателей выбор пал на FreeIPA ― это open-source-проект, который является полным аналогом RH IDM, выполняет те же самые задачи и может работать на небольшом аппаратном ресурсе с огромным количеством транзакций.
Плюс FreeIPA в том, что с его помощью мы получаем возможность управления политиками, доступами к Linux-серверам, возможность ведения собственного LDAP-каталога учётных записей для аутентификации по протоколу Kerberos (на данный момент он один из самых защищённых), собственный DNS-сервер и удостоверяющий сервер для подписи сертификатов. Также инструмент позволяет создавать защищённые доверенные соединения с доменами наиболее популярных проприетарных ОС для объединения гетерогенных систем в большое множество.
Ниже расскажем о существенном объёме работ по «допиливанию» продукта под нужды такой крупной компании, как Сбер, то есть по обеспечению использования FreeIPA в Enterprise-инфраструктуре со всеми критично важными компонентами: мониторинг, нагрузочное тестирование и вспомогательные средства отслеживания аномальной активности.
FreeIPA ― что за зверь?
FreeIPA или IPA ― open-source-набор компонентов для централизованного управления пользователями, их группами, хостами ― (389 LDAP), аутентификацией ― (MIT KDC) и авторизацией в Linux-системах (SSSD). Плюс это ещё и собственный сервер доменных имён (BIND), а также удостоверяющий центр (DOGTAG).
Он разработан для ОС Linux/Unix и сейчас успешно развивается.
FreeIPA ― upstream, который представляет собой community-версию в основном для тестирования и отладки. Тем не менее он способен работать на проектах без требований High Availability и SLA. Серверная реализация может разворачиваться на CentOS, Debian/Ubuntu и некоторых других Linux-дистрибутивах, на которые портирован продукт.
IPA ― клиент-серверное решение, требующее наличия выделенных Linux-серверов с развёрнутым ПО для работы с субъектами безопасности, которые хранятся в реплицируемом службе каталогов LDAP.
Соответственно, любые потребители на любой операционной системе (которые называются IPA-клиентами) могут беспрепятственно взаимодействовать с серверами, получая данные о пользователях, политиках доступа, а также любую другую необходимую информацию для обеспечения безопасной работы.
Полная поддержка разных функциональных модулей безопасности присутствует только в CentOS. В частности, управление доступами к службам внутри Linux или Host-Based Access Control, подсистема OTP, sudo-привилегии.
FreeIPA можно назвать главным аналогом проприетарного решения RH IDM. Несмотря на наличие технической возможности интеграции с Linux-клиентами, обеспечение политик доступа из-за отличий ОС невозможно и сводится к проприетарному стороннему ПО, представляющему скорее небольшую надстройку, чем родственный Linux интерфейс.
IPA разработана исключительно под Linux-системы и поддерживает полностью все необходимые ОС возможности. В то же время, как было сказано выше, можно подключать и клиентов других систем, но с ограничениями.
Благодаря гибкости, универсальности, функциональности и эксклюзивности для Linux данный инструмент был включён в дистрибутив ОС Astra Linux. Дополнив внутренние технологии переработанным сервером FreeIPA, компании удалось получить надёжное и безопасное решение отечественной операционной системы.
Это говорит о широком спектре внедрения, так как проприетарные решения не всегда подходят для задач бизнеса. Управление такими каталогами требует специально обученных инженеров, контракта с вендором и большой бюрократической работы.
Выбор FreeIPA с точки зрения коммерческой нагрузки является наиболее оптимальным и подходящим большинству энтерпрайз-инфраструктур.
Стоит отметить, что далеко не всегда потребители используют все возможности FreeIPA. Чаще всего работают с такими возможностями: аутентификация пользователей и служб, подпись сертификатов для серверов и авторизация (PAM, LDAP и т. п.)
В связи с развитием отрасли больших данных и сопутствующих технологий неоднократно поднимался вопрос о безопасности работы с Big Data. Сообщество разработчиков, которое подарило миру Hadoop-экосистему, остановилось на наиболее надёжном с точки зрения защиты протоколе ― Kerberos. Таким образом определена поддержка проприетарного решения и FreeIPA.
Почему Kerberos?
- Это действительно очень надёжное, испытанное десятками лет решение, которое просто работает.
- Версии протокола постоянно модернизируются, вносятся новые криптографические алгоритмы и тестируются все кейсы, которые появляются у желающих скомпрометировать хранилища.
- Kerberos ― не самое простое в имплементации решение. Но оно является гибким и оптимизированным под высоконагруженные системы, что при наличии других инструментов делает кластеры практически неуязвимыми.
- Kerberos поддерживается в проприетарных решениях.
- Для обеспечения массовости внедрения для любого языка программирования и в любой open-source- или коммерческий продукт у Kerberos существует общепринятый интерфейс ― GSSAPI.
Помимо Kerberos-аутентификации, IPA-серверы могут управлять жизненным циклом сертификатов: выпускать их автоматизированным и прозрачным для серверов-потребителей способом, но при этом максимально безопасно. Многофункциональность IPA позволила быстро занять нишу популярных BigData-решений.
Но есть и определённый нюанс: из-за особенности работы встроенного модуля аутентификации Java, который первоначально разрабатывался для экосистемы вендорских продуктов и не мог учитывать изменения RFC, он не совместим с MIT Kerberos для большинства задач. А разработчики средних и крупных корпораций в силу незнания и/или непонимания всех стандартов оставляют «коробочный» код, не заменяя на GSSAPI-модуль. К сожалению, это коснулось и ряда крупных продуктов BigData.
К слову, приложения, написанные на языках C++, Python, Go, используют «под капотом» родную библиотеку MIT, поэтому указанная проблема для них неактуальна.
Наша реализация
В Сбере пошли чуть дальше и разработали свой дистрибутив Hadoop, который поддерживает все стандарты и обеспечивает отказоустойчивую и быструю работу с большими данными. Производительность всей системы выросла в 4 раза.
Удалось полноценно интегрировать SDP и с плагинами IPA, многократно упростив процесс разворачивания огромных кластеров для аналитиков и разработчиков.
Изменения полностью легитимные и достаточно подробно описаны. Всё это позволило оптимизировать и сторонние системы, написанные на Java, так как проблема общая.
Кластеры растут с каждым днём, следовательно, появляется вопрос о масштабировании. Возможность горизонтального роста с двусторонней репликацией позволяет беспрепятственно наращивать топологию аналогично самым популярным проприетарным решениям.
Тем не менее в промышленной эксплуатации даже в идеальной среде могут существовать нарушители требований производительности и оптимизации, с которыми необходимо бороться.
Для анализа нарушителей мы разработали отдельный инструмент поиска аномалий и сервис статистики запросов, по которым видна общая карта движения принципалов ― субъектов Kerberos, а также частота их взаимодействия.
Фактически жизнь внутри единого кластера безопасности несёт в себе определённые риски и разногласия между критическими бизнес-задачами и задачами с меньшим приоритетом.
Увеличение количества IPA-серверов в таком случае является неэффективным, так как это попытка устранить симптомы, а не причину. И вовсе не решает проблему влияния со стороны нарушителей.
Использование двух подходов поможет разделить критичность задач:
- Приведение к требованиям всех автоматизированных систем без исключения и предоставление экспертизы.
- Обеспечение бизнес-кластеров собственными керберизованными структурами.
Первый пункт удалось решить Java-методом с полной поддержкой стандарта протокола Kerberos.
Второй пункт базируется на экспериментальных доверительных отношениях между разными областями Kerberos (лесами ― в терминологии Directory Server). Каждый блок по приоритету живёт в собственном ограниченном пространстве, но при этом имеет возможность обмениваться информацией по безопасному каналу с соседями, если данная необходимость присутствует.
Нагрузочное тестирование + мониторинг Prometheus + модель аномалий
Стоит отметить, что в рамках Enterprise-решения FreeIPA и в community не проводилось нагрузочное тестирование кластера в условиях горизонтального и вертикального масштабирования.
В связи с постоянным ростом количества клиентов и использования ими различного прикладного программного обеспечения была поставлена цель по определению пороговых значений по нагрузке на каждый инстанс FreeIPA в кластере.
В первую очередь необходимо было определить, какую нагрузку эмулировать для максимальной эмуляции реальных условий. Как основное приложение для генерации нагрузки был выбран Jmeter. Дополнительно был проведён анализ необходимых действий и служб, которые будут максимально нагружаться. Сложность заключалась в том, что у IPA 3 наиболее активных сервиса, которые находятся под постоянной нагрузкой ― KDC, LDAP и HTTPD. Получить пороговые значения требуется как под точечной нагрузкой на сервис, так и при фоновой инфраструктурной и прикладной нагрузках. Тем самым был создан план нагрузки, где идут постоянные обращения к HTTPD, эмулирующие работу с web-администратора, чтение LDAP со случайным фильтром, эмулирующие запросы на поиск объекта LDAP при аутентификации, и стандартные запросы Kerberos. Важно было также учесть влияние операций модификации и удаления сущностей LDAP на весь кластер.
Впоследствии были определены 3 основных сценария тестирования:
- Операции активного чтения с предварительной аутентификацией.
- Операции активной записи/модификации с предварительной аутентификацией.
- Операции удаления с предварительной аутентификацией.
Для первичного тестирования был выбран кластер FreeIPA в составе 3 инстансов, при вертикальном масштабировании ресурсы были увеличены вдвое, а для горизонтального был собран кластер из 6 инстансов. Самым сложным оказалось обеспечить активный мониторинг FreeIPA так, чтобы он мог забирать данные и агрегировать их быстрее, чем Zabbix.
Проанализировав несколько систем и способов мониторинга, мы выбрали стек Prometheus+Grafana. Здесь для мониторинга системы используется расширенный набор метрик с помощью node exporter и самописный LDAP exporter для мониторинга LDAP и активности прикладного программного обеспечения. Дополнительно были отрисованы 9 дашбордов в графане для проведения дополнительного анализа результатов в процессе выполнения нагрузочного тестирования.
По результатам тестирования было выявлено, что наиболее успешный способ масштабирования кластера FreeIPA ― вертикальный. Дело в том, что из-за расширения количества инстансов в кластере в случае изменений в структуре LDAP репликация проходит крайне долго, и горизонтальное масштабирование становится неэффективным. Дополнительно к этому на каждую структуру и топологию были рассчитаны пороговые значения по запросам аутентификации и взаимодействию с LDAP и HTTPD.
В процессе развития нагрузочного тестирования и систем мониторинга на базе prometheus был доработан экспортёр и дополнительные дашборды мониторинга для оперативного обнаружения дефектов, связанных с повышением нагрузки на серверы IDM. Дашборды и экспортёр после активных тестов во всех средах были выведены в промышленную эксплуатацию и переданы на сопровождение. Такой механизм мониторинга показал себя как более быстрый и детализированный по сравнению с Zabbix.
Дополнительно к средствам мониторинга мы разработали модель аномалий событий FreeIPA для отслеживания тех событий, которые не может отследить ни одна система мониторинга. На основе данных логов Kerberos и Access модель отслеживает все аномальные проявления, вызванные нагрузкой компоненты FreeIPA. Модель читает весь набор логов за период 15 минут и предоставляет ответ в формате json с результатами всех действий внутри логов Kerberos и Access за этот период.
В результатах на основе Kerberos-логов учитывается количество запросов к kdc, с указанием upn/spn. Так, указывается, кто их вызывает и какое влияние они имеют на каждый сервер FreeIPA, какой динамический и общий рост обнаружен.
В результатах на основе Access-логов учитывается весь объём операций за указанный период с LDAP, их тип, количество и влияние на каталог, среднее время выполнения запроса к LDAP, мера аномальности, которая высчитывается по совокупности всех этих данных.
В конечном счёте FreeIPA стала полноценным Enterprise-решением для Сбера с огромным каталогом пользовательских, хостовых и сервисных клиентов. С имеющимися в составе полноценной обвязкой мониторинга и наборами специнструментов обслуживания и сопровождения. Отметим также, что, как и у любого другого продукта, у FreeIPA есть «точки роста», но о них мы расскажем в следующих статьях.
На этом всё. Традиционно ― если у вас есть вопросы, добавляйте их в комментарии, а мы ответим. Если в вашей компании есть собственные кейсы, связанные с описанным в статье решением, расскажите о них, пожалуйста.
- информационная безопасность
- open source
- высокая производительность
- разработка под linux
- bigdata
Что такое FreeIPA

Опубликовано: 20.07.2019
бесплатная реализация сервера хранения данных об объектах безопасности (пользователи, группы, компьютеры и так далее). Доступ к данным осуществляется с помощью протокола LDAP. Разработан FreeIPA компанией Red Hat. В качестве аналогов можно привести в пример Microsoft Active Directory, OpenLDAP, Samba (с версии 4).
По сути, FreeIPA — комплекс компонентов, которые и обеспечивают сервис:
- В качестве реализации LDAP используется 389 Directory Server.
- Для аутентификации пользователей, FreeIPA использует сетевой протокол Kerberos.
- Для интеграции с Active Directory — Samba.
- Сервис dns (для разрешения имен и поиска сервисов) — BIND.
- Управление сертификатами — DogTag.
В качестве операционных систем, на которые может быть установлен сервер FreeIPA, можно использовать Linux (например, Red Hat, CentOS, Debian, Ubuntu). В качестве клиентом также поддерживаются Windows и MacOS. Установка может быть выполнена из репозитория или в качестве контейнера Docker. Из коробки, FreeIPA также поддерживает управление по веб-интерфейсу. Подробную документацию можно найти на официальном сайте.
Подробнее о FreeIPA на Википедии
Встречается в статьях
Инструкции:
Мини-инструкции:
- Установка и настройка LDAP сервера FreeIPA на Linux CentOS
- Настройка общей адресной книги в различных почтовых клиентах
- Настройка аутентификации доменных пользователей в Nextcloud
- Как настроить прозрачную аутентификацию в NGINX через LDAP
- Установка и настройка сервера Freeradius для проверки подлинности через сервер FreeIPA
- Авторизация на WiFi при помощи Freeradius с хранением учетных записей на LDAP-сервере FreeIPA
- Настройка аутентификации пользователей FreeIPA на сервере OpenVPN
- Установка второго сервера FreeIPA с настройкой репликации
- Как использовать встроенный инструмент для резервного копирования и восстановления FreeIPA
- Настройка WiFi-аутентификации через FreeIPA с использованием EAP-TTLS и Freeradius
Система централизованного управления авторизацией пользователей на FreeIPA в Docker
На волне популярности Docker на Хабре, после участия в некоторых дискуссиях в комментариях относительно Docker, и в связи с недавней необходимостью настроить централизованную авторизацию для кластера Linux машин, я решил написать небольшую заметку. Здесь будет показан яркий, на мой взгляд, пример применения Docker’a для небольшой частной задачи.
Вот так, кстати, выглядит FreeIPA WebUI (официальное демо) (кликабельно):

- Иметь возможность создавать/изменять/удалять акаунты пользователей централизовано, а не на каждом отдельном сервере
- Централизованные плавила для sudo
- В последствии мы подключим к этой системе ещё и VPN авторизацию, а потом может и другие внутриофисные сервисы
Настройка сервера
- FreeIPA — открытый проект компании RedHat, который объединяет в себе множество других открытых проектов: 389 Directory Server, MIT Kerberos, NTP, DNS (bind), Dogtag certificate system, SSSD и другие. При этом у данного решения есть Web UI, CLI, XMLRPC, JSONRPC API и Python SDK.
- Dnsmasq — легковесный DNS сервер (позже я объясню зачем мне он нужен был в дополнение к bind, который используется в FreeIPA).
- Docker — open-source платформа, автоматизирующая развертывание приложений в легковесные, переносимые, самодостаточные контейнеры, которые могут без изменений переноситься между серверами. © Используем Docker и не волнуемся о vendor-lock
FreeIPA, в следствие того, что это продукт RedHat, естественно умеет хорошо разворачиваться на CentOS и Fedora и практически никак не разворачивается на других дистрибутивах. (прим. Я не особо задавался целью, поэтому может и есть где-то инструкции, но пакетов в Debian/Ubuntu для FreeIPA сервера нет, зато есть клиентский пакет freeipa-client , но об этом потом.)
Меня этот факт ни разу не расстроил, а, наоборот, воодушевил! Это же идеальная задача для Docker, когда на серверах Debian/Ubuntu/Gentoo/etc. То есть я мог взять базовый образ Fedora, поставить там нужные пакеты, собрать всё в кучу и запустить, НО ещё более приятной новостью для меня стал официальный Docker образ freeipa-server (есть у них и клиент, но меня интересовал вариант с клиентом на Ubuntu, поэтому я запускал ubuntu образ в Docker и таким образом моделировал и быстро начинал с начала для отладки процесса «с нуля»).
Вообще, запуск freeipa-server не вызвал никаких проблем, всё в соответствии с документацией к образу Docker’a:
-
Создаём директорию, которая будет монтироваться в образ для конфигов FreeIPA, которые нужно оставлять после перезапуска (в документации предлагается использовать /var/lib/ipa-data/ , но я не люблю засорять систему, поэтому /opt/ ):
$ sudo mkdir -p /opt/dockers/freeipa-data
$ sudo tee /opt/dockers/freeipa-data/ipa-server-install-options --ds-password=The-directory-server-password --admin-password=The-admin-password
$ docker run \ --name freeipa-server-test \ -it \ --rm \ --hostname freeipa.example.test \ --volume /opt/dockers/freeipa-data:/data \ --publish "443:443" \ --publish "389:389" \ --publish "636:636" \ --publish "88:88" \ --publish "88:88/udp" \ --publish "464:464" \ --publish "464:464/udp" \ adelton/freeipa-server
Так вот, к чему я про DNS? Мне нужен был DNS внутри кластера, но мне категорически не хотелось влезать в bind внутри FreeIPA контейнера. Поэтому я решил воспользоваться проверенным решением — Dnsmasq. На Docker Hub есть минималистичный образ Dnsmasq, основанный на Alpine Linux — 6МБ.
-
Создал директорию для конфигов:
$ sudo mkdir -p /opt/dockers/dnsmasq.d
$ sudo tee /opt/dockers/dnsmasq.d/dnsmasq.conf address=/freeipa.example.test/10.12.0.172 address=/server00.example.test/10.12.0.172 address=/server01.example.test/10.12.0.173 address=/server02.example.test/10.12.0.174
$ docker run \ --name dnsmasq-test \ --rm \ --publish 53:53 \ --publish 53:53/udp \ --cap-add NET_ADMIN \ --volume /opt/dockers/dnsmasq.d:/etc/dnsmasq.d \ --entrypoint /bin/sh \ andyshinn/dnsmasq \ -c '/usr/sbin/dnsmasq -k -h --conf-dir /etc/dnsmasq.d/'
$ nslookup server00.example.test 127.0.0.1
Дальше я связал эти два сервиса в один docker-compose.yml :
docker-compose.yml
dnsmasq: image: andyshinn/dnsmasq ports: - "53:53" - "53:53/udp" cap_add: - NET_ADMIN links: - freeipa volumes: - "/opt/dockers/dnsmasq.d:/etc/dnsmasq.d" entrypoint: ["/bin/sh", "-c", "/usr/sbin/dnsmasq -k -h --conf-dir /etc/dnsmasq.d/ -S /example.test/`getent hosts freeipa | cut -f1 -d' '`"] freeipa: image: adelton/freeipa-server hostname: freeipa.example.test ports: - "443:443" - "389:389" - "636:636" - "88:88" - "88:88/udp" - "464:464" - "464:464/udp" cap_add: - NET_ADMIN volumes: - "/opt/dockers/freeipa-data:/data"
Можно заметить небольшую магию с дополнительной опцией к команде dnsmasq, эта опция будет перенаправлять запросы к *.example.test на bind DNS, уставновленный в freeipa контейнере.
Удобство Docker Compose в данном конкретном случае в том, что его конфиг всё-таки удобнее читать, чем bash-скрипт с docker run . Да и лучше сразу делать хорошо. Сохраняем docker-compose.yml и запускаем:
$ docker-compose up -d
C сервером, наконец, закончили.
Настройка клиентов
Тут у меня есть решение в 3 команды 🙂
-
Нужно исправить /etc/hosts таким образом, чтобы первым в списке было полностью определённое имя домена (FQDN):
127.0.1.1 server00.example.test server00
nameserver 10.12.0.172 search example.test
$ sudo bash -c 'bash -c "cat > /usr/share/pam-configs/mkhomedir
Выводы
Docker может упростить разворачивание сложных проектов в любой инфраструктуре. У Docker есть масса применений и это только одно из них.
В дальнейшем я, возможно, сподвигнусь написать о другом проекте, который интенсивно использует ограничения ресурсов, интегрированные в Docker (CPU, RAM).
- Настройка Linux
- Системное администрирование
- IT-инфраструктура
- Серверное администрирование