Jump to content
Калькуляторы

Проблема с лизами DHCP когда пул состоит из одного адреса

Привет! Если пул состоит из одного адреса, например

 

subnet 192.168.0.0 netmask 255.255.255.0 {

option routers 192.168.0.1;

class "linksys12_49781" {

match if (binary-to-ascii(16,8,":",substring(option agent.remote-id,2,6))="5a:0:3b:3:0:f" and binary-to-ascii(10,8,"",suffix(option agent.circuit-id,1))="12");

}

pool {

range 192.168.0.2;

allow members of "linksys12_49781";

}

............

}

 

Т.е. адреса у нас назначаются с привязкой к порту коммутатора при помощи Option 82.

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

Share this post


Link to post
Share on other sites

Используй поиск, Люк. Тут уже обсуждалось, примерно квартал назад. Ключевые слова: snmp trap, port state down

Share this post


Link to post
Share on other sites

Ничего подобного не нашел... Может, плохо искал? Ткните носом тогда.

Как заставить сервер игнорировать тот факт, что IP уже выдан на определенный MAC и выдать его повторно?

Edited by megabitik

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Похожая проблема, когда приходят установщики, показывают инет на ноуте, перетыкают провод клиенту и тот должен ждать окончание лизы. Говорят, клиенты сильно рады... Особенно когда винды назначают себе адрес 169.х.х.х, коммутатор это видит и кладет порт - волшебство dhcp snooping-а. Решение здесь я не нашел. Пробовал через OMAPI менять статус лизы, нифига, не работает, статус меняешь, а он - no free leases. Решение сабжа очень нужно.

Share this post


Link to post
Share on other sites

может поможет уменьшение срока лизынга?

Share this post


Link to post
Share on other sites
Похожая проблема, когда приходят установщики, показывают инет на ноуте, перетыкают провод клиенту и тот должен ждать окончание лизы. Говорят, клиенты сильно рады... Особенно когда винды назначают себе адрес 169.х.х.х, коммутатор это видит и кладет порт - волшебство dhcp snooping-а. Решение здесь я не нашел. Пробовал через OMAPI менять статус лизы, нифига, не работает, статус меняешь, а он - no free leases. Решение сабжа очень нужно.
Была такая же проблема в сети - строилась на 3526 с dhcp snooping и ip mac port binding.

Также IMB некорректно отрабатывал при смене компа абонентом или ещё каких-либо действий - приходилось ждать окончания lease time.

 

В итоге полностью отказался от IMB - для каждого коммутатора до установке генерируется набор ACL, разрешающий IP/ARP пакеты на порту и определяющий для каждого порта свой IP. DHCP snooping отключил, оставил только dhcp relay. В конечном счёте абонент может как автоматом получить нужные настройки, так и вручную вписать свой IP.

 

Соглашусь, что решение ни разу не изящное, но тем не менее хорошо работает.

 

Share this post


Link to post
Share on other sites
может поможет уменьшение срока лизынга?
Боюсь что dhcp сервер грохнется, накрывшись реквестами. Хотя уменьшал до 5 минут даже, немного когда народу было еще.

Это приводило к частым блокировкам портов наших суперских коммутаторов - кривизна реализации IP Source Guard. Т.к. лес смешанный,

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

Скоро полезу в исходники dhcpd похоже, т.к. надо что-то делать. :-)

Edited by digimaster

Share this post


Link to post
Share on other sites
может поможет уменьшение срока лизынга?
Боюсь что dhcp сервер грохнется, накрывшись реквестами. Хотя уменьшал до 5 минут даже, немного когда народу было еще.

Это приводило к частым блокировкам портов наших суперских коммутаторов - кривизна реализации IP Source Guard. Т.к. лес смешанный,

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

Скоро полезу в исходники dhcpd похоже, т.к. надо что-то делать. :-)

возможно, но не факт.

в крайнем случае можно попелит вланы между разными dhcp серверами

 

Share this post


Link to post
Share on other sites

http://forum.nag.ru/forum/index.php?showtopic=49139

 

Для тех, кому one separate tool per function (aka UNIX-way) религиозно неприятен решения нет. Остальные пользуют патчи к дхцп из соседней ветки и ловят трапы. Либо ловят трапы и юзают фейковые dhcp release.

Share this post


Link to post
Share on other sites
http://forum.nag.ru/forum/index.php?showtopic=49139

 

Для тех, кому one separate tool per function (aka UNIX-way) религиозно неприятен решения нет. Остальные пользуют патчи к дхцп из соседней ветки и ловят трапы. Либо ловят трапы и юзают фейковые dhcp release.

С OMshell не проканало, изменение статуса лизы не к чему не приводит. А вот с фейковым dhcp release нада подумать....

Share this post


