| Информация |
|---|
Данная статья является дополнительным материалом к статье Обнаружение и разрешение конфликтов репликации в доменной службе LDAP |
| Оглавление |
|---|
| Информация | ||
|---|---|---|
| ||
|
Подготовка тестовой среды
- На одном из контроллеров домена выполнить сценарий:
Блок кода kinit admin suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2) dc=$(hostname -f) domain=$(hostname -d) ldapadd -h $dc -D "cn=Directory Manager" -W <<EOF dn: ou=test_repl,ou=$domain,cn=orgunits,cn=accounts,$suffix objectClass: rbta-org-unit ou: test_repl displayName: test_repl EOF ipa user-add testuser --first="Test" --last="User" --random ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF dn: uid=testuser,cn=users,cn=accounts,$suffix changetype: modify replace: rbtadp rbtadp: ou=test_repl,ou=$domain,cn=orgunits,cn=accounts,$suffix - replace: rbtaou rbtaou: test_repl EOF - Проверить работу репликации, выполнив сценарий на другом контроллере домена:
Блок кода kinit admin suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2) dc=$(hostname -f) domain=$(hostname -d) ldapsearch -h $dc -D "cn=Directory Manager" -W -b "ou=test_repl,ou=$domain,cn=orgunits,cn=accounts,$suffix"
...
Создание конфликта типа namingConflict (ADD)
...
- Остановить репликацию, выполнив сценарий на обоих контроллерах домена:
| Блок кода |
|---|
read -p "Введите короткое доменное имя второго контроллера домена (например dc02): " DC2 |
...
domain=$(hostname -d) |
...
dc=$(hostname -f) |
...
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2) |
...
escaped_suffix=$(echo "$suffix" | sed -e 's/=/\\3D/g' -e 's/,/\\2C/g') |
...
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF |
...
dn: cn=meTo${DC2}.${domain},cn=replica,cn=${escaped_suffix},cn=mapping tree,cn=config |
...
changetype: modify |
...
replace: nsDS5ReplicaEnabled |
...
nsDS5ReplicaEnabled: off |
...
EOF |
- Создать конфликтующую запись (на обоих контроллерах домена):
Command ipa user-add conflict_user --first="conflict" --last="User" --random - Включить репликацию:
Блок кода read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2
...
domain=$(hostname -d)
...
dc=$(hostname -f)
...
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
...
escaped_suffix=$(echo "$suffix" | sed -e 's/=/\\3D/g' -e 's/,/\\2C/g')
...
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF
...
dn: cn=meTo${DC2}.${domain},cn=replica,cn=${escaped_suffix},cn=mapping tree,cn=config
...
changetype: modify
...
replace: nsDS5ReplicaEnabled
...
nsDS5ReplicaEnabled: on
...
EOF
- Проверить наличие конфликта:
Блок кода dc=$(hostname -f)
...
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
...
dsconf ldap://$dc -D "cn=Directory Manager" repl-conflict list $suffix
...
Создание конфликта attribute/modification
...
- Остановить репликацию:
| Блок кода |
|---|
read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2 |
...
domain=$(hostname -d) |
...
dc=$(hostname -f) |
...
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2) |
...
escaped_suffix=$(echo "$suffix" | sed -e 's/=/\\3D/g' -e 's/,/\\2C/g') |
...
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF |
...
dn: cn=meTo${DC2}.${domain},cn=replica,cn=${escaped_suffix},cn=mapping tree,cn=config |
...
changetype: modify |
...
replace: nsDS5ReplicaEnabled |
...
nsDS5ReplicaEnabled: off |
...
EOF |
...
- Модифицировать запись на разных контроллерах:
- На одном из контроллеров домена изменить телефон
Блок кода read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2 domain=$(hostname -d)
- На одном из контроллеров домена изменить телефон
...
dc=$(hostname -f)
...
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
...
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF
...
dn: uid=testuser,cn=users,cn=accounts,$suffix
...
changetype: modify
...
replace: telephoneNumber
...
telephoneNumber: +111111111
...
EOF
- На другом контроллере домена изменить адрес электронной почты:
Блок кода read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2 domain=$(hostname -d) dc=$(hostname -f) suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2) ldapmodify -h $5DC2.$domain -D "cn=Directory Manager" -W <<EOF
...
dn: uid=testuser,cn=users,cn=accounts,$suffix
...
changetype: modify
...
replace: mail
...
mail: test@example.com
...
EOF
- Включить репликацию и проверить наличие конфликта:
Блок кода read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2
...
domain=$(hostname -d)
...
dc=$(hostname -f)
...
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
...
escaped_suffix=$(echo "$suffix" | sed -e 's/=/\\3D/g' -e 's/,/\\2C/g')
...
ldapmodify -h $dc -D "cn=Directory Manager" -W <<EOF
...
dn: cn=meTo${DC2}.${domain},cn=replica,cn=${escaped_suffix},cn=mapping tree,cn=config
...
changetype: modify
...
replace: nsDS5ReplicaEnabled
...
nsDS5ReplicaEnabled: on
...
EOF
...
read -p "Введите короткое доменное имя 2 КД (например dc02): " DC2
...
domain=$(hostname -d)
...
dc=$(hostname -f)
...
suffix=$(ldapsearch -Q -LLL -s base|grep 'dn: '| cut -d ' ' -f2)
...
ds-replcheck online -D "cn=Directory Manager" -W -m ldap://$dc:389 -r ldap://$DC2.$domain:389 -b "$suffix" -i memberof,idnssoaserial,entryusn,krblastsuccessfulauth,krblastfailedauth,krbloginfailedcount