LINUX.ORG.RU

Адский полигон

 , ,


10

7

Адский полигон (a.k.a. домашний ынтырпрайз для извращенцев). Из чего «оно» состоит - 4 компьютера:

WORK.LOCAL (линукс на работе) с тремя сконнектнутыми сетями - корпоративной локалкой, приватной сетью для виртуальных машин и приватной сеткой «для личных нужд», в которую подключаются андроиды, ноутбуки и всякая прочая мобильная мелочевка (в третья сетку воткнута точка доступа). Система стоит за страшной коропоративной проксёй (на старой феоре со сквидом). А, виртуалки живут в libvirt/qemu-kvm. Вируталок там чуть-чуть - Win7, 2xWin2003, SL, Fedora-i386. Понятно что не все живут одновременно, но бывает и такое...

VPN.LOCAL (арендованая виртуалка) - её задача обслуживать мои личные нужды где бы я ни находился. Ну, например, она серез VPN соединяет все компьютеры (и ещё два компьютера на разных площадках одного заказчика, чисто чтобы можно было на них прямо делать http, ftp и ssh).

ASUS.HOME.LOCAL (мелкий домашний маршрутизатор) - он поддерживает связь с интернетом (на него заведен линк от провайдера). И ещё на нем подняты два VPN точка-точка, один с WORK.LOCAL, второй с VPN.LOCAL. Ну и ещё один VPN до второго заказчика. Ничего сложного в общем-то.

HOME.LOCAL (домашний компьютер) - вообще просто. Линукс с одним эзернетом воткнутый в LAN-порт маршрутизатора. Хотя, на самом деле не всё так просто - на нем ведь есть ещё внутренняя раутабельная сеть в которой живут виртуалбоксные виртуалки. Почему виртуалбокс? Потому что процессор E5200, и QEMU-KVM на нем не живет, скотина, а без KVM оно издевательски медленное.

BOOK.LOCAL (ноутбук, как наверное понятно) - просто ноутбук. Всё как обычно - линукс, федора, отдельная приватная виртуальная host-only сеть на которой висят виртуалки (опять же libvirt/qemu-kvm, благо процессор позволяет). Вирталок 4 штуки - Fedora-i386, SL-x86_64, SL-i386, Win2003. А, ещё на нем настроен VPN «по требованию», который через интернет цепляется к VPN.LOCAL (это если я через мобильник подключен или через публичный WiFi).

VPN-каналов пачка разной структуры: 3 точка-точка (WORK-ASUS, ASUS-VPN, WORK-VPN) + клиент-сервер на VPN.LOCAL (для нужд «ноутбук уехал далеко и хочет достучаться до дома»)

Ноутбук ездит то на работу, то домой (ну как получится), и соответственно до виртуалок в его host-only сети хрен достучишься. Ну или с них хрен выстучишься на другой конец сети. Поэтому, на WORK, BOOK, ASUS и HOME поднят OSPF - в результате эта четверка всегда друг с другом снюхиваются и сами строят маршруты так как правильней, то есть по наиболее краткому маршруту. Лень - источник прогресса. Три линукса работают DNS-серверами для зон {WORK|VPN|HOME|BOOK}.LOCAL, ну и ещё живет собственно зона LOCAL. Между серверами налажены отношения master-slave. В довершение ко всему, каждый из таких «боевых» линуксов имеет по специальному виртуальному интерфейсу на котором висят адреса с маской /32 (для однозначной идентификации хостов).

Все линуксы (кроме VPN.LOCAL) «оснащены» по типовому сценарию, включающему в себя серверы LDAP, KDC, KADMIN, Samba. Последние три (KDC, KADMIN, Samba) прикуривают от первого (от LDAP). Ну и сама самба также авторизуется через Keberos. Все три сервера LDAP в multi-master репликации «каждый с каждым». Репликация (естественно!) черз ldaps (порт 636). Для целей оного, развернуто жалкое подобие CA с собственным корневым сертификатом. Все виртуальные винды зарегистрированы в Kerberos-домене (дааа, линуксовые скрипты opendirectory и виндовый клиент работают!). Ну и еще SSSD на всех трех больших линуксах (каждый ходит в личный LDAP и личный Kerberos). Смену пароля каждый юзер делает просто командой passwd (которая через SSSD обращается к локальному KADMIN, и тот отправляет всё в LDAP, через который данные и реплицируются).

