Ivan_83 Posted July 13, 2017 Author Posted July 13, 2017 если не ошибаюсь, версия данного DHCP сервера, по прежнему работает через релей, нет ли в планах у автора доработки с возможностью работы без релея. Или я что то упустил? Именно. Нет, в планах нет. Если что и будет в планах такой же только с перламутровым IPv6. Но мне нынче нет времени и мотивации это делать, фидбэка от вас (провайдеров) не дождёшься пока сам к вам не устроишься. Напомню, изначально оно писалось для провайдера, там этих релеев ну просто завались с коммутаторов, а заодно они нужную опцию 82 добавляют. Есть и всякие софтовые релеи, которые можно ставить куда то на писюки, если есть такая потребность, а перловый демон вроде и на 127.0.0.1 может повисеть без последствий. Да, такая конструкция выглядит немного громоздко когда это офисный роутер в сетке на 2-50 компов, но зато и кода сильно меньше и он легче понимается: вот тут пакет пришёл из этого сокета, мы его прожевали, посовещались вон там с базой и вот тут отправим ответ. Никакой магии. А FreeRadius dhcp научился в броадкаст? Он же тоже только через релей умел. Кажется он на фре его не умел. Но это по моим данным года 2011 :) Отнюдь.. Он давно уж умел. Только были какие то нарекания о сырости, и не полноценности решения. Но это было давно оч. Сам такой метод не использовал. Alex/AT GrandPr1de Кто пользовался FreeRadius в роли dhcp? Поделитесь впечатлениями, реализацией. Там весь прикол что с базой он работает прилично опять же если всё пускать через перловый код, родной анленг только на самый примитив способен. Я же начинал это всё именно с фрирадиуса, и у меня был в общем рабочий конфиг который делал тоже самое, потом я посмотрел на него и выкинул лишнее - фрирадиус. Вставить ник Quote
bomberman Posted July 14, 2017 Posted July 14, 2017 Если что и будет в планах такой же только с перламутровым IPv6. Вот это совсем не плохо было бы. Там весь прикол что с базой он работает прилично опять же если всё пускать через перловый код Вот и я о том же, когда говорил о нареканиях и сырости решения. Но наивно пологал, что времени от первого релиза прошло достаточно, чтоб избавиться от perl-овых костылей. Хатя... Как я понял, разрабочики реализовали DHCP там по стольку, по скольку, в классическом варианте, дабы показать возможность работы этого протокола совместно с RADIUS, и реализовали возможность отдавать опции атрибутами. Большего никто и не обещал. Как где то слышал "FreeRADIUS - это фреймворк для протокола RADIUS." (с) Отсюда и костыли, для нужной логики работы. Да и провайдеру мало такая реализация подойдёт в том виде, в котором оно реализовано там, особенно, когда нужно ещё из пакета получить нужные опции, кроме 82й (на сколько я помню это было возможно там), как например номер vlan-а опцией. Для этих целей accel вполне, как по мне. Вставить ник Quote
pppoetest Posted July 14, 2017 Posted July 14, 2017 Но мне нынче нет времени и мотивации это делать, фидбэка от вас (провайдеров) не дождёшься пока сам к вам не устроишься. Ну какой фидбек, если оно из серии: сконфигурил БД, перепилил логику выдачи адресов под себя, и оно работает годами безперебойно? ПЫСЫ. Реквестирую ипв6, донат опять же за свой счёт, начальство стало ещё более жадным ((( Вставить ник Quote
Alex/AT Posted July 16, 2017 Posted July 16, 2017 А FreeRadius dhcp научился в броадкаст? Он же тоже только через релей умел. Мммм... может очень давно не умел. Я на нём на броадкаст респондил ещё 3 с лишним года назад :) Насчёт поделиться опытом - сейчас покопаюсь, может найду старые скрипты и конфиги - в связи со сменой места деятельности стали не актуальны и свалены в архив. С тех пор FR, правда, сильно доработали - возможно, можно сделать гораздо проще. Нашел пачку конфигов и скриптов из продакшна, сейчас уберу всякое конфиденциальное и выложу. Вставить ник Quote
Alex/AT Posted July 16, 2017 Posted July 16, 2017 Вот, собрал то, что работало как раз под броадкаст (там и релеи были, но отличия только в части конфига "сайта" FR). Собственно разбором и форматированием протокола занимается FreeRADIUS, PHP'шник же реализует исключительно логику выдачи/регистрации адресов и параметров. Для меня основным подвигом в сторону FR+PHP стало то, что благодаря FR не нужно самостоятельно реализовывать собственно DHCP, только логику отдачи адресов. Возможно сейчас и логику можно на унланге в FR реализовать или на хранимках в (whatever)SQL, не знаю, давно не требовалось. Нужно учесть, что это всё конкретное старьё, работало на FR 2.2.0, сейчас могут быть отличия. Конфиг FR очевиден, схема БД должна быть очевидна, пример заполнения тоже. Если что-то не совсем очевидно или нужно понять, как написать своё - смотрите собственно в PHP'шник (который как раз логика выдачи адресов/параметров в связке с БД). Что по части разбора FR протокола и сбора его обратно из вывода скрипта - никаких особых проблем не возникало, всякие октетстринги типа opt82 в скрипт уходят в hex-виде, кастомные атрибуты вполне себе добавляются через словарь. fr-dhcp-example.zip Вставить ник Quote
GrandPr1de Posted July 16, 2017 Posted July 16, 2017 Благодарю, обязательно погляжу как там сделано. Вставить ник Quote
kopMuk Posted November 15, 2019 Posted November 15, 2019 Привет, подскажите, с какой целью сделано: if (index($_[0], DHO_NTP_SERVERS()) != -1) { $_[1]->addOptionValue(DHO_NTP_SERVERS(), "$NTP"); } Т.е. получается когда опция уже есть, тогда она подставляется из переменной, а не наоборот. Так было задумано? Вставить ник Quote
pppoetest Posted November 15, 2019 Posted November 15, 2019 Если в запросе есть опция ntp, в ответ вставляется данный параметр. Вставить ник Quote
Ivan_83 Posted November 16, 2019 Author Posted November 16, 2019 13 часов назад, kopMuk сказал: Т.е. получается когда опция уже есть, тогда она подставляется из переменной, а не наоборот. Так было задумано? Клиент передаёт список опций который он хочет и может. Насколько помню в RFC было сказано не пихать в ответ то, про что не спрашивали. Вставить ник Quote
hiller Posted January 19, 2021 Posted January 19, 2021 похоже пришло время добавить сюда поддержку IPv6 ) Вставить ник Quote
Ivan_83 Posted January 20, 2021 Author Posted January 20, 2021 Что, уже?) Именно DHCPv6 или rtadv/rtsol тоже? PS: проще написать на базе этого отдельный демон чем расширять этот, всё равно в протокольной части ничего общего. Вставить ник Quote
andryas Posted January 20, 2021 Posted January 20, 2021 6 hours ago, Ivan_83 said: PS: проще написать на базе этого отдельный демон чем расширять этот, всё равно в протокольной части ничего общего. + Вставить ник Quote
Ivan_83 Posted March 18, 2022 Author Posted March 18, 2022 Появилась тут мысль написать универсальное решение для IPv4, IPv6. Демон на Си будет ловить DHCP, перепаковывать их в JSON и слать на вебсервер по HTTP, ответы в JSON перепаковывать обратно в DHCP и отправлять на релей агента откуда пришёл запрос. Всю логику выдачи адресов и работы с базой любой желающий в такой архитектуре сможет накодить на любом языке сам, плюс есть все возможности по балансировке и прочему. Может быть будут простейшие фильтры скопипащены из перловой реализации чтобы демон мог отбрасывать мусорные запросы. Что скажите? Вставить ник Quote
alibek Posted March 18, 2022 Posted March 18, 2022 JSON, да еще поверх HTTP. Разве что в исследовательских или экспериментальных целях. Вставить ник Quote
Ivan_83 Posted March 18, 2022 Author Posted March 18, 2022 В 18.03.2022 в 16:45, alibek сказал: JSON, да еще поверх HTTP. А что такого? На сях такое генерится и парсится очень быстро. Питонисты JSON любят, у остальных языков думаю тоже нет проблем с парсингом, формат очень распространённый. И оно человеко читаемое. XML думаю уже мёртв. Возможность откусить HTTP и слать только JSON я легко организую. Отработать 1-5к/сек запросов по веб нынче дело житейское, и по прошлому опыту оно упиралось в базу данных. Плюс возможность лёгкой горизонтальной балансировки - запросы можно раскидать на кластер любого размера. На самом деле технически чуть проще было бы реализовать DHCP<->RADIUS прокси - они оба stateless, но там есть фрирадиус с одной стороны, с другой нужно будет мутить какой то нечеловеческий конфиг чтобы опции дхцп мапить в радиус аттрибуты, и теряются все преимущества HTTP который нынче так легко масштабировать и обрабатывать. Вставить ник Quote
alibek Posted March 18, 2022 Posted March 18, 2022 В 18.03.2022 в 19:57, Ivan_83 сказал: А что такого? Оверхед дикий. А если читать ответы, то сериализации мало, надо еще и парсить JSON. Вставить ник Quote
Cramac Posted March 18, 2022 Posted March 18, 2022 ничего не понятно, но оч интересно.... П.С. Пока не ясно плюсы/минусы и для чего, кроме как добавить в6. Вставить ник Quote
alibek Posted March 18, 2022 Posted March 18, 2022 Простота кастомизации и тюнинга. Да и масштабировать проще. Вставить ник Quote
Ivan_83 Posted March 18, 2022 Author Posted March 18, 2022 В 18.03.2022 в 17:01, alibek сказал: Оверхед дикий. А если читать ответы, то сериализации мало, надо еще и парсить JSON. Он не был диким даже во времена когда это было сделано не перле. Реализация на перле получилась такой в следствии эволюции или напилинга. Эта реализация изначально так сдизайнена. Парсинг мелких JSON ну вообще не проблема, наверное даже на ARM, и это не большая плата за гибкость. В 18.03.2022 в 17:53, Cramac сказал: П.С. Пока не ясно плюсы/минусы и для чего, кроме как добавить в6. Потому что нужно расти дальше, привязка к перлу тоже ограничивающий фактор, да и сама архитектура, когда нужно править код проекта под каждую инсталляцию не очень. Вставить ник Quote
Cramac Posted March 18, 2022 Posted March 18, 2022 @Ivan_83 это да, зато работает ведь :) стоит и не жужжит по сей день Вставить ник Quote
pppoetest Posted March 19, 2022 Posted March 19, 2022 В 18.03.2022 в 22:41, Ivan_83 сказал: Появилась тут мысль написать универсальное решение для IPv4, IPv6. Для многих, думаю, будет актуально, хотя хттп+джысон мне кажется сомнительным. Я же переехал на аксель, решение на перле верой и правдой проработало как часы почти 10 лет. В 19.03.2022 в 00:08, Ivan_83 сказал: привязка к перлу тоже ограничивающий фактор, да и сама архитектура, когда нужно править код проекта под каждую инсталляцию не очень. Не согласен, именно тем что на перле и возможность безграничной кастомизации меня и привлекли. Вставить ник Quote
Ivan_83 Posted March 19, 2022 Author Posted March 19, 2022 В 19.03.2022 в 02:42, pppoetest сказал: Не согласен, именно тем что на перле и возможность безграничной кастомизации меня и привлекли. Так и тут такая же фигня по желанию легко мутится: поднимаем либо сокет и ловим json либо там же с хттп, либо где то в контексте спавнера по fcgi ловим опять json, отрабатываем, генерим json и выплёвываем в сокет. В общем то unix way в полный рост, ну или как теперь модно - микросервисная архитектура. Вставить ник Quote
hiller Posted March 20, 2022 Posted March 20, 2022 Оставить бы поддержку my/pg sql, было бы хорошо. Чтобы не включать в цепочку еще и web-сервер с интерпретатором какого-нибудь языка. Из насущного: стоит и работает, но есть проблемки с форматами Option 82 - поддерживается только bin. Вставить ник Quote
edo Posted March 20, 2022 Posted March 20, 2022 ну оверхед будет приличный конечно, ну и фиг с ним. согласен, что не те нагрузки, чтобы на него смотреть. пара вопросов: 1. почему си? ИМХО сегодня писать на си — уже моветон. есть golang, если хочется чего-то нежирного — есть rust и более экзотические языки вроде vlang; 2. предполагается ответ в том же соединении, что и запрос? с учётом скриптовости языка, запроса к БД, возможного разнесения по разным хостам и т.п. задержки могут быть относительно большими. стоит ли держать соединение открытым в ожидании ответа? В 18.03.2022 в 19:57, Ivan_83 сказал: Плюс возможность лёгкой горизонтальной балансировки - запросы можно раскидать на кластер любого размера. с учётом того, что кластер должен работать с общей БД, вряд ли в нём особый смысл есть. Вставить ник Quote
sol Posted March 20, 2022 Posted March 20, 2022 В 20.03.2022 в 13:58, edo сказал: с учётом того, что кластер должен работать с общей БД, Репликация же... Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.