Link to post
Share on other sites
С OMshell не проканало, изменение статуса лизы не к чему не приводит.
C OMshell подтверждаю, ничего не проканало. Похоже на то, что для удаления объекта через OMshell нужно сначала его через OMshell создать. Вот что написано в man omshell: "This is done by creating a new local object, setting attributes, associating the local and remote object using open, and then using the remove command."

 

Для тех, кому one separate tool per function (aka UNIX-way) религиозно неприятен решения нет. Остальные пользуют патчи к дхцп из соседней ветки и ловят трапы. Либо ловят трапы и юзают фейковые dhcp release.
Можно поподробнее? Как послать фейковый dhcp release? Можете поделиться конкретной реализацией?

Share this post


Link to post
Share on other sites

Вот что дала, пусть не самая первая, но ссылка в массиве, возвращаемом методом Brain::google()

https://lists.isc.org/pipermail/dhcp-users/2007-August/004405.html

 

Там по этому треду если дальше пройтись - много чего всплывает

Share this post


Link to post
Share on other sites

Вот и мне стало актуально.

У кого нибудь есть готовое решение?

Share this post


Link to post
Share on other sites

У нас есть готовое решение, через dhcp2radius.

Написан модуль к радиусу на perl, в качестве базы - mysql.

Срок лизы вообще не играет роли - если получатель такой-то свитч+порт - выдаем такой-то ip. (либо если нет инфы о свитче и порте, то выдается ip по мак-адресе+порт релея, либо просто по мак-адресу). Если на свитч+порт связке есть несколько ip адресов (то еще и по маку привязываются, чтобы комп идентифицировать кому что выдавать)

Интегрировано с netup.

Есть кабинет автоматической регистрации компьютера/пользователя. Т.е. если в базе не существует связки ip+порт, то автоматом клиенту выдаются специальные настройке,где введя любую web-страничку его выбрасывает на страницу авторизации (при помощи fake-dns), где после ввода логина/пароля по договору, автоматом создается связка свитч+порт+ip. И после перезагрузки компа - вуаля, можно работать.

 

Все работает на 1-м сервере. (dhcp+radius+mysql+apache/php для регистрации абонента в сети)

 

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

Edited by dima-u

Share this post


Link to post
Share on other sites

приводит. А вот

Там патч идет же комплекте, примените его и все привязки удаляются без проблем

Share this post


Link to post
Share on other sites
У нас есть готовое решение, через dhcp2radius.

Написан модуль к радиусу на perl, в качестве базы - mysql.

Срок лизы вообще не играет роли - если получатель такой-то свитч+порт - выдаем такой-то ip. (либо если нет инфы о свитче и порте, то выдается ip по мак-адресе+порт релея, либо просто по мак-адресу). Если на свитч+порт связке есть несколько ip адресов (то еще и по маку привязываются, чтобы комп идентифицировать кому что выдавать)

Интегрировано с netup.

Есть кабинет автоматической регистрации компьютера/пользователя. Т.е. если в базе не существует связки ip+порт, то автоматом клиенту выдаются специальные настройке,где введя любую web-страничку его выбрасывает на страницу авторизации (при помощи fake-dns), где после ввода логина/пароля по договору, автоматом создается связка свитч+порт+ip. И после перезагрузки компа - вуаля, можно работать.

 

Все работает на 1-м сервере. (dhcp+radius+mysql+apache/php для регистрации абонента в сети)

 

ИМХО в общем случае для таких использовать базу в качестве хранилища данных, и перегружать ничего не надо, и интерфейс для менеджмента легко написать.

не не не, ничего такого не надо. Уже написали скрипт создания конфига dhcp, интегрировали с самописным биллингом и т.п.

надо только решение вышеописанной проблемы

Я так понял что через dhcp2radius это можно решить? ткните носом куда нибудь.

Share this post


Link to post
Share on other sites
не не не, ничего такого не надо. Уже написали скрипт создания конфига dhcp, интегрировали с самописным биллингом и т.п.

надо только решение вышеописанной проблемы

Я так понял что через dhcp2radius это можно решить? ткните носом куда нибудь.

при передергивании дхцп очищайте файл с лизами

Share this post


Link to post
Share on other sites

У нас передергивание dhcp только при изменении конфига. А конфиг меняется когда добавляем/меняем юзу свич и порт

Share this post


Link to post
Share on other sites

Знакомые написали под это дело свой дхцп сервер.

буду тоже что-то думать...

 

Share this post


Link to post
Share on other sites

Используйте freeradius, в нём есть функционал DHCP-сервера, для обработки запросов - rlm_perl

У меня работает на ура!

 

 

Edited by tux-tm

Share this post


Link to post
Share on other sites
Используйте freeradius, в нём есть функционал DHCP-сервера, для обработки запросов - rlm_perl

У меня работает на ура!

tux-tm, а на какой платформе и какая версия, если не секрет? У меня на x86_64 freeradius 2.1.9 почему-то rlm_perl хоть убей заводится не хочет ;(

 

правка: таки завел ;)

Edited by Wingman

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now