Ну а на скриншоте - smbclient на book.local (стоящий сейчас дома) обратившийся к work7.local (Win7 в виртуалке на работе), с аутентификацией через Kerberos. Ах да - тикет получен на book.local, и отлично подощел к WORK7 (который проверил его через WORK.LOCAL). На второй половинке- консольки управления LDAP-сервером, зацепленные на два разных сервера.

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

Ах да, из этого стройного ряда выпадает VPN.LOCAL - на нем есть LDAP, но он используется для обслуживания другого домена :-)

>>> Просмотр (1280x1600, 548 Kb)

★★★★★

Проверено: JB ()

невероятно круто. Теперь тебе осталось только написать хауту в нашу Wiki описывающее все вышеперечисленное :)

JB ★★★★★ ()

Респект, уважуха и всё такое...

kitar ★★★★★ ()

Фига ты запарился. Круто.
Респект и уважуха.

tazhate ★★★★★ ()
Ответ на: комментарий от tazhate

Всё гораздо проще.

1. Нужна куча виртуалок - значит, тестируем их

2. Поскольку хосты ездят по разным сетям, а внутри гостевых ОС часто серверные процессы - значит, делаем статические адреса гостям и выносим их в host-only сеть, ведь в bridged networking (особенно на ноуте, где хостовых интерфейсов два: ethernet и wifi.

3. Значит, нужна хитрая маршрутизация. Но поскольку один из хостов постоянно в движении, то статической эту маршрутизацию не сделать. Значит, пора делать динамическую маршрутизацию.

4. Юзеры на двух хостах одни и те же - значит, нужен общий источник данных (LDAP). Если есть LDAP - значит надо прикрутить к нему самбу.

5. Есть винды в виртуалках - как посадить их на тот же LDAP и разрешить сцепляться с той же самбой?? Понятно как - заставить брать юзеров из LDAP. Прикручивать на винды PGINA??? Не пойдет, проблема управления юзерами не решена, да и это всё равно разные юзеры получаются. Значит, вкручиваемвинду в Kerberos и LDAP.

6. Есть LDAP, но ни один из компьютеров не может считаться «сервером» - да и каналы связи достаточно нестабильны, а практически всеми хостами я пользуюсь каждый день. Значит - надо делать несколько LDAP-серверов. Но чтобы они были «все как один» - надо поднимать репликацию. Причем «каждый с каждым» для надежности

7. DNS - когда хостов и гостей в сумме становится больше 10 штук, работать без DNS это уже п...ц. Значит, поднимаем DNS. А поскольку опять таки каждый должен быть независим - поднимаем DNS на каждом. И поскольку надо чтобы всё были синхронны - делаем каждой зоне 1 master + 3 slave.

8. Керберос должен быть один на всех. Но опять таки требование - «каждый должен быть независим» - значит, кладем базу кербероса в shared replicated storage, то бишь LDAP

Трудно не столько сделать, сколько понять что и зачем надо сделать. Ну и потом осилить «как» это сделать.

no-dashi ★★★★★ ()
Ответ на: комментарий от no-dashi

Зачем нуден свой CA: в клиент-серверном режиме OpenVPN используются сертификаты. Значит, надо покупать сертификат - а скорее, делать свой CA чтобы потом не огребать проблем с истечением срока действия ключей. Ну а если поднят свой CA - можно наделать сертификатов и для LDAP-серверов. И поднимать репликацию естественно поверх LDAPs.

no-dashi ★★★★★ ()
Ответ на: комментарий от no-dashi

Круто.

Ну и потом осилить «как» это сделать.

Таки я присоединяюсь к JB - неплохо было бы HOWTO.

tailgunner ★★★★★ ()

с любого компа линукса можно завести или удалить юзера и группу и все другие это видят (и винды тоже!)

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

Komintern ★★★★★ ()
Ответ на: комментарий от Komintern

хм.. я правильно понял, что это означает общую базу юзеров для линукса и винды в лдапе?

Да. Юзеров и групп. За счет фильтров и настраиваемых критериев базы могут быть и сепаратными - одно видит винда, другое видит линукс, третье видит и то и другое.

а настройки по осям отдельными ветками хранятся выходит? или интегрируется все что возможно?

Там на самом деле три ветки: ou=Hosts, ou=People и ou=Groups. Внутри ou=Hosts лежат индивидуальные учетки для хостов вида «uid=Hostname,ou=People,dc=local». Они созданы для выполнения хост-специфичных задач (в частности, задачи NSS) чтобы не использовать «групповые учетные записи» (то бишь не пускать множество компов в LDAP под одним именем).

В настоящий момент настроек хостов как таковых нет, но за счет расширения схемы для каждого хоста можно добавить своих - в том числе ОС-специфичных - атрибутов.

Я планирую заюзать это для реализации конфигурации виндового клиента, когда в настройках достаточно будет просто указать DN и пароль, а всё остальное (имена атрибутов, базы поиска юзеров и групп, настройки файловых и принтерных шар, фильтры поиска и прочее) будет храниться поддереве хоста.

no-dashi ★★★★★ ()

Нихрена не понял, но звучит круто))

