Pull to refresh

DHCP Сервер с хранением в LDAP

Доброго всем времени суток. Захотелось сделать красивый DHCP сервер, что бы не лезть на Linux сервак и править конфиг dhcp3, кстати все это дело крутится в Hyper-V виртуалке на Ubuntu 12.04, а Windows dhcp сервер нам показался убогим. Так мы решили заняться поднятием dhcp-ldap. Конечно мы столкнулись с кривыми how to и поэтому то и решили сделать этот пост с подробным описанием что, куда и как, а самое главное, что все стоит в главной последовательности.

1. Установим dhcp сервер и dhcp-ldap

apt-get install dhcp3-server dhcp3-server-ldap

Мы устанавливаем обычный dhcp3-server для того, чтобы создались все директории и файлы создались для редактирования.

2. Указываем сетевой адаптер куда будет вещать dhcp:

sudo nano /etc/default/isc-dhcp-server

INTERFACES=«eth0»

* eth0 у меня смотрит в локальную сеть.

3. Устанавливаем openldap-сервер:

apt-get install slapd ldap-utils

При установке укажите свой домен. В противном случае указывайте «mega.local».
Пароль от Ldap сохраняем.

4. Реконфигурируем пакет

dpkg-reconfigure slapd

Отвечаем при установке:

Не выполнять настройку сервера openldap: нет
Хранение баз HDB: да
Удалять базу при вычистке slapd: да
Разрешить использование ldapv2 протокол: да

5. В конфиге LDAP указываем путь к файлу конфигу:

nano /etc/default/slapd

меняем:

SLAPD_CONF=

На:

SLAPD_CONF=/etc/ldap/slapd.conf

6. Указываем в конфиге dhcp-сервера данные для работы с ldap (все остальное ненужно, удаляем):

nano /etc/dhcp/dhcpd.conf

ldap-server «127.0.0.1»;
ldap-port 389;
ldap-username «cn=admin,dc=mega,dc=local»;
ldap-password «пасс при установке LDAP»;
ldap-base-dn «ou=dhcp,dc=mega,dc=local»;
ldap-method static;

7. Генерация хэша пароля (SHA-1) для LDAP

slappasswd –s «пасс при установке LDAP»

получаем строку вида:

{SSHA} 12345667890qwerty

Сохраняем строчку в буфер обмена

8. Создаем конфиг для LDAP демона

touch /etc/ldap/slapd.conf

И редактируем до вида:
«tab» означает что в этом месте нажать клавишу TAB от начала

nano /etc/ldap/slapd.conf

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/dhcp.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
modulepath /usr/lib/ldap
moduleload back_bdb
access to * by * read
access to attrs=userPassword
«tab»by self write
«tab»by anonymous auth
«tab»by * none
database bdb
suffix «dc=mega,dc=local» #имя вашего домена формата 111.222.RU
rootdn «cn=admin,dc=mega,dc=local» #root Дериктория вашего LDAP
rootpw «строчка хеш пароля»
directory /var/lib/ldap
loglevel 256
index objectClass eq
index cn eq

9. Копируем схему DHCP в каталог /etc/ldap/schema

cp /usr/share/doc/isc-dhcp-server-ldap/dhcp.schema.gz /etc/ldap/schema/dhcp.schema.gz

10. Распакуем архив dhcp.schema.gz

gzip -d /etc/ldap/schema/dhcp.schema.gz

Флаг –d указывает на удаление оригинала после распаковки

11. Пробуем Демон Slapd (LDAP)

/etc/init.d/slapd restart

12. создаем файлы и папки содержащие структуру LDAP, для последующего экспорта:

mkdir /etc/ldap/dhcp
touch /etc/ldap/dhcp/base.ldif


И редактируем базу:

nano /etc/ldap/dhcp/base.ldif

dn: dc=mega,dc=local # или имя вашего домена формата dc=222,dc=111,dc=RU
objectClass: dcObject
objectclass: organization
dc: mega #полное имя домена
o: mega
dn: ou=Groups,dc=mega,dc=local
objectClass: organizationalUnit
ou: Groups

Переносим ее в LDAP:

ldapadd -x -D "cn=admin,dc=mega,dc=local" -W -f /etc/ldap/dhcp/base.ldif

13. Создаем контейнер DHCP:

touch /etc/ldap/dhcp/dhcp.ldif

Приводим к виду:

nano /etc/ldap/dhcp /dhcp.ldif

dn: ou=dhcp,dc=mega,dc=local # Имя Домена
ou: dhcp
description: configuration information for DHCP # Описание контейнера ou=dhcp
objectClass: top
objectClass: organizationalUnit

dn: cn=gate,ou=dhcp,dc=mega,dc=local
dhcpServiceDN: cn=conf,cn=gate,ou=dhcp,dc=mega,dc=local
objectClass: top
objectClass: dhcpServer
cn: gate

dn: cn=conf,cn=gate,ou=dhcp,dc=mega,dc=local
dhcpStatements: ddns-update-style none
dhcpStatements: ddns-updates off
dhcpStatements: client-updates off
dhcpStatements: authoritative
dhcpStatements: use-host-decl-names on
dhcpStatements: always-reply-rfc1048 on
dhcpStatements: default-lease-time 86400
dhcpStatements: max-lease-time 129600
objectClass: top
objectClass: dhcpService
objectClass: dhcpOptions
dhcpPrimaryDN: cn=gate,ou=dhcp,dc=mega,dc=local
dhcpOption: domain-name «gate» #имя машины DHCP
dhcpOption: netbios-scope ""
dhcpOption: netbios-node-type 8
dhcpOption: time-offset 10800
dhcpOption: ip-forwarding off
dhcpOption: netbios-name-servers 10.10.10.4
cn: conf

dn: cn=10.10.10.0,cn=conf,cn=gate,ou=dhcp,dc=mega,dc=local #cn=10.10.10.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 24 # Маска подсети 255.255.255.0
dhcpRange: 10.10.10.50 10.10.10.200 #Пулл Адресов от до
dhcpOption: domain-name-servers 10.10.10.4 #Адрес ДНС
dhcpOption: routers 10.10.10.4 #Адрес Шлюза
dhcpOption: ntp-servers 10.10.10.4 #Адрес сервера времени
dhcpOption: broadcast-address 10.10.10.255 # Широковещательный адрес
dhcpOption: default-ip-ttl 64
dhcpOption: default-tcp-ttl 64
cn: 10.10.10.0

и импортируем в LDAP

ldapadd -x -D "cn=admin,dc=mega,dc=local" -W -f /etc/ldap/dhcp/dhcp.ldif

14.Создадим контейнер с привязкой к MAC адресу:

nano /etc/ldap/dhcp/dhcphw.ldif

dn: cn=AV,cn=10.10.10.0,cn=conf,ou=dhcp,dc=mega,dc=local #cn=AV(имя контейнера)
dhcpHWAddress: ethernet 6C:F0:49:6E:59:A1 #mac адрес
dhcpStatements: fixed-address 10.10.10.9 #Адрес который будет привязан к mac
objectClass: top
objectClass: dhcpHost
objectClass: dhcpOptions
cn: AV

Импортируем в LDAP

ldapadd -x -D "cn=admin,dc=mega,dc=local" -W -f /etc/ldap/dhcp/dhcphw.ldif

Перезапускаем dhcp-сервер:
/etc/init.d/dhcp3-server restart

ВНИМАНИЕ КОСТЫЛИ:
Когда вся эта система поднялась, столкнулся с проблемой что записи обновляются только после перезапуска DHCP для решения этой проблемы есть скрипт dhcp2ldap который запускается как демон но я не стал его юзать, а сделал свой простенький вариант.
Мое решение:
Создаем скрипт перезагрузки dhcp каждые 15 секунд

nano /etc/ldap/dhcp/script_restart_dhcp

/etc/init.d/isc-dhcp-server restart
Wait 15
/etc/init.d/isc-dhcp-server restart
Wait 15
/etc/init.d/isc-dhcp-server restart
Wait 15
Exit

Даем права на исполнение:

chmod +x /etc/ldap/dhcp/script_restart_dhcp

И ставим его в cron:

nano /etc/crontab

*/1 * * * * root /etc/ldap/dhcp/script_dhcp

Теперь каждые 15 секунд данные из LDAP будут обновляться.
Для администрирования советую использовать LDAP Admin для редактирования записей.

www.ldapadmin.org

Подключается все следующим образом:

image
image
image
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.