NetworkDoc.Ru В помощь системному администратору

640 килобайт хватит для всего

Описание страницы блога

  • Home
    Home This is where you can find all the blog posts throughout the site.
  • Categories
    Categories Displays a list of categories from this blog.
  • Tags
    Tags Displays a list of tags that have been used in the blog.
  • Bloggers
    Bloggers Search for your favorite blogger from this site.
  • Team Blogs
    Team Blogs Find your favorite team blogs here.
  • Login
    Login Login form
string(4) "site" -=-=-=-=-

Как настроить репликацию OpenLDAP

Posted by on in Новости
  • Font size: Larger Smaller
  • Hits: 904
  • 0 Comments
  • Print

Материал habrahabr.ru о репликации OpenLDAP будет полезен тем кто задумывается о центролизации в управлении авторизацией пользователями. Автор расматривает пример для сети в филиалами. Для сервисных компаний шаблон использования может быть более продвинут. OpenLDAP Docker, Azure и эту часть нужно еще дописать.

Дано:
1. Организация с филиалами. В главном офисе и в каждом филиале есть сервер LDAP который хранит у себя логины/пароли пользователей.

Задача:
Сделать так, что бы между главныи офисом и филиалами было «единое пространство имен», то есть что бы каждый LDAP сервер «знал» о логинах/паролях всех остальных филиалов и главного офиса.

Решение:
1. Установку Linux, OpenLDAP, настройку OpenVPN (главный офис и филиалы связаны через OpenVPN) описывать не буду. Будем считать что у вас это уже установлено и настроено.
2. У нас есть три сервера. Главный 192.168.1.1, и два филиала 192.168.1.2 и 192.168.1.3 соответственно. Все они связаны друг с другом через OpenVPN.

2. Теперь настройка OpenLDAP. В главном офисе (192.168.1.1) в LDAP заносятся все логины/пароли который нужны.

В файле slapd.conf главного сервера помимо всего прочего необходимо в самом начале добавить строку ServerID 001. Это идентификатор сервера.
Еще нужно раскоментировать строку moduleload syncprov.la. Это необходимо сделать для загрузки модуля синхронизации.

В файлах slapd.conf серверов филиала помимо всего прочего необходимо в самом начале добавить строку ServerID 002 и ServerID 003 соответственно. Это идентификатор сервера и раскоментировать строку moduleload syncprov.la. Это необходимо сделать для загрузки модуля синхронизации.

Далее. В файле slapd-hdb-db01.conf (файл настройки собственно базы), ПОСЛЕ описания типа БД, директории хранения базы и т. д. Добавляем следующие строки:

# это главный сервер. Имеет адрес 192.168.1.1. и такие строки должны быть добавлены для каждого из серверов (то есть в файле главного сервера должны быть добавлены строки для остальных филиалов).

# база для сервера 192.168.1.2
syncrepl rid=000
provider=ldap://192.168.1.2 # адрес сервера филиала
type=refreshAndPersist # тип обновления. После соединения потребителя и поставщика, происходит синхронизация, и по окончании синхронизации связь поддерживается. То есть соединение является постоянным
retry=«60 20 300 +» # повторы соединения. Здесь реконнект каждую минуту, для 20 попыток. После неудачных 20 попыток — новые реконнекты производить каждые 5 минут.
searchbase=«dc=test-1,dc=office,dc=com» # каталог который будет синхронизирован между серверами (в данном случае это весь каталог)
scope=sub # глубина поиска. В данном случае по всей области которая находится ниже относительно searchbase.
bindmethod=simple
binddn=«cn=admin,dc=test-1,dc=office,dc=com» # пользователь от имени которого будет производиться синхронизация. В данном случае это admin и его пароль который описан директивой ниже.
credentials=хххххххххх

# база для сервера 192.168.1.3
syncrepl rid=001
provider=ldap://192.168.1.3 # адрес сервера филиала
type=refreshAndPersist # тип обновления. После соединения потребителя и поставщика, происходит синхронизация, и по окончании синхронизации связь поддерживается. То есть соединение является постоянным
retry=«60 20 300 +» # повторы соединения. Здесь реконнект каждую минуту, для 20 попыток. После неудачных 20 попыток — новые реконнекты производить каждые 5 минут.
searchbase=«dc=test-1,dc=office,dc=com» # каталог который будет синхронизирован между срверами(в данном случае это весь каталог)
scope=sub # глубина поиска. В данном случае по всей области которая находится ниже относительно searchbase.
bindmethod=simple
binddn=«cn=admin,dc=test-1,dc=office,dc=com» # пользователь от имени которого будет производиться синхронизация. В данном случае это admin и его пароль который описан директивой ниже.
credentials=хххххххххх

ПОСЛЕ описания всех серверов добавляем строки 
mirrormode TRUE # запись изменений на главном сервере. Без включения этой директивы вы не сможете сохранить изменения в своем каталоге LDAP.
overlay syncprov
syncprov-checkpoint 100 1
syncprov-sessionlog 100

Для сервера с адресом 192.168.1.2 соответственно строки относящиеся к синхронизации будут выглядеть так:

# база для сервера 192.168.1.1
syncrepl rid=000
provider=ldap://192.168.1.1# адрес главного сервера
type=refreshAndPersist # тип обновления. После соединения потребителя и поставщика, происходит синхронизация, и по окончании синхронизации связь поддерживается. То есть соединение является постоянным
retry=«60 20 300 +» # повторы соединения. Здесь реконнект каждую минуту, для 20 попыток. После неудачных 20 попыток — новые реконнекты производить каждые 5 минут.
searchbase=«dc=test-1,dc=office,dc=com» # каталог который будет синхронизирован между срверами(в данном случае это весь каталог)
scope=sub # глубина поиска. В данном случае по всей области которая находится ниже относительно searchbase.
bindmethod=simple
binddn=«cn=admin,dc=test-1,dc=office,dc=com» # пользователь от имени которого будет производиться синхронизация. В данном случае это admin и его пароль который описан директивой ниже.
credentials=хххххххххх

# база для сервера 192.168.1.3
syncrepl rid=001
provider=ldap://192.168.1.3 # адрес сервера филиала
type=refreshAndPersist # тип обновления. После соединения потребителя и поставщика, происходит синхронизация, и по окончании синхронизации связь поддерживается. То есть соединение является постоянным
retry=«60 20 300 +» # повторы соединения. Здесь реконнект каждую минуту, для 20 попыток. После неудачных 20 попыток — новые реконнекты производить каждые 5 минут.
searchbase=«dc=test-1,dc=office,dc=com» # каталог который будет синхронизирован между срверами(в данном случае это весь каталог)
scope=sub # глубина поиска. В данном случае по всей области которая находится ниже относительно searchbase.
bindmethod=simple
binddn=«cn=admin,dc=test-1,dc=office,dc=com» # пользователь от имени которого будет производиться синхронизация. В данном случае это admin и его пароль который описан директивой ниже.
credentials=хххххххххх

overlay syncprov
syncprov-checkpoint 100 1
syncprov-sessionlog 100

ну и для сервера 192.168.1.3 соответственно:
# база для сервера 192.168.1.1
syncrepl rid=000
provider=ldap://192.168.1.1 # адрес главного сервера
type=refreshAndPersist # тип обновления. После соединения потребителя и поставщика, происходит синхронизация, и по окончании синхронизации связь поддерживается. То есть соединение является постоянным
retry=«60 20 300 +» # повторы соединения. Здесь реконнект каждую минуту, для 20 попыток. После неудачных 20 попыток — новые реконнекты производить каждые 5 минут.
searchbase=«dc=test-1,dc=office,dc=com» # каталог который будет синхронизирован между срверами(в данном случае это весь каталог)
scope=sub # глубина поиска. В данном случае по всей области которая находится ниже относительно searchbase.
bindmethod=simple
binddn=«cn=admin,dc=test-1,dc=office,dc=com» # пользователь от имени которого будет производиться синхронизация. В данном случае это admin и его пароль который описан директивой ниже.
credentials=хххххххххх

# база для сервера 192.168.1.2
syncrepl rid=001
provider=ldap://192.168.1.2 # адрес сервера филиала
type=refreshAndPersist # тип обновления. После соединения потребителя и поставщика, происходит синхронизация, и по окончании синхронизации связь поддерживается. То есть соединение является постоянным
retry=«60 20 300 +» # повторы соединения. Здесь реконнект каждую минуту, для 20 попыток. После неудачных 20 попыток — новые реконнекты производить каждые 5 минут.
searchbase=«dc=test-1,dc=office,dc=com» # каталог который будет синхронизирован между срверами(в данном случае это весь каталог)
scope=sub # глубина поиска. В данном случае по всей области которая находится ниже относительно searchbase.
bindmethod=simple
binddn=«cn=admin,dc=test-1,dc=office,dc=com» # пользователь от имени которого будет производиться синхронизация. В данном случае это admin и его пароль который описан директивой ниже.
credentials=хххххххххх

overlay syncprov
syncprov-checkpoint 100 1
syncprov-sessionlog 100

Вроде бы все. 

P. S. Таким образом если интернет работает исправно, на всех серверах LDAP будет одинаковая база. При создании/изменении пользователя на любом сервере, информация о нем сразу же поменяется на других серверах.
Каждый сервер при такой синхронизации является ГЛАВНЫМ. Подчинение отсутствует.
И если база создана на главном сервере то переносить ее в филиалы не надо. После настройки и после команды service slapd restart на сервере филиала, произойдет синхронизация и база с главного сервера зальется на филиальный и таким образом после синхронизации базы будут одинаковые.Цель, получить единое пространство имен.  

 

Саться http://habrahabr.ru/post/270635/ традиционно много интересного в комментариях на Хабре.

 

 

 

 

 

 

0
Tagged in: openldap

Comments

  • No comments made yet. Be the first to submit a comment

Leave your comment

Guest Saturday, 01 February 2025
Loading ...

Joomla! Debug Console

Session

Profile Information

Memory Usage

Database Queries

Application 0.000 seconds (+0.000); 0.33 MB (+0.329) - afterLoadApplication 0.006 seconds (+0.006); 1.38 MB (+1.048) - afterInitialiseApplication 0.026 seconds (+0.019); 4.12 MB (+2.741) - afterCache