fedoseev ()

подробнее

Поздравляю с удачным внедрением! Можно рассказать поподробнее: - какие версии программ используются? - сколько телодвижений нужно что бы добавить машину с линуксом в домен? - сколько телодвижений нужно что бы добавить машину с виндой в домен? - сколько телодвижений нужно что бы добавить машину с freebsd в домен?(если такое возможно) - возможно ли расширение схемы ldap например для zimbra? как на это отреагирует админка 389-DS

shm ()

То есть, у тебя получилось поиметь доступ на рабочюю машину через впн, поднятый через арендованную виртуалку ?

spiro ★★ ()
Ответ на: комментарий от no-dashi

Трудно не столько сделать, сколько понять что и зачем надо сделать.

Если решишься на статью, надеюсь, уделишь «что и зачем» достаточно внимания с примерами.

GAMer ★★★★★ ()

крутота....
А какое ПО Вы используете для удаленного рабочего стола windows?

comp00 ★★★★ ()
Ответ на: комментарий от no-dashi

Я только одного не понял, доступ к LDAP по керберосу же, так? А как тогда сам керберос авторизуется в LDAP, чтобы забрать свою базу, по которой авторизуется?

eagleivg ★★★★★ ()

Как ШГ обсудить, то комментариев за час набегает сколько угодно, а если человек что-то действительно интересное выложил, то кроме «нихрена не понял, но звучит круто» толком ничего и нет :)

Обидно за ресурс и все такое.

Ну а по теме - прикольно получилось, хотя и слишком сложно, на мой вкус. Если когда-то все это поломается (ну, иначе не бывает ;), подымется ли рука сделать так же заново? :)

fagot ★★★★★ ()
Ответ на: комментарий от eagleivg

Я только одного не понял, доступ к LDAP по керберосу же, так?

У LDAP-сервера одновременно может быть включено множество режимов аутентификации - и по логину-паролю, и по сертификату, и по stash-файлу, и через kerberos.

А как тогда сам керберос авторизуется в LDAP, чтобы забрать свою базу, по которой авторизуется?

Через stash-файл:

kdb5_ldap_util -D "uid=kerberos,ou=special users,dc=local" create --containerdn "ou=KDCData,dc=local"
kdb5_ldap_util -D "cn=directory manager" stashsrv -f /var/kerberos/krb5kdc/service.keyfile "uid=kerberos,ou=special users,dc=local"

no-dashi ★★★★★ ()
Ответ на: комментарий от spiro

То есть, у тебя получилось поиметь доступ на рабочюю машину через впн, поднятый через арендованную виртуалку ?

Неа, у меня ТРИ VPN-линка: работа-дом, работа-VDS и дом-VDS. Пакеты ходят кратчайшим путем, то есть напрямуюю

no-dashi ★★★★★ ()
Ответ на: комментарий от fagot

Если когда-то все это поломается (ну, иначе не бывает ;), подымется ли рука сделать так же заново? :)

Это только звучит сложно, а на самом деле всё до неприличия просто. Если есть хотя-бы одна выжившая нода, то новые ноды создаются примерно за 30 минут - в основном чтобы зайти в LJ и пробежаться по странице в поисках инструкций - все пошаговые инструкции инструкции я для себя там выкладываю :-) Кроме того, я за день до выкладывания скриншота переразвернул всё на всех трех нодах за пару часов (пересоздал каталог, перезавел учетки, переехал керберосом в LDAP, перенастроил самбы и SSSD).

no-dashi ★★★★★ ()
Ответ на: подробнее от shm

сколько телодвижений нужно что бы добавить машину с линуксом в домен?

localhost# /opt/bin/od-add-host <hostname> unix localhost# /opt/bin/od-passwd-host <hostname> localhost# ssh root@remotehost remotehost# authconfig --enablesssd --enablesssdauth --update remotehost# scp repo@otherhost:/home/repo/sssd.conf /etc/sssd/sssd.conf remotehost# vi /etc/sssd/sssd.conf <--- Тут мы впишем пароль хоста или путь к сертификатам remotehost# service sssd start ; chkconfig sssd on

Всё

сколько телодвижений нужно что бы добавить машину с виндой в домен?

http://relay.logotek.ru/~viking/opendirectory/, раздел «настройка серверов и рабочих станций Windows».

сколько телодвижений нужно что бы добавить машину с freebsd в домен?

Не намного сложнее чем Linux

возможно ли расширение схемы ldap например для zimbra

Да

как на это отреагирует админка 389-DS

Двояко. Упрощенный гуй просто проигнорирует изменения схемы (ничего не сломав при этом). «Продвинутый» абсолютно нормально реагирует на довнесенные классы и атрибуты.

no-dashi ★★★★★ ()
Ответ на: комментарий от spiro

То есть, у тебя получилось поиметь доступ на рабочюю машину через впн, поднятый через арендованную виртуалку ?

Кстати да - такая схема у меня тоже работает :-)

WORK.LOCAL <-VPN-точка-точка-> Виртуалка <-VPN-клиент-сервер-> Далёкий клиент

no-dashi ★★★★★ ()
Ответ на: комментарий от fagot

Обидно за ресурс и все такое.

Не всё так плохо.

Во-первых, здесь множество разных тем и решений, каждое из которых достаточно изолировано от других:

OpenVPN и динамическая маршрутизация

служба каталога

Kerberos

Репликация LDAP

Не так часто и отнюдь не всем это всё нужно - да и даже хотя бы что-то одно из всего этого списка используют едва ли 5% местного контингента, не говоря уж о том, чтобы использовать это всё сразу - такое нужно 5% из 5%. А я это делал чисто для себя для общего развития... Ну и чтобы между делом можно было лениво так «между делом» сказать «да ничего сложного, я схему в два раза сложнее чисто для прикола в домшней сети собрал...» :-)

no-dashi ★★★★★ ()

Весьма недурно. Много времени затратил, чтобы с нуля воздвигнуть?

glibych ★★ ()
Ответ на: комментарий от glibych

Чтобы «с нуля» - ооочень много. Чтобы сейчас, со всеми знаниями повторить - пару часов :-)

no-dashi ★★★★★ ()
Ответ на: комментарий от sh4r4t4n

А зачем так много венды?

Она же в виртуалках, фактически используется как расходный материал. Ну и от неё никуда не деться - у многих она стоит, так что запилить её в каталог это как бы обязательная задача.

no-dashi ★★★★★ ()
Ответ на: комментарий от no-dashi

запилить её в каталог это как бы обязательная задача.

Не хочу разводить срач, если нужна венда - на здоровье... А с пользователями вообще всё красиво реализовали. Я лишь поинтересовался, зачем её так много? Можно узнать назначение каждой из них?

sh4r4t4n ()
Ответ на: комментарий от no-dashi

У меня есть пробелы в некоторых вопросах. Хотел бы качественно устранить их. Какой список литературы посоветовал бы посмотреть касательно воздвижения таких 'адских полигонов'? Заранее благодарен.

glibych ★★ ()
Ответ на: комментарий от sh4r4t4n

Я лишь поинтересовался, зачем её так много? Можно узнать назначение каждой из них?

Без проблем.

Wok7.local - это собственно винда в которую установлены некоторый сугубо-виндовый софт, который под вайном дохнет или криво работает. Она 64-битная (первый 64-битный десктоп в конторе). В ней же стоит софт для разработки под винду для внутриконторских нужд. То есть это «винда для рабочих нужд». Она подвергается всяким пертурбациям, но она всегда работоспособна и заточена только под мои нужды. Ходит в корпоративную сеть под собственным IP.

Win2003.local - это «спасательная шлюпка». Когда радиус рук сертифицированных сисадминов на работе начинает создавать сингулярность, в ней поднимается сервер терминалов и пользователи с него запускают одну мегакривую копроративную програмку. Это тестовая винда, которая всегда работоспособна и иногда используется чтобы спасти ситуацию. Я бы её удалил, но юзеры просят не убивать её - мало ли что. Ну и кроме того, она ходит в корпоративную сеть через NAT, так что умеет пролазить туда, куда другие не могут (мой хостовый линукс попадает под админские привилегии, со всеми вытекающими).

Test2003.local - это чистый полигон. Он фактически клон предыдущей, но на нем я делаю всякие тесты. Посему никто (а часто даже я) не знает, загрузится ли он и всё ли на нем пойдет так как должно идти.

Винда в виртуалке дома (2 штуки). Одна для моих тестов (вдруг связи с работой нет? Как я играть в свои технарские игры буду?). Вторая для жены - в ней стоит ТруЪ-Небыдло-Сертифицированный-VPN-клиент. Почему в отдельной VM? Потому, что ТАКОЕ дерьмище я даже в свою игрушечную виртуалку не пущу. Эта мразь обладает неуправляемым интерфейсом, как хочет портит файрвол и вообще редкостная гадость. Поэтому на свои полигоны и рабочие систему я её не пускаю.

Винда в виртуалке на ноутбуке - нечто вроде Test2003.local, но на ней делаются «эталонные тесты и скриншоты» для opendirectory. И естественно, она входит в другой домен (не в LOCAL).

no-dashi ★★★★★ ()
Ответ на: комментарий от glibych

Руководство администратора RedHat (необязательно), руководство администратора RedHat Directory server (в нем узнал кучу всего про 389-directory-server, особенно репликацию и т.п.), кучуа man'ов (man openvpn/ldapsearch/ldapadd/ldapmodify/ldapdelete/openssl/x509/ca/req/kadmin/kdb5_ldap_util) и великий гугл. Последнего я терзаю не менее 10 раз в день.

Впрочем, мы договорились с заведующим кафедры где я числись совместителем, что с осени студенты будут развертывать идентичную инфраструктуру шаг за шагом, чтобы понять зачем нужен каждый компонент и что он делает, в режиме «лекция про компонент и про то зачем он нужен» и потом практическое занятие. Тогда наверное и дооформится это всё в методичку.

no-dashi ★★★★★ ()
Ответ на: комментарий от no-dashi

Благодарю. Будем осиливать. В каком институте натаскиваешь студентов, если не секрет?

glibych ★★ ()

неплохо.

ЗЫЖ на терминале имхо таки ШГ...

drBatty ★★ ()
Ответ на: комментарий от glibych

Челябинский государственный университет, кафедра компьютерной безопасности и прикладной алгебры.

no-dashi ★★★★★ ()
Ответ на: комментарий от drBatty

на терминале имхо таки ШГ

На вкус и цвет фломастеры разные. Меня на мониторе ноутбука они устраивают.

no-dashi ★★★★★ ()

Вот это эталонный костылёчек.
Зачёт.
//меняй работу

amorpher ★★★★★ ()
Ответ на: комментарий от no-dashi

>Челябинский государственный университет
И почему я не удивлен? :)

Kadi ()
Ответ на: комментарий от Kadi

И почему я не удивлен?

Потому, что чтобы осилить что-то более-менее серьезное могут суровые челябиснкие мужики, а не нежные пересобиратели генты, конечно же?

no-dashi ★★★★★ ()

Прошу тоже howto.

Отличная практика будет!

amazpyel ★★★ ()

НА всякий случай, домен local зарезервирован за бонжуром.

Можно словить эпичные баги на этой почве...

AVL2 ★★★★★ ()

джедай костылестроения :)

dk- ()
Ответ на: комментарий от AVL2

Уже ловил. Оторвал бонжур и выкинул на..й. Ибо есть нормальный DNS.

no-dashi ★★★★★ ()
Ответ на: комментарий от dk-

джедай костылестроения :)

Ты предлагаешь мне заюзать циски и Windows Server? Если да, то это ещё вопрос, кто из нас ненормальный :-)

no-dashi ★★★★★ ()
Ответ на: комментарий от no-dashi

это был комплимент :)

а вообще (хотя я и не разбираюсь) не лучше ли вендовый парк и держать на венде?

dk- ()
Ответ на: комментарий от no-dashi

А я отошел от практики использования своей зоны local. Использую loc.

AVL2 ★★★★★ ()
Ответ на: комментарий от no-dashi

переразвернул всё на всех трех нодах за пару часов

Снимаю шляпу :) Документация - это конечно святое.

fagot ★★★★★ ()
Ответ на: комментарий от dk-

не лучше ли вендовый парк и держать на венде

Достаточно одной важной не-винды, и жизнь после этого превратится в ад. Не в AD, а в АД! :-)

no-dashi ★★★★★ ()
Ответ на: комментарий от fagot

Документация - самое важное. Вообще, если так разобраться, всё это можно слепить без проблем, проблема потом склонировать или сопровождать. Без доков - застрелиться можно.

no-dashi